WOPO/DECSTR.COB

43 lines
1.4 KiB
COBOL

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.