{ Author: Douglas Jones Purpose: Convert between normal text and rotate-13 Caesar cypher text } PROGRAM mp2(input,output); VAR ch: char; PROCEDURE rot13(VAR c: char); FUNCTION isupper(ch: char): boolean; BEGIN isupper := (ch >= 'A') and (ch <= 'Z'); END; { isupper } FUNCTION islower(ch: char): boolean; BEGIN islower := (ch >= 'a') and (ch <= 'z'); END; { isupper } BEGIN { rot13 } IF isupper(c) THEN c := chr( (ord(c) - ord('A') + 13) mod 26 + ord('A') ) ELSE IF islower(c) THEN c := chr( (ord(c) - ord('a') + 13) mod 26 + ord('a') ) ELSE c := c; END; { rot13 } BEGIN { mp2 } WHILE not(eof) DO BEGIN WHILE not(eoln) DO BEGIN read(ch); rot13(ch); write(ch); END; readln; writeln; END; END. { mp2 }