40 lines
1.3 KiB
COBOL
40 lines
1.3 KiB
COBOL
|
IDENTIFICATION DIVISION.
|
||
|
PROGRAM-ID. "RE-ESCAPE".
|
||
|
|
||
|
DATA DIVISION.
|
||
|
WORKING-STORAGE SECTION.
|
||
|
01 ESCAPED PIC X(999).
|
||
|
01 PTRS.
|
||
|
03 IN-PTR PIC 999.
|
||
|
03 OUT-PTR PIC 999.
|
||
|
01 CURRENT-CHAR PIC X.
|
||
|
88 ESCAPE-CHAR VALUE "$".
|
||
|
01 LOOP-STATE PIC 99.
|
||
|
88 DONE VALUE 99.
|
||
|
|
||
|
LINKAGE SECTION.
|
||
|
01 UNESCAPED PIC X(999).
|
||
|
01 COUNTER PIC 9.
|
||
|
|
||
|
PROCEDURE DIVISION USING UNESCAPED, COUNTER.
|
||
|
MOVE 0 TO LOOP-STATE, COUNTER.
|
||
|
MOVE 1 TO IN-PTR, OUT-PTR.
|
||
|
MOVE SPACES TO ESCAPED.
|
||
|
PERFORM MAYBE-ESCAPE-CHAR UNTIL DONE.
|
||
|
MOVE ESCAPED TO UNESCAPED.
|
||
|
EXIT PROGRAM.
|
||
|
|
||
|
MAYBE-ESCAPE-CHAR.
|
||
|
IF IN-PTR IS LESS THAN 999 AND
|
||
|
OUT-PTR IS LESS THAN 999 THEN
|
||
|
UNSTRING UNESCAPED INTO CURRENT-CHAR WITH POINTER IN-PTR
|
||
|
IF ESCAPE-CHAR THEN
|
||
|
IF OUT-PTR IS LESS THAN 998 THEN
|
||
|
ADD 1 TO COUNTER
|
||
|
STRING "$$" INTO ESCAPED WITH POINTER OUT-PTR
|
||
|
ELSE MOVE 99 TO LOOP-STATE
|
||
|
ELSE
|
||
|
STRING CURRENT-CHAR INTO ESCAPED WITH POINTER OUT-PTR
|
||
|
ELSE
|
||
|
MOVE 99 TO LOOP-STATE.
|