Encrypt.Mod 830 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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('in.txt');
  24. IF F # NIL THEN
  25. Files.Set(r, F, 0);
  26. F2 := Files.New('out.txt');
  27. IF F2 # NIL THEN
  28. Files.Set(w, F2, 0);
  29. Parse(r, w);
  30. Files.Register(F2)
  31. ELSE
  32. Out.String('Не могу создать файл "out.txt".'); Out.Ln
  33. END
  34. ELSE
  35. Out.String('Не могу открыть файл "in.txt".'); Out.Ln
  36. END
  37. END Do;
  38. BEGIN
  39. Do
  40. END Encrypt.