RosettaCodeData/Task/Rot-13/Modula-2/rot-13.mod2

40 lines
768 B
Plaintext

MODULE Rot13;
FROM STextIO IMPORT
ReadString, WriteString, WriteLn;
FROM Strings IMPORT
Length;
TYPE
MyString = ARRAY [0..80] OF CHAR;
VAR
S, T : MyString;
PROCEDURE Rot13(S : ARRAY OF CHAR; VAR T : ARRAY OF CHAR);
VAR
I, J : CARDINAL;
BEGIN
FOR I := 0 TO Length(S) - 1
DO
J := ORD(S[I]);
IF ((J >= 65) AND (J <= 90)) THEN
J := (J - 52) % 26 + 65;
IF ((J >= 97) AND (J <= 122)) THEN
J := (J - 84) % 26 + 97;
T[I] := CHR(J);
END;
END Rot13;
BEGIN
WHILE NOT Eof
DO
ReadString(S);
SkipLine;
WriteLn;
Rot13(S, T);
WriteString(T);
WriteLn;
END;
END Rot13.