Add DECODE-STRING and ENCODE-STRING, adapt WOPO.
This commit is contained in:
parent
e1cb5571b7
commit
0f900e868e
3 changed files with 99 additions and 6 deletions
38
DECSTR.COB
Normal file
38
DECSTR.COB
Normal 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
52
ENCSTR.COB
Normal 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).
|
15
WOPO.COB
15
WOPO.COB
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue