Anonymous user
Vigenère cipher: Difference between revisions
→{{header|PL/I}}
Line 1,344:
=={{header|PL/I}}==
<lang PL/I>
cypher: procedure options (main); /* 21
declare t(26) character (26);
declare (i, j, k, L) fixed binary;
declare (original, encoded, coder) character (1000) varying initial ('');
declare cypher character (30) varying;
declare (co, ct, cc) character (1);
/* Set up cypher table. */
t(1) =
do i = 2 to 26;
t(i) = substr(t(i-1), 2, 25) || substr(t(i-1), 1, 1);
end;
cypher =
original = 'Meet me on Tuesday evening at seven.';
put edit ('Message=', original) (a);
original = uppercase(original);
coder = '';▼
do i = 1 to length(original) by length(cypher);▼
coder = coder || cypher;▼
/* Create the cypher text, same length as original, or longer. */
/* Remove non-alphabetic characters. */▼
j = 0;▼
/* Encode the original message, character by character. */
do i = 1 to length(original);
co = substr(original, i, 1);
j = index(t(1), co);
if j = 0 then iterate; /* Ignore non-alphabetic character */
k = index(t(1), ct);
encoded = encoded || substr(t(j), k, 1);
|