Encrypt.Mod 1008 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. MODULE Encrypt;
  2. IMPORT Files, Out, SYSTEM;
  3. VAR key: INTEGER;
  4. PROCEDURE BITS(n: INTEGER): SET;
  5. RETURN SYSTEM.VAL(SET, n) END BITS;
  6. PROCEDURE Parse(VAR r, w: Files.Rider);
  7. VAR b: BYTE;
  8. k: SET;
  9. BEGIN
  10. k := BITS(key);
  11. Files.Read(r, b);
  12. WHILE ~r.eof DO
  13. b := ORD(BITS(b) / k);
  14. Files.Write(w, b);
  15. Files.Read(r, b)
  16. END
  17. END Parse;
  18. PROCEDURE Do;
  19. VAR F, F2: Files.File;
  20. r, w: Files.Rider;
  21. BEGIN
  22. key := 12;
  23. F := Files.Old('Data/in.txt');
  24. IF F # NIL THEN
  25. Files.Set(r, F, 0);
  26. F2 := Files.New('Data/out.txt');
  27. IF F2 # NIL THEN
  28. Files.Set(w, F2, 0);
  29. Parse(r, w);
  30. Files.Register(F2);
  31. Out.String('Создан файл "Data/out.txt" с зашифрованным'); Out.Ln;
  32. Out.String('содержимым файла "Data/in.txt".')
  33. ELSE
  34. Out.String('Не могу создать файл "Data/out.txt".')
  35. END
  36. ELSE
  37. Out.String('Не могу открыть файл "Data/in.txt".')
  38. END;
  39. Out.Ln
  40. END Do;
  41. BEGIN
  42. Do
  43. END Encrypt.