RosettaCodeData/Task/Caesar-cipher/IS-BASIC/caesar-cipher.basic

42 lines
1.0 KiB
Plaintext

100 PROGRAM "CaesarCi.bas"
110 STRING M$*254
120 INPUT PROMPT "String: ":M$
130 DO
140 INPUT PROMPT "Key (1-25): ":KEY
150 LOOP UNTIL KEY>0 AND KEY<26
160 PRINT "Original message: ";M$
170 CALL ENCRYPT(M$,KEY)
180 PRINT "Encrypted message: ";M$
190 CALL DECRYPT(M$,KEY)
200 PRINT "Decrypted message: ";M$
210 DEF ENCRYPT(REF M$,KEY)
220 STRING T$*254
230 LET T$=""
240 FOR I=1 TO LEN(M$)
250 SELECT CASE M$(I)
260 CASE "A" TO "Z"
270 LET T$=T$&CHR$(65+MOD(ORD(M$(I))-65+KEY,26))
280 CASE "a" TO "z"
290 LET T$=T$&CHR$(97+MOD(ORD(M$(I))-97+KEY,26))
300 CASE ELSE
310 LET T$=T$&M$(I)
320 END SELECT
330 NEXT
340 LET M$=T$
350 END DEF
360 DEF DECRYPT(REF M$,KEY)
370 STRING T$*254
380 LET T$=""
390 FOR I=1 TO LEN(M$)
400 SELECT CASE M$(I)
410 CASE "A" TO "Z"
420 LET T$=T$&CHR$(65+MOD(ORD(M$(I))-39-KEY,26))
430 CASE "a" TO "z"
440 LET T$=T$&CHR$(97+MOD(ORD(M$(I))-71-KEY,26))
450 CASE ELSE
460 LET T$=T$&M$(I)
470 END SELECT
480 NEXT
490 LET M$=T$
500 END DEF