diff --git a/DECASCII.COB b/DECASCII.COB new file mode 100644 index 0000000..d347579 --- /dev/null +++ b/DECASCII.COB @@ -0,0 +1,325 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. "DECODE-ASCII". + + DATA DIVISION. + LINKAGE SECTION. + 01 CONVERSION. + 03 CHAR-CODE PIC 999. + * CONTROL CHARACTERS. + 88 ASCII-NUL VALUE 0. + 88 ASCII-SOH VALUE 1. + 88 ASCII-STX VALUE 2. + 88 ASCII-ETX VALUE 3. + 88 ASCII-EOT VALUE 4. + 88 ASCII-ENQ VALUE 5. + 88 ASCII-ACK VALUE 6. + 88 ASCII-BEL VALUE 7. + 88 ASCII-BS VALUE 8. + 88 ASCII-TAB VALUE 9. + 88 ASCII-LF VALUE 10. + 88 ASCII-VT VALUE 11. + 88 ASCII-FF VALUE 12. + 88 ASCII-CR VALUE 13. + 88 ASCII-SO VALUE 14. + 88 ASCII-SI VALUE 15. + 88 ASCII-DLE VALUE 16. + 88 ASCII-DC1 VALUE 17. + 88 ASCII-DC2 VALUE 18. + 88 ASCII-DC3 VALUE 19. + 88 ASCII-DC4 VALUE 20. + 88 ASCII-NAK VALUE 21. + 88 ASCII-SYN VALUE 22. + 88 ASCII-ETB VALUE 23. + 88 ASCII-CAN VALUE 24. + 88 ASCII-EM VALUE 25. + 88 ASCII-SUB VALUE 26. + 88 ASCII-ESC VALUE 27. + 88 ASCII-FS VALUE 28. + 88 ASCII-GS VALUE 29. + 88 ASCII-RS VALUE 30. + 88 ASCII-US VALUE 31. + * PRINTABLE CHARACTERS. + 88 ASCII-SPC VALUE 32. + 88 ASCII-EXC VALUE 33. + 88 ASCII-DBQT VALUE 34. + 88 ASCII-PND VALUE 35. + 88 ASCII-DLR VALUE 36. + 88 ASCII-PCNT VALUE 37. + 88 ASCII-AMP VALUE 38. + 88 ASCII-SGQT VALUE 39. + 88 ASCII-LPRN VALUE 40. + 88 ASCII-RPRN VALUE 41. + 88 ASCII-STAR VALUE 42. + 88 ASCII-PLUS VALUE 43. + 88 ASCII-COMA VALUE 44. + 88 ASCII-DASH VALUE 45. + 88 ASCII-DOT VALUE 46. + 88 ASCII-SLSH VALUE 47. + 88 ASCII-NUM0 VALUE 48. + 88 ASCII-NUM1 VALUE 49. + 88 ASCII-NUM2 VALUE 50. + 88 ASCII-NUM3 VALUE 51. + 88 ASCII-NUM4 VALUE 52. + 88 ASCII-NUM5 VALUE 53. + 88 ASCII-NUM6 VALUE 54. + 88 ASCII-NUM7 VALUE 55. + 88 ASCII-NUM8 VALUE 56. + 88 ASCII-NUM9 VALUE 57. + 88 ASCII-COLN VALUE 58. + 88 ASCII-SCLN VALUE 59. + 88 ASCII-LESS VALUE 60. + 88 ASCII-EQL VALUE 61. + 88 ASCII-GRTR VALUE 62. + 88 ASCII-QUES VALUE 63. + 88 ASCII-AT VALUE 64. + 88 ASCII-LETA VALUES 65, 97. + 88 ASCII-LETB VALUES 66, 98. + 88 ASCII-LETC VALUES 67, 99. + 88 ASCII-LETD VALUES 68, 100. + 88 ASCII-LETE VALUES 69, 101. + 88 ASCII-LETF VALUES 70, 102. + 88 ASCII-LETG VALUES 71, 103. + 88 ASCII-LETH VALUES 72, 104. + 88 ASCII-LETI VALUES 73, 105. + 88 ASCII-LETJ VALUES 74, 106. + 88 ASCII-LETK VALUES 75, 107. + 88 ASCII-LETL VALUES 76, 108. + 88 ASCII-LETM VALUES 77, 109. + 88 ASCII-LETN VALUES 78, 110. + 88 ASCII-LETO VALUES 79, 111. + 88 ASCII-LETP VALUES 80, 112. + 88 ASCII-LETQ VALUES 81, 113. + 88 ASCII-LETR VALUES 82, 114. + 88 ASCII-LETS VALUES 83, 115. + 88 ASCII-LETT VALUES 84, 116. + 88 ASCII-LETU VALUES 85, 117. + 88 ASCII-LETV VALUES 86, 118. + 88 ASCII-LETW VALUES 87, 119. + 88 ASCII-LETX VALUES 88, 120. + 88 ASCII-LETY VALUES 89, 121. + 88 ASCII-LETZ VALUES 90, 122. + 88 ASCII-LSQB VALUE 91. + 88 ASCII-BKSL VALUE 92. + 88 ASCII-RSQB VALUE 93. + 88 ASCII-CRT VALUE 94. + 88 ASCII-UNDS VALUE 95. + 88 ASCII-BKTK VALUE 96. + 88 ASCII-LCRB VALUE 123. + 88 ASCII-PIPE VALUE 124. + 88 ASCII-RCRB VALUE 125. + 88 ASCII-TLDE VALUE 126. + * LONELY CONTROL CHAR + 88 ASCII-DEL VALUE 127. + 03 COBOL-STRING PIC X(6). + 03 FIRST-CHAR REDEFINES COBOL-STRING PIC X. + + PROCEDURE DIVISION USING CONVERSION. + IF ASCII-NUL THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-SOH THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-STX THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-ETX THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-EOT THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-ENQ THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-ACK THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-BEL THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-BS THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-TAB THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-LF THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-VT THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-FF THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-CR THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-SO THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-SI THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-DLE THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-DC1 THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-DC2 THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-DC3 THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-DC4 THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-NAK THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-SYN THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-ETB THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-CAN THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-EM THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-SUB THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-ESC THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-FS THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-GS THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-RS THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-US THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-SPC THEN + MOVE SPACE TO COBOL-STRING + ELSE IF ASCII-EXC THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-DBQT THEN + MOVE SPACES TO COBOL-STRING + MOVE QUOTE TO FIRST-CHAR + ELSE IF ASCII-PND THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-DLR THEN + MOVE "<$>" TO COBOL-STRING + ELSE IF ASCII-PCNT THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-AMP THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-SGQT THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-LPRN THEN + MOVE "(" TO COBOL-STRING + ELSE IF ASCII-RPRN THEN + MOVE ")" TO COBOL-STRING + ELSE IF ASCII-STAR THEN + MOVE "*" TO COBOL-STRING + ELSE IF ASCII-PLUS THEN + MOVE "+" TO COBOL-STRING + ELSE IF ASCII-COMA THEN + MOVE "," TO COBOL-STRING + ELSE IF ASCII-DASH THEN + MOVE "-" TO COBOL-STRING + ELSE IF ASCII-DOT THEN + MOVE "." TO COBOL-STRING + ELSE IF ASCII-SLSH THEN + MOVE "/" TO COBOL-STRING + ELSE IF ASCII-NUM0 THEN + MOVE "0" TO COBOL-STRING + ELSE IF ASCII-NUM1 THEN + MOVE "1" TO COBOL-STRING + ELSE IF ASCII-NUM2 THEN + MOVE "2" TO COBOL-STRING + ELSE IF ASCII-NUM3 THEN + MOVE "3" TO COBOL-STRING + ELSE IF ASCII-NUM4 THEN + MOVE "4" TO COBOL-STRING + ELSE IF ASCII-NUM5 THEN + MOVE "5" TO COBOL-STRING + ELSE IF ASCII-NUM6 THEN + MOVE "6" TO COBOL-STRING + ELSE IF ASCII-NUM7 THEN + MOVE "7" TO COBOL-STRING + ELSE IF ASCII-NUM8 THEN + MOVE "8" TO COBOL-STRING + ELSE IF ASCII-NUM9 THEN + MOVE "9" TO COBOL-STRING + ELSE IF ASCII-NUM0 THEN + MOVE "0" TO COBOL-STRING + ELSE IF ASCII-COLN THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-SCLN THEN + MOVE ";" TO COBOL-STRING + ELSE IF ASCII-LESS THEN + MOVE "<" TO COBOL-STRING + ELSE IF ASCII-EQL THEN + MOVE "=" TO COBOL-STRING + ELSE IF ASCII-GRTR THEN + MOVE ">" TO COBOL-STRING + ELSE IF ASCII-QUES THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-AT THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-LETA THEN + MOVE "A" TO COBOL-STRING + ELSE IF ASCII-LETB THEN + MOVE "B" TO COBOL-STRING + ELSE IF ASCII-LETC THEN + MOVE "C" TO COBOL-STRING + ELSE IF ASCII-LETD THEN + MOVE "D" TO COBOL-STRING + ELSE IF ASCII-LETE THEN + MOVE "E" TO COBOL-STRING + ELSE IF ASCII-LETF THEN + MOVE "F" TO COBOL-STRING + ELSE IF ASCII-LETG THEN + MOVE "G" TO COBOL-STRING + ELSE IF ASCII-LETH THEN + MOVE "H" TO COBOL-STRING + ELSE IF ASCII-LETI THEN + MOVE "I" TO COBOL-STRING + ELSE IF ASCII-LETJ THEN + MOVE "J" TO COBOL-STRING + ELSE IF ASCII-LETK THEN + MOVE "K" TO COBOL-STRING + ELSE IF ASCII-LETL THEN + MOVE "L" TO COBOL-STRING + ELSE IF ASCII-LETM THEN + MOVE "M" TO COBOL-STRING + ELSE IF ASCII-LETN THEN + MOVE "N" TO COBOL-STRING + ELSE IF ASCII-LETO THEN + MOVE "O" TO COBOL-STRING + ELSE IF ASCII-LETP THEN + MOVE "P" TO COBOL-STRING + ELSE IF ASCII-LETQ THEN + MOVE "Q" TO COBOL-STRING + ELSE IF ASCII-LETR THEN + MOVE "R" TO COBOL-STRING + ELSE IF ASCII-LETS THEN + MOVE "S" TO COBOL-STRING + ELSE IF ASCII-LETT THEN + MOVE "T" TO COBOL-STRING + ELSE IF ASCII-LETU THEN + MOVE "U" TO COBOL-STRING + ELSE IF ASCII-LETV THEN + MOVE "V" TO COBOL-STRING + ELSE IF ASCII-LETW THEN + MOVE "W" TO COBOL-STRING + ELSE IF ASCII-LETX THEN + MOVE "X" TO COBOL-STRING + ELSE IF ASCII-LETY THEN + MOVE "Y" TO COBOL-STRING + ELSE IF ASCII-LETZ THEN + MOVE "Z" TO COBOL-STRING + ELSE IF ASCII-LSQB THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-BKSL THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-RSQB THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-CRT THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-UNDS THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-BKTK THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-LCRB THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-PIPE THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-RCRB THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-TLDE THEN + MOVE "" TO COBOL-STRING + ELSE IF ASCII-DEL THEN + MOVE "" TO COBOL-STRING + ELSE STRING "<", CHAR-CODE, ">" INTO COBOL-STRING. + EXIT PROGRAM.