diff --git a/DECASCII.COB b/DECASCII.COB index 7f1524f..1e9450f 100644 --- a/DECASCII.COB +++ b/DECASCII.COB @@ -189,7 +189,7 @@ ELSE IF ASCII-PND THEN MOVE "$PND$" TO COBOL-STRING ELSE IF ASCII-DLR THEN - MOVE "$" TO COBOL-STRING + MOVE "$$" TO COBOL-STRING ELSE IF ASCII-PCNT THEN MOVE "$PCNT$" TO COBOL-STRING ELSE IF ASCII-AMP THEN @@ -321,5 +321,4 @@ ELSE IF ASCII-DEL THEN MOVE "$DEL$" TO COBOL-STRING ELSE STRING "$", CHAR-CODE, "$" INTO COBOL-STRING. - DDISPLAY COBOL-STRING. EXIT PROGRAM. diff --git a/DECSTR.COB b/DECSTR.COB index 8aaaf69..d8d5f4a 100644 --- a/DECSTR.COB +++ b/DECSTR.COB @@ -16,23 +16,27 @@ LINKAGE SECTION. 01 ASCII-STRING. 03 MSG-BODY PIC X(999). - 03 ASCII-TABLE PIC 999 OCCURS 999 TIMES. + 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-TABLE(TABLE-INDEX) TO CHAR-CODE + 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 - STRING COBOL-STRING DELIMITED BY SPACES - INTO MSG-BODY - WITH POINTER STRING-POINTER. - - + 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. diff --git a/ENCASCII.COB b/ENCASCII.COB index 8e192bd..35044a2 100644 --- a/ENCASCII.COB +++ b/ENCASCII.COB @@ -51,8 +51,8 @@ 88 ASCII-PCNT VALUE "PCNT". 88 ASCII-AMP VALUE "AMP". 88 ASCII-SGQT VALUE "SGQT". - 88 ASCII-LPRN VALUE "LPRN". - 88 ASCII-RPRN VALUE "RPRN". + 88 ASCII-LPRN VALUE "(". + 88 ASCII-RPRN VALUE ")". 88 ASCII-STAR VALUE "*". 88 ASCII-PLUS VALUE "+". 88 ASCII-COMA VALUE ",". diff --git a/ENCSTR.COB b/ENCSTR.COB index 06b5507..3110b8c 100644 --- a/ENCSTR.COB +++ b/ENCSTR.COB @@ -18,10 +18,12 @@ LINKAGE SECTION. 01 ASCII-STRING. 03 MSG-BODY PIC X(999). - 03 ASCII-TABLE PIC 999 OCCURS 999 TIMES. + 03 ASCII-TABLE. + 05 ASCII-CELL PIC 999 OCCURS 999 TIMES. PROCEDURE DIVISION USING ASCII-STRING. - MOVE 0 TO LOOP-STATE, STRING-POINTER. + MOVE 0 TO LOOP-STATE. + MOVE 1 TO STRING-POINTER. PERFORM ENCODE-CHARACTER VARYING TABLE-INDEX FROM 1, BY 1 UNTIL DONE. @@ -48,5 +50,5 @@ 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). + CALL "ENCODE-ASCII" USING ASCII-CHARACTER. + MOVE CHAR-CODE TO ASCII-CELL(TABLE-INDEX). diff --git a/gnu-cobol.sh b/gnu-cobol.sh index 2d34afd..89ed09d 100644 --- a/gnu-cobol.sh +++ b/gnu-cobol.sh @@ -32,6 +32,6 @@ if [ $BUILD_C ]; then fi if [ $BUILD_COBOL ]; then ${COBC:-cobc} ${DEBUG:+-fdebugging-line} -x WOPO-CNF.COB PRINTCNF.COB - ${COBC:-cobc} ${DEBUG:+-fdebugging-line} -x WOPO.COB IRC-MSG.COB PRINTCNF.COB DECASCII.COB ENCASCII.COB BF-RUN.COB channel.o + ${COBC:-cobc} ${DEBUG:+-fdebugging-line} -x WOPO.COB IRC-MSG.COB PRINTCNF.COB DECASCII.COB ENCASCII.COB DECSTR.COB ENCSTR.COB BF-RUN.COB channel.o fi