Change WOPO to use new channel API

This commit is contained in:
Quinn Evans 2015-10-02 09:58:28 -06:00
parent 3672a77a4a
commit 922438fe79
1 changed files with 74 additions and 97 deletions

171
WOPO.COB
View File

@ -34,8 +34,8 @@
88 SUCCESS VALUE 0. 88 SUCCESS VALUE 0.
88 DONE VALUE 99. 88 DONE VALUE 99.
01 BUFFER. 01 BUFFER.
03 MSG-LENGTH PIC 9(3). 03 MSG-BODY PIC X(999).
03 MSG-BODY PIC X(512). 03 ASCII-TABLE PIC 999 OCCURS 999 TIMES.
01 WOPO. 01 WOPO.
03 WOPO-NICK PIC X(16). 03 WOPO-NICK PIC X(16).
01 IRC-MESSAGE. 01 IRC-MESSAGE.
@ -52,8 +52,10 @@
05 TARGET PIC X(50). 05 TARGET PIC X(50).
05 REST PIC X(480). 05 REST PIC X(480).
01 WAITING-COMMAND PIC X(16). 01 WAITING-COMMAND PIC X(16).
01 PARAMS. 01 PARAMS.
03 WORK PIC X(480). 03 WORK PIC X(480).
03 WORK-PTR PIC 999 USAGE COMPUTATION.
03 WORK-PREFIX REDEFINES WORK PIC X. 03 WORK-PREFIX REDEFINES WORK PIC X.
88 IS-COMMAND VALUE "$". 88 IS-COMMAND VALUE "$".
03 PARAM PIC X(480) OCCURS 5 TIMES. 03 PARAM PIC X(480) OCCURS 5 TIMES.
@ -76,62 +78,51 @@
PROCEDURE DIVISION. PROCEDURE DIVISION.
DISPLAY "CONFIGURATION FOLLOWS.". DISPLAY "CONFIGURATION FOLLOWS.".
CALL "PRINT-CONFIG". CALL "PRINT-CONFIG".
MOVE LENGTH OF MSG-BODY TO MSG-LENGTH.
CALL "CHANNEL-INIT"
USING BUFFER, STATE.
OPEN INPUT CONFIG. OPEN INPUT CONFIG.
MOVE "SERVER" TO CONFIG-KEY. MOVE "SERVER" TO CONFIG-KEY.
PERFORM READ-CONFIG-ENTRY. PERFORM READ-CONFIG-ENTRY.
MOVE 1 TO MSG-LENGTH.
STRING STRING
CONFIG-VALUE, DELIMITED BY SPACE, CONFIG-VALUE, DELIMITED BY SPACE,
"$NUL$"
INTO MSG-BODY, INTO MSG-BODY,
WITH POINTER MSG-LENGTH. CALL "CHANNEL-OPEN" USING MSG-BODY, STATE.
CALL "CHANNEL-OPEN".
IF NOT SUCCESS THEN DISPLAY MSG-BODY IF NOT SUCCESS THEN DISPLAY MSG-BODY
GO TO DIE. GO TO DIE.
MOVE "PASS" TO CONFIG-KEY. MOVE "PASS" TO CONFIG-KEY.
READ CONFIG RECORD READ CONFIG RECORD
INVALID KEY MOVE SPACES TO CONFIG-VALUE. INVALID KEY MOVE SPACES TO CONFIG-VALUE.
IF CONFIG-VALUE IS NOT EQUAL TO SPACES THEN IF CONFIG-VALUE IS NOT EQUAL TO SPACES THEN
MOVE SPACES TO MSG-BODY
MOVE 1 TO MSG-LENGTH
STRING "PASS " DELIMITED BY SIZE, STRING "PASS " DELIMITED BY SIZE,
CONFIG-VALUE DELIMITED BY SPACE, CONFIG-VALUE DELIMITED BY SPACE,
"$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH
PERFORM SEND-LINE. PERFORM SEND-LINE.
MOVE "NICK" TO CONFIG-KEY. MOVE "NICK" TO CONFIG-KEY.
PERFORM READ-CONFIG-ENTRY. PERFORM READ-CONFIG-ENTRY.
MOVE CONFIG-VALUE TO WOPO-NICK. MOVE CONFIG-VALUE TO WOPO-NICK.
MOVE 1 TO MSG-LENGTH.
MOVE SPACES TO MSG-BODY. MOVE SPACES TO MSG-BODY.
STRING "NICK" STRING "NICK " DELIMITED BY SIZE,
INTO MSG-BODY WOPO-NICK DELIMITED BY SPACES,
WITH POINTER MSG-LENGTH. "$NUL$"
ADD 1 TO MSG-LENGTH. INTO MSG-BODY.
STRING WOPO-NICK DELIMITED BY SPACE,
INTO MSG-BODY
WITH POINTER MSG-LENGTH.
PERFORM SEND-LINE. PERFORM SEND-LINE.
MOVE 1 TO MSG-LENGTH.
MOVE SPACES TO MSG-BODY. MOVE SPACES TO MSG-BODY.
STRING "USER" MOVE 1 TO WORK-PTR.
STRING "USER " DELIMITED BY SIZE
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
ADD 1 TO MSG-LENGTH.
MOVE "IDENT" TO CONFIG-KEY. MOVE "IDENT" TO CONFIG-KEY.
PERFORM READ-CONFIG-ENTRY. PERFORM READ-CONFIG-ENTRY.
STRING CONFIG-VALUE DELIMITED BY SPACE, STRING CONFIG-VALUE DELIMITED BY SPACE,
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
ADD 1 TO MSG-LENGTH. ADD 1 TO WORK-PTR.
MOVE "REAL-NAME" TO CONFIG-KEY. MOVE "REAL-NAME" TO CONFIG-KEY.
PERFORM READ-CONFIG-ENTRY. PERFORM READ-CONFIG-ENTRY.
STRING "BOGUS HOST; " DELIMITED BY SIZE, STRING "BOGUS HOST $COLN$" DELIMITED BY SIZE,
CONFIG-VALUE DELIMITED BY " ", CONFIG-VALUE DELIMITED BY " ",
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
OPEN INPUT CHANNELS. OPEN INPUT CHANNELS.
PERFORM AUTOJOIN-CHANNELS UNTIL DONE. PERFORM AUTOJOIN-CHANNELS UNTIL DONE.
@ -147,11 +138,10 @@
READ CHANNELS RECORD READ CHANNELS RECORD
AT END MOVE 99 TO STATE. AT END MOVE 99 TO STATE.
IF NOT DONE THEN IF NOT DONE THEN
MOVE 1 TO MSG-LENGTH
STRING "JOIN " DELIMITED BY SIZE, STRING "JOIN " DELIMITED BY SIZE,
CHANNEL-NAME DELIMITED BY SPACES, CHANNEL-NAME DELIMITED BY SPACES,
"$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH
PERFORM SEND-LINE. PERFORM SEND-LINE.
READ-CONFIG-ENTRY. READ-CONFIG-ENTRY.
@ -160,16 +150,15 @@
DISPLAY CONFIG-KEY DISPLAY CONFIG-KEY
GO TO DIE. GO TO DIE.
SEND-LINE. SEND-LINE.
CALL "CHANNEL-SEND". CALL "CHANNEL-SEND" USING MSG-BODY, STATE.
IF NOT SUCCESS THEN DISPLAY MSG-BODY IF NOT SUCCESS THEN DISPLAY MSG-BODY
GO TO DIE. GO TO DIE.
RECEIVE-LINE. RECEIVE-LINE.
MOVE SPACES TO MSG-BODY. CALL "CHANNEL-RECV" USING MSG-BODY, STATE.
CALL "CHANNEL-RECV".
IF NOT SUCCESS THEN GO TO DIE. IF NOT SUCCESS THEN GO TO DIE.
CALL "IRC-MSG" USING BUFFER, IRC-MESSAGE. CALL "IRC-MSG" USING MSG-BODY, IRC-MESSAGE.
WAIT-FOR-COMMAND. WAIT-FOR-COMMAND.
PERFORM RECEIVE-LINE UNTIL COMMAND EQUALS WAITING-COMMAND. PERFORM RECEIVE-LINE UNTIL COMMAND EQUALS WAITING-COMMAND.
@ -191,14 +180,10 @@
D DISPLAY "SUPPOSED USER LEVEL ", USER-LEVEL. D DISPLAY "SUPPOSED USER LEVEL ", USER-LEVEL.
IF USER-LEVEL IS GREATER THAN 0 THEN IF USER-LEVEL IS GREATER THAN 0 THEN
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO MSG-LENGTH STRING "PRIVMSG NICKSERV $COLN$ ACC " DELIMITED BY SIZE
STRING "PRIVMSG NICKSERV ;ACC" NICK DELIMITED BY SPACE
"$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH
ADD 1 TO MSG-LENGTH
STRING NICK
INTO MSG-BODY
WITH POINTER MSG-LENGTH
PERFORM SEND-LINE PERFORM SEND-LINE
MOVE "NOTICE" TO WAITING-COMMAND MOVE "NOTICE" TO WAITING-COMMAND
MOVE 0 TO STATE MOVE 0 TO STATE
@ -236,81 +221,75 @@
*THE REPLY FUNCTIONS NEED NICK, COMMAND, AND TARGET PRESERVED. *THE REPLY FUNCTIONS NEED NICK, COMMAND, AND TARGET PRESERVED.
BEGIN-REPLY. BEGIN-REPLY.
MOVE SPACES TO MSG-BODY. MOVE SPACES TO MSG-BODY.
MOVE 1 TO MSG-LENGTH. MOVE 1 TO WORK-PTR.
STRING COMMAND STRING COMMAND DELIMITED BY SPACES
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
ADD 1 TO MSG-LENGTH. ADD 1 TO WORK-PTR.
IF TARGET IS EQUAL TO WOPO-NICK THEN IF TARGET IS EQUAL TO WOPO-NICK THEN
STRING NICK DELIMITED BY SPACE STRING NICK DELIMITED BY SPACE
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH WITH POINTER WORK-PTR
ELSE ELSE
STRING TARGET DELIMITED BY SPACE STRING TARGET DELIMITED BY SPACE
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
ADD 1 TO MSG-LENGTH. ADD 1 TO WORK-PTR.
STRING ";" STRING "$COLN$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
IF TARGET IS NOT EQUAL TO WOPO-NICK THEN IF TARGET IS NOT EQUAL TO WOPO-NICK THEN
STRING NICK DELIMITED BY SPACES STRING NICK DELIMITED BY SPACES
". " DELIMITED BY SIZE ". " DELIMITED BY SIZE
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
REPLY-ACK. REPLY-ACK.
PERFORM BEGIN-REPLY. PERFORM BEGIN-REPLY.
STRING "OK." STRING "OK.$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
PONG. PONG.
MOVE SPACES TO MSG-BODY. STRING "PONG$NUL$"
MOVE 1 TO MSG-LENGTH. INTO MSG-BODY.
STRING "PONG"
INTO MSG-BODY
WITH POINTER MSG-LENGTH.
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-KICK. HANDLE-KICK.
PERFORM GET-PARAMS. PERFORM GET-PARAMS.
IF PARAM(1) IS EQUAL TO WOPO-NICK THEN IF PARAM(1) IS EQUAL TO WOPO-NICK THEN
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO MSG-LENGTH
STRING "JOIN " DELIMITED BY SIZE, STRING "JOIN " DELIMITED BY SIZE,
TARGET DELIMITED BY SPACES TARGET DELIMITED BY SPACES
INTO MSG-BODY "$NUL$"
WITH POINTER MSG-LENGTH INTO MSG-BODY
PERFORM SEND-LINE PERFORM SEND-LINE
MOVE 1 TO MSG-LENGTH MOVE 1 TO WORK-PTR
UNSTRING REST DELIMITED BY ";" UNSTRING REST DELIMITED BY "$COLN$"
INTO WORK INTO WORK
WITH POINTER MSG-LENGTH WITH POINTER WORK-PTR
UNSTRING REST UNSTRING REST
INTO WORK INTO WORK
WITH POINTER MSG-LENGTH WITH POINTER WORK-PTR
IF WORK IS NOT EQUAL TO WOPO-NICK THEN IF WORK IS NOT EQUAL TO WOPO-NICK THEN
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO MSG-LENGTH
STRING "PRIVMSG " DELIMITED BY SIZE, STRING "PRIVMSG " DELIMITED BY SIZE,
TARGET DELIMITED BY SPACES, TARGET DELIMITED BY SPACES,
" :" DELIMITED BY SIZE, " $COLN$" DELIMITED BY SIZE,
NICK DELIMITED BY SPACES, NICK DELIMITED BY SPACES,
". " DELIMITED BY SIZE, ". " DELIMITED BY SIZE,
WORK WORK DELIMITED BY "$NUL$",
"$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH
MOVE 513 TO MSG-LENGTH
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-MESSAGE. HANDLE-MESSAGE.
PERFORM GET-PARAMS. PERFORM GET-PARAMS.
IF IS-COMMAND THEN IF IS-COMMAND THEN
MOVE 2 TO MSG-LENGTH MOVE 2 TO WORK-PTR
UNSTRING WORK INTO PARAM(1) UNSTRING WORK INTO PARAM(1)
WITH POINTER MSG-LENGTH WITH POINTER WORK-PTR
D DISPLAY "COMMAND BODY ", PARAM(1) D DISPLAY "COMMAND BODY ", PARAM(1)
IF PARAM(1) IS EQUAL TO "HELP" THEN IF PARAM(1) IS EQUAL TO "HELP" THEN
PERFORM HANDLE-HELP PERFORM HANDLE-HELP
@ -344,21 +323,21 @@
- "$HELP $LEVEL $JOIN $PART $QUIT $RELEVEL $SHITFED " - "$HELP $LEVEL $JOIN $PART $QUIT $RELEVEL $SHITFED "
- "$SOURCE" - "$SOURCE"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-SHITFED. HANDLE-SHITFED.
PERFORM BEGIN-REPLY. PERFORM BEGIN-REPLY.
STRING "LEAVE MY CASE ALONE, ASSHOLE." STRING "LEAVE MY CASE ALONE, ASSHOLE."
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-SOURCE. HANDLE-SOURCE.
PERFORM BEGIN-REPLY. PERFORM BEGIN-REPLY.
STRING "HTTPS;//GITHUB.COM/HEDDWCH/WOPO" STRING "HTTPS$COLN$//GITHUB.COM/HEDDWCH/WOPO"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-LEVEL. HANDLE-LEVEL.
@ -371,7 +350,7 @@
PERFORM BEGIN-REPLY PERFORM BEGIN-REPLY
STRING USER-RECORD STRING USER-RECORD
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-JOIN. HANDLE-JOIN.
@ -384,10 +363,10 @@
IF USER-LEVEL IS GREATER THAN 80 AND IF USER-LEVEL IS GREATER THAN 80 AND
REG(1) IS NOT EQUAL TO "0" THEN REG(1) IS NOT EQUAL TO "0" THEN
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO MSG-LENGTH STRING "JOIN ", DELIMITED BY SIZE,
STRING "JOIN ", REG(1) REG(1), DELIMITED BY SPACES,
"$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH
PERFORM SEND-LINE PERFORM SEND-LINE
* RESTORE NICK AND TARGET, THEN REPLY. * RESTORE NICK AND TARGET, THEN REPLY.
MOVE REG(2) TO NICK MOVE REG(2) TO NICK
@ -411,10 +390,10 @@
MOVE REG(4) TO TARGET MOVE REG(4) TO TARGET
PERFORM REPLY-ACK PERFORM REPLY-ACK
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO MSG-LENGTH STRING "PART " DELIMITED BY SIZE,
STRING "PART ", REG(1) REG(1) DELIMITED BY SPACES,
"$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-QUIT. HANDLE-QUIT.
@ -433,10 +412,9 @@
MOVE REG(3) TO TARGET MOVE REG(3) TO TARGET
PERFORM REPLY-ACK PERFORM REPLY-ACK
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO MSG-LENGTH STRING "QUIT $COLN$" DELIMITED BY SIZE,
STRING "QUIT ;", CONFIG-VALUE CONFIG-VALUE,
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH
PERFORM SEND-LINE PERFORM SEND-LINE
GO TO QUIT. GO TO QUIT.
@ -462,16 +440,17 @@
PERFORM BEGIN-REPLY. PERFORM BEGIN-REPLY.
STRING USER-RECORD STRING USER-RECORD
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-BF-CODE. HANDLE-BF-CODE.
IF PARAM(2) IS EQUAL TO SPACES THEN IF PARAM(2) IS EQUAL TO SPACES THEN
PERFORM BEGIN-REPLY PERFORM BEGIN-REPLY
STRING "CODE. " DELIMITED BY SIZE, STRING "CODE. " DELIMITED BY SIZE,
BF-CODE DELIMITED BY " " BF-CODE DELIMITED BY " ",
"$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH WITH POINTER WORK-PTR
PERFORM SEND-LINE PERFORM SEND-LINE
ELSE ELSE
MOVE PARAM(2) TO REG(1) MOVE PARAM(2) TO REG(1)
@ -495,18 +474,17 @@
STRING "INPUT. ", STRING "INPUT. ",
BF-INPUT BF-INPUT
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH
D DISPLAY "INPUT. ", BF-INPUT D DISPLAY "INPUT. ", BF-INPUT
D DISPLAY "MSG-BODY. ", MSG-BODY D DISPLAY "MSG-BODY. ", MSG-BODY
PERFORM SEND-LINE PERFORM SEND-LINE
ELSE ELSE
MOVE 1 TO MSG-LENGTH MOVE 1 TO WORK-PTR
UNSTRING REST DELIMITED BY SPACE UNSTRING REST DELIMITED BY SPACE
INTO PARAM(1) INTO PARAM(1),
WITH POINTER MSG-LENGTH WITH POINTER WORK-PTR
UNSTRING REST UNSTRING REST DELIMITED BY SIZE
INTO REG(1) INTO REG(1)
WITH POINTER MSG-LENGTH WITH POINTER WORK-PTR
* PRESERVE VARIABLES FOR REPLY. * PRESERVE VARIABLES FOR REPLY.
MOVE NICK TO REG(2) MOVE NICK TO REG(2)
MOVE COMMAND TO REG(3) MOVE COMMAND TO REG(3)
@ -527,7 +505,7 @@
STRING "OUTPUT. " DELIMITED BY SIZE, STRING "OUTPUT. " DELIMITED BY SIZE,
BF-OUTPUT DELIMITED BY "$NUL$" BF-OUTPUT DELIMITED BY "$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER MSG-LENGTH. WITH POINTER WORK-PTR.
D DISPLAY "SENDING LINE". D DISPLAY "SENDING LINE".
PERFORM SEND-LINE. PERFORM SEND-LINE.
D DISPLAY "SENT LINE". D DISPLAY "SENT LINE".
@ -550,7 +528,6 @@
MOVE REG(3) TO COMMAND MOVE REG(3) TO COMMAND
MOVE REG(4) TO TARGET MOVE REG(4) TO TARGET
IF USER-LEVEL > 50 THEN IF USER-LEVEL > 50 THEN
MOVE 1 TO MSG-LENGTH
PERFORM REPLY-ACK PERFORM REPLY-ACK
MOVE MAYBE-CYCLE-LIMIT TO CYCLE-LIMIT MOVE MAYBE-CYCLE-LIMIT TO CYCLE-LIMIT
PERFORM BF-LIMIT-CYCLES PERFORM BF-LIMIT-CYCLES