Add DECODE-STRING and ENCODE-STRING, adapt WOPO.

This commit is contained in:
Quinn Evans 2015-10-02 14:22:16 -06:00
parent e1cb5571b7
commit 0f900e868e
3 changed files with 99 additions and 6 deletions

38
DECSTR.COB Normal file
View File

@ -0,0 +1,38 @@
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 PIC 999 OCCURS 999 TIMES.
PROCEDURE DIVISION USING ASCII-STRING.
MOVE 0 TO LOOP-STATE.
MOVE 1 TO STRING-POINTER.
PERFORM DECODE-CHARACTER VARYING TABLE-INDEX
FROM 1, BY 1,
UNTIL DONE.
EXIT PROGRAM.
DECODE-CHARACTER.
MOVE ASCII-TABLE(TABLE-INDEX) TO CHAR-CODE
IF STRING-POINTER IS GREATER THAN OR EQUAL TO 999 THEN
MOVE 99 TO LOOP-STATE
ELSE
STRING COBOL-STRING DELIMITED BY SPACES
INTO MSG-BODY
WITH POINTER STRING-POINTER.

52
ENCSTR.COB Normal file
View File

@ -0,0 +1,52 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. "ENCODE-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).
03 CURRENT-CHARACTER REDEFINES COBOL-STRING PIC X.
88 ESCAPE-CHAR VALUE "$".
LINKAGE SECTION.
01 ASCII-STRING.
03 MSG-BODY PIC X(999).
03 ASCII-TABLE PIC 999 OCCURS 999 TIMES.
PROCEDURE DIVISION USING ASCII-STRING.
MOVE 0 TO LOOP-STATE, STRING-POINTER.
PERFORM ENCODE-CHARACTER
VARYING TABLE-INDEX FROM 1, BY 1
UNTIL DONE.
EXIT PROGRAM.
ENCODE-CHARACTER.
MOVE SPACES TO COBOL-STRING.
UNSTRING MSG-BODY
INTO CURRENT-CHARACTER
WITH POINTER STRING-POINTER.
IF ESCAPE-CHAR THEN
MOVE SPACES TO COBOL-STRING
IF STRING-POINTER < 993 THEN
UNSTRING MSG-BODY DELIMITED BY "$"
INTO COBOL-STRING
WITH POINTER STRING-POINTER
IF COBOL-STRING IS EQUAL TO SPACES THEN
MOVE "$" TO COBOL-STRING
ELSE
NEXT SENTENCE
ELSE
MOVE "NUL" TO COBOL-STRING.
IF COBOL-STRING IS EQUAL TO "NUL" THEN
MOVE 99 TO LOOP-STATE.
IF TABLE-INDEX IS GREATER THAN 998 THEN
MOVE 99 TO LOOP-STATE.
CALL "ENCODE-ASCII" USING ASCII-STRING.
MOVE CHAR-CODE TO ASCII-TABLE(TABLE-INDEX).

View File

@ -33,7 +33,7 @@
01 STATE PIC 9(2).
88 SUCCESS VALUE 0.
88 DONE VALUE 99.
01 BUFFER.
01 ASCII-MSG.
03 MSG-BODY PIC X(999).
03 ASCII-TABLE PIC 999 OCCURS 999 TIMES.
01 WOPO.
@ -55,9 +55,9 @@
01 PARAMS.
03 WORK PIC X(480).
03 WORK-PTR PIC 999 USAGE COMPUTATION.
03 WORK-PREFIX REDEFINES WORK PIC X.
88 IS-COMMAND VALUE "$".
03 WORK-PTR PIC 999 USAGE COMPUTATIONAL.
03 PARAM PIC X(480) OCCURS 5 TIMES.
03 REG PIC X(480) OCCURS 5 TIMES.
@ -85,7 +85,8 @@
CONFIG-VALUE, DELIMITED BY SPACE,
"$NUL$"
INTO MSG-BODY,
CALL "CHANNEL-OPEN" USING MSG-BODY, STATE.
CALL "ENCODE-STRING" USING ASCII-MSG.
CALL "CHANNEL-OPEN" USING ASCII-MSG, STATE.
IF NOT SUCCESS THEN DISPLAY MSG-BODY
GO TO DIE.
MOVE "PASS" TO CONFIG-KEY.
@ -151,12 +152,14 @@
GO TO DIE.
SEND-LINE.
CALL "CHANNEL-SEND" USING MSG-BODY, STATE.
CALL "ENCODE-STRING" USING ASCII-MSG
CALL "CHANNEL-SEND" USING ASCII-MSG, STATE.
IF NOT SUCCESS THEN DISPLAY MSG-BODY
GO TO DIE.
RECEIVE-LINE.
CALL "CHANNEL-RECV" USING MSG-BODY, STATE.
CALL "CHANNEL-RECV" USING ASCII-MSG, STATE.
CALL "DECODE-STRING" USING ASCII-MSG
IF NOT SUCCESS THEN GO TO DIE.
CALL "IRC-MSG" USING MSG-BODY, IRC-MESSAGE.
@ -482,7 +485,7 @@
UNSTRING REST DELIMITED BY SPACE
INTO PARAM(1),
WITH POINTER WORK-PTR
UNSTRING REST DELIMITED BY SIZE
UNSTRING REST
INTO REG(1)
WITH POINTER WORK-PTR
* PRESERVE VARIABLES FOR REPLY.