Make $SHOW-ESCAPES non-destructive to the source register.
This commit is contained in:
parent
ef8b996b8d
commit
b947bd6805
60
REESCAPE.COB
60
REESCAPE.COB
|
@ -3,35 +3,75 @@
|
|||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 ESCAPED PIC X(999).
|
||||
01 PTRS.
|
||||
03 IN-PTR PIC 999.
|
||||
03 OUT-PTR PIC 999.
|
||||
03 TEMP-PTR PIC 999.
|
||||
01 CURRENT-CHAR PIC X.
|
||||
88 ESCAPE-CHAR VALUE "$".
|
||||
01 ESCAPE-TEMP PIC XXX.
|
||||
88 STRING-TERMINATED VALUE "NUL".
|
||||
01 LOOP-STATE PIC 99.
|
||||
88 DONE VALUE 99.
|
||||
|
||||
LINKAGE SECTION.
|
||||
01 BUFFER PIC X(999).
|
||||
01 INPUT-BUFFER PIC X(999).
|
||||
01 OUTPUT-BUFFER PIC X(999).
|
||||
|
||||
PROCEDURE DIVISION USING BUFFER.
|
||||
PROCEDURE DIVISION USING INPUT-BUFFER, OUTPUT-BUFFER.
|
||||
MOVE 0 TO LOOP-STATE.
|
||||
MOVE 1 TO IN-PTR, OUT-PTR.
|
||||
MOVE SPACES TO ESCAPED.
|
||||
PERFORM MAYBE-ESCAPE-CHAR UNTIL DONE.
|
||||
MOVE ESCAPED TO BUFFER.
|
||||
* IF THE STRING WAS UNTERMINATED, THE POINTER WILL HAVE WRAPPED
|
||||
IF OUT-PTR IS GREATER THAN 0 THEN
|
||||
MOVE 0 TO LOOP-STATE
|
||||
PERFORM BLANK-REST UNTIL DONE.
|
||||
EXIT PROGRAM.
|
||||
|
||||
MAYBE-ESCAPE-CHAR.
|
||||
IF IN-PTR IS LESS THAN 999 AND
|
||||
OUT-PTR IS LESS THAN 999 THEN
|
||||
UNSTRING BUFFER INTO CURRENT-CHAR WITH POINTER IN-PTR
|
||||
UNSTRING INPUT-BUFFER
|
||||
INTO CURRENT-CHAR
|
||||
WITH POINTER IN-PTR
|
||||
IF ESCAPE-CHAR THEN
|
||||
IF OUT-PTR IS LESS THAN 998 THEN
|
||||
STRING "$$" INTO ESCAPED WITH POINTER OUT-PTR
|
||||
ELSE MOVE 99 TO LOOP-STATE
|
||||
MOVE IN-PTR TO TEMP-PTR
|
||||
UNSTRING INPUT-BUFFER DELIMITED BY "$"
|
||||
INTO ESCAPE-TEMP
|
||||
WITH POINTER TEMP-PTR
|
||||
IF STRING-TERMINATED THEN
|
||||
MOVE 99 TO LOOP-STATE
|
||||
IF OUT-PTR IS LESS THAN 995 THEN
|
||||
STRING "$NUL$"
|
||||
INTO OUTPUT-BUFFER
|
||||
WITH POINTER OUT-PTR
|
||||
ELSE
|
||||
NEXT SENTENCE
|
||||
ELSE
|
||||
STRING "$$"
|
||||
INTO OUTPUT-BUFFER
|
||||
WITH POINTER OUT-PTR
|
||||
ELSE
|
||||
STRING CURRENT-CHAR INTO ESCAPED WITH POINTER OUT-PTR
|
||||
STRING CURRENT-CHAR
|
||||
INTO OUTPUT-BUFFER
|
||||
WITH POINTER OUT-PTR
|
||||
ELSE
|
||||
MOVE 99 TO LOOP-STATE
|
||||
UNSTRING INPUT-BUFFER
|
||||
INTO CURRENT-CHAR
|
||||
WITH POINTER IN-PTR
|
||||
IF ESCAPE-CHAR THEN
|
||||
STRING SPACE
|
||||
INTO OUTPUT-BUFFER
|
||||
WITH POINTER OUT-PTR
|
||||
ELSE
|
||||
STRING CURRENT-CHAR
|
||||
INTO OUTPUT-BUFFER
|
||||
WITH POINTER OUT-PTR.
|
||||
|
||||
BLANK-REST.
|
||||
IF OUT-PTR IS EQUAL TO 999 THEN
|
||||
MOVE 99 TO LOOP-STATE.
|
||||
STRING SPACE
|
||||
INTO OUTPUT-BUFFER
|
||||
WITH POINTER OUT-PTR.
|
||||
|
|
9
WOPO.COB
9
WOPO.COB
|
@ -414,7 +414,14 @@
|
|||
|
||||
MAYBE-SHOW-ESCAPES.
|
||||
IF SHOULD-SHOW-ESCAPES THEN
|
||||
CALL "RE-ESCAPE" USING R(SRC).
|
||||
IF SRC IS EQUAL TO 1 THEN
|
||||
CALL "RE-ESCAPE" USING R(SRC), R(2)
|
||||
MOVE PTR(SRC) TO PTR(2)
|
||||
MOVE 2 TO SRC
|
||||
ELSE
|
||||
CALL "RE-ESCAPE" USING R(SRC), R(1)
|
||||
MOVE PTR(SRC) TO PTR(1)
|
||||
MOVE 1 TO SRC.
|
||||
|
||||
DO-OUTPUT.
|
||||
IF STANDARD-OUTPUT THEN
|
||||
|
|
Loading…
Reference in New Issue