IDENTIFICATION DIVISION. PROGRAM-ID. "DECODE-STRING". DATA DIVISION. WORKING-STORAGE SECTION. 01 STATE. 03 LOOP-STATE PIC 99. 88 DONE VALUE 99. 03 STRING-POINTER PIC 999 USAGE COMPUTATIONAL. 03 TABLE-INDEX USAGE INDEX. 01 ASCII-CHARACTER. 03 CHAR-CODE PIC 999. 03 COBOL-STRING PIC X(6). LINKAGE SECTION. 01 ASCII-STRING. 03 MSG-BODY PIC X(999). 03 ASCII-TABLE. 05 ASCII-CELL PIC 999 OCCURS 999 TIMES. PROCEDURE DIVISION USING ASCII-STRING. MOVE 0 TO LOOP-STATE. MOVE 1 TO STRING-POINTER. MOVE SPACES TO MSG-BODY. PERFORM DECODE-CHARACTER VARYING TABLE-INDEX FROM 1, BY 1, UNTIL DONE. EXIT PROGRAM. DECODE-CHARACTER. MOVE ASCII-CELL(TABLE-INDEX) TO CHAR-CODE IF STRING-POINTER IS GREATER THAN OR EQUAL TO 999 THEN MOVE 99 TO LOOP-STATE ELSE IF NOT DONE THEN CALL "DECODE-ASCII" USING ASCII-CHARACTER. IF COBOL-STRING IS NOT EQUAL TO SPACES THEN STRING COBOL-STRING DELIMITED BY SPACES INTO MSG-BODY WITH POINTER STRING-POINTER ELSE ADD 1 TO STRING-POINTER.