Caesar cipher: Difference between revisions
Content added Content deleted
imported>Acediast (→{{header|COBOL}}: Syntax highlighting and slight optimization.) |
|||
Line 1,911: | Line 1,911: | ||
</pre> |
</pre> |
||
{{works with| |
{{works with|COBOL 2002}} |
||
<syntaxhighlight lang=" |
<syntaxhighlight lang="cobolfree"> >>SOURCE FORMAT IS FREE |
||
IDENTIFICATION DIVISION. |
|||
PROGRAM-ID. caesar-cipher. |
PROGRAM-ID. caesar-cipher. |
||
Line 1,919: | Line 1,920: | ||
REPOSITORY. |
REPOSITORY. |
||
FUNCTION encrypt |
FUNCTION encrypt |
||
FUNCTION decrypt |
FUNCTION decrypt. |
||
. |
|||
DATA DIVISION. |
DATA DIVISION. |
||
WORKING-STORAGE SECTION. |
WORKING-STORAGE SECTION. |
||
01 plaintext PIC X(50). |
01 plaintext PIC X(50). |
||
01 offset |
01 offset USAGE BINARY-CHAR. |
||
01 encrypted-str PIC X(50). |
01 encrypted-str PIC X(50). |
||
PROCEDURE DIVISION. |
PROCEDURE DIVISION. |
||
DISPLAY "Enter a message to encrypt: " NO ADVANCING |
DISPLAY "Enter a message to encrypt: " WITH NO ADVANCING |
||
ACCEPT plaintext |
ACCEPT plaintext |
||
DISPLAY "Enter the amount to shift by: " NO ADVANCING |
DISPLAY "Enter the amount to shift by: " WITH NO ADVANCING |
||
ACCEPT offset |
ACCEPT offset |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
. |
|||
END PROGRAM caesar-cipher. |
END PROGRAM caesar-cipher. |
||
IDENTIFICATION DIVISION. |
|||
FUNCTION-ID. encrypt. |
FUNCTION-ID. encrypt. |
||
ENVIRONMENT DIVISION. |
|||
CONFIGURATION SECTION. |
|||
REPOSITORY. |
|||
FUNCTION ALL INTRINSIC. |
|||
DATA DIVISION. |
DATA DIVISION. |
||
LOCAL-STORAGE SECTION. |
LOCAL-STORAGE SECTION. |
||
01 i |
01 i USAGE INDEX. |
||
⚫ | |||
⚫ | |||
LINKAGE SECTION. |
LINKAGE SECTION. |
||
01 offset |
01 offset USAGE BINARY-CHAR. |
||
01 str PIC X(50). |
01 str PIC X(50). |
||
01 encrypted-str PIC X(50). |
01 encrypted-str PIC X(50). |
||
PROCEDURE DIVISION USING offset, str RETURNING encrypted-str. |
PROCEDURE DIVISION USING offset, str RETURNING encrypted-str. |
||
PERFORM VARYING i FROM 1 BY 1 UNTIL i > LENGTH(str) |
|||
⚫ | |||
IF str(i:1) IS NOT ALPHABETIC OR str(i:1) = SPACE |
|||
MOVE str(i:1) TO encrypted-str(i:1) |
|||
EXIT PERFORM CYCLE |
EXIT PERFORM CYCLE |
||
END-IF |
END-IF |
||
IF str(i:1) IS ALPHABETIC-UPPER |
|||
MOVE ORD("A") TO a |
|||
MOVE FUNCTION ORD("A") TO a |
|||
ELSE |
ELSE |
||
MOVE |
MOVE ORD("a") TO a |
||
END-IF |
END-IF |
||
⚫ | |||
⚫ | |||
⚫ | |||
EXIT FUNCTION. |
|||
MOVE FUNCTION CHAR(FUNCTION MOD(FUNCTION ORD(encrypted-str (i:1)) |
|||
⚫ | |||
TO encrypted-str (i:1) |
|||
⚫ | |||
. |
|||
END FUNCTION encrypt. |
END FUNCTION encrypt. |
||
IDENTIFICATION DIVISION. |
|||
FUNCTION-ID. decrypt. |
FUNCTION-ID. decrypt. |
||
Line 1,981: | Line 1,980: | ||
CONFIGURATION SECTION. |
CONFIGURATION SECTION. |
||
REPOSITORY. |
REPOSITORY. |
||
FUNCTION encrypt |
FUNCTION encrypt. |
||
. |
|||
DATA DIVISION. |
DATA DIVISION. |
||
LOCAL-STORAGE SECTION. |
LOCAL-STORAGE SECTION. |
||
01 decrypt-offset |
01 decrypt-offset USAGE BINARY-CHAR. |
||
LINKAGE SECTION. |
LINKAGE SECTION. |
||
01 offset |
01 offset USAGE BINARY-CHAR. |
||
01 str PIC X(50). |
01 str PIC X(50). |
||
01 decrypted-str PIC X(50). |
01 decrypted-str PIC X(50). |
||
PROCEDURE DIVISION USING offset, str RETURNING decrypted-str. |
PROCEDURE DIVISION USING offset, str RETURNING decrypted-str. |
||
SUBTRACT |
SUBTRACT offset FROM 26 GIVING decrypt-offset |
||
MOVE |
MOVE encrypt(decrypt-offset, str) TO decrypted-str |
||
. |
EXIT FUNCTION. |
||
END FUNCTION decrypt.</syntaxhighlight> |
END FUNCTION decrypt.</syntaxhighlight> |
||
Line 2,006: | Line 2,004: | ||
Decrypted: The quick brown fox jumps over the lazy dog. |
Decrypted: The quick brown fox jumps over the lazy dog. |
||
</pre> |
</pre> |
||
=={{header|CoffeeScript}}== |
=={{header|CoffeeScript}}== |
||
<syntaxhighlight lang="coffeescript">cipher = (msg, rot) -> |
<syntaxhighlight lang="coffeescript">cipher = (msg, rot) -> |