RosettaCodeData/Task/Rot-13/PowerBASIC/rot-13.basic

41 lines
597 B
Plaintext

#COMPILE EXE
#COMPILER PBWIN 9.05
#DIM ALL
FUNCTION ROT13(BYVAL a AS STRING) AS STRING
LOCAL p AS BYTE PTR
LOCAL n AS BYTE, e AS BYTE
LOCAL res AS STRING
res = a
p = STRPTR(res)
n = @p
DO WHILE n
SELECT CASE n
CASE 65 TO 90
e = 90
n += 13
CASE 97 TO 122
e = 122
n += 13
CASE ELSE
e = 255
END SELECT
IF n > e THEN
n -= 26
END IF
@p = n
INCR p
n = @p
LOOP
FUNCTION = res
END FUNCTION
'testing:
FUNCTION PBMAIN () AS LONG
#DEBUG PRINT ROT13("abc")
#DEBUG PRINT ROT13("nop")
END FUNCTION