Adapt WOPO to use new PARSE-IRC-MESSAGE.
This commit is contained in:
parent
a857d0b8e6
commit
db8f2611f7
1 changed files with 76 additions and 43 deletions
115
WOPO.COB
115
WOPO.COB
|
@ -42,22 +42,6 @@
|
||||||
05 ASCII-CELL PIC 999 OCCURS 999 TIMES.
|
05 ASCII-CELL PIC 999 OCCURS 999 TIMES.
|
||||||
01 WOPO.
|
01 WOPO.
|
||||||
03 WOPO-NICK PIC X(16).
|
03 WOPO-NICK PIC X(16).
|
||||||
01 IRC-MESSAGE.
|
|
||||||
03 PREFIX.
|
|
||||||
05 NICK PIC X(16).
|
|
||||||
05 IDENT PIC X(16).
|
|
||||||
05 HOST PIC X(64).
|
|
||||||
03 COMMAND PIC X(16).
|
|
||||||
88 KICK VALUE "KICK".
|
|
||||||
88 PING VALUE "PING".
|
|
||||||
88 PRIVMSG VALUE "PRIVMSG".
|
|
||||||
88 NOTICE VALUE "NOTICE".
|
|
||||||
03 PARAMETERS.
|
|
||||||
05 TARGET PIC X(50).
|
|
||||||
05 REST PIC X(480).
|
|
||||||
01 WAITING-COMMAND PIC X(16).
|
|
||||||
|
|
||||||
01 PARAMS.
|
|
||||||
03 WORK PIC X(480).
|
03 WORK PIC X(480).
|
||||||
03 WORK-PREFIX REDEFINES WORK PIC XX.
|
03 WORK-PREFIX REDEFINES WORK PIC XX.
|
||||||
88 IS-COMMAND VALUE "$$".
|
88 IS-COMMAND VALUE "$$".
|
||||||
|
@ -65,6 +49,27 @@
|
||||||
03 PARAM PIC X(480) OCCURS 5 TIMES.
|
03 PARAM PIC X(480) OCCURS 5 TIMES.
|
||||||
03 REG PIC X(480) OCCURS 5 TIMES.
|
03 REG PIC X(480) OCCURS 5 TIMES.
|
||||||
|
|
||||||
|
01 IRC-PARAMETERS.
|
||||||
|
03 NUM-PARAMS PIC 99.
|
||||||
|
03 PREFIX.
|
||||||
|
05 MSG-SRC PIC 999.
|
||||||
|
88 GOT-PREFIX VALUES 1 THROUGH 999.
|
||||||
|
05 IDENT PIC 999.
|
||||||
|
05 HOST PIC 999.
|
||||||
|
03 COMMAND PIC 999.
|
||||||
|
03 PARAMS.
|
||||||
|
05 PARAM-PTR PIC 999 OCCURS 15 TIMES.
|
||||||
|
|
||||||
|
01 IRC-STATE.
|
||||||
|
03 NICK PIC X(16).
|
||||||
|
03 COMMAND PIC X(16).
|
||||||
|
88 KICK VALUE "KICK".
|
||||||
|
88 PING VALUE "PING".
|
||||||
|
88 PRIVMSG VALUE "PRIVMSG".
|
||||||
|
88 NOTICE VALUE "NOTICE".
|
||||||
|
03 TARGET PIC X(50).
|
||||||
|
03 WAITING-COMMAND PIC X(16).
|
||||||
|
|
||||||
01 BF-I-O.
|
01 BF-I-O.
|
||||||
03 BF-INPUT PIC X(999)
|
03 BF-INPUT PIC X(999)
|
||||||
VALUE "$NUL$".
|
VALUE "$NUL$".
|
||||||
|
@ -170,13 +175,38 @@
|
||||||
CALL "DECODE-STRING" USING ASCII-MSG.
|
CALL "DECODE-STRING" USING ASCII-MSG.
|
||||||
IF NOT SUCCESS THEN DISPLAY MSG-BODY
|
IF NOT SUCCESS THEN DISPLAY MSG-BODY
|
||||||
GO TO DIE.
|
GO TO DIE.
|
||||||
CALL "IRC-MSG" USING MSG-BODY, IRC-MESSAGE.
|
CALL "PARSE-IRC-MSG" USING MSG-BODY, IRC-PARAMETERS.
|
||||||
|
IF GOT-PREFIX THEN
|
||||||
|
MOVE MSG-SRC TO WORK-PTR
|
||||||
|
UNSTRING MSG-BODY
|
||||||
|
DELIMITED BY "$EXC$" OR "$AT$" OR SPACES
|
||||||
|
INTO NICK
|
||||||
|
WITH POINTER WORK-PTR.
|
||||||
|
MOVE COMMAND OF IRC-PARAMETERS TO WORK-PTR.
|
||||||
|
UNSTRING MSG-BODY
|
||||||
|
DELIMITED BY SPACES
|
||||||
|
INTO COMMAND OF IRC-STATE
|
||||||
|
WITH POINTER WORK-PTR.
|
||||||
|
IF NUM-PARAMS IS NOT LESS THAN 1 THEN
|
||||||
|
MOVE PARAM-PTR(1) TO WORK-PTR
|
||||||
|
UNSTRING MSG-BODY
|
||||||
|
DELIMITED BY SPACES
|
||||||
|
INTO TARGET
|
||||||
|
WITH POINTER WORK-PTR
|
||||||
|
ELSE
|
||||||
|
MOVE SPACES TO TARGET.
|
||||||
|
|
||||||
WAIT-FOR-COMMAND.
|
WAIT-FOR-COMMAND.
|
||||||
PERFORM RECEIVE-LINE UNTIL COMMAND EQUALS WAITING-COMMAND.
|
PERFORM RECEIVE-LINE UNTIL
|
||||||
|
COMMAND OF IRC-STATE EQUALS WAITING-COMMAND.
|
||||||
|
|
||||||
GET-PARAMS.
|
GET-PARAMS.
|
||||||
UNSTRING REST DELIMITED BY SPACE INTO
|
MOVE PARAM-PTR(NUM-PARAMS) TO WORK-PTR.
|
||||||
|
UNSTRING MSG-BODY DELIMITED BY "$NUL$"
|
||||||
|
INTO WORK
|
||||||
|
WITH POINTER WORK-PTR.
|
||||||
|
UNSTRING WORK DELIMITED BY SPACE
|
||||||
|
INTO
|
||||||
PARAM(1)
|
PARAM(1)
|
||||||
PARAM(2)
|
PARAM(2)
|
||||||
PARAM(3)
|
PARAM(3)
|
||||||
|
@ -214,10 +244,13 @@
|
||||||
IF PARAM(3) IS NOT EQUAL TO "3" THEN
|
IF PARAM(3) IS NOT EQUAL TO "3" THEN
|
||||||
MOVE 0 TO USER-LEVEL
|
MOVE 0 TO USER-LEVEL
|
||||||
ELSE NEXT SENTENCE
|
ELSE NEXT SENTENCE
|
||||||
ELSE MOVE SPACES TO COMMAND.
|
ELSE MOVE SPACES TO COMMAND OF IRC-STATE.
|
||||||
|
|
||||||
MAIN.
|
MAIN.
|
||||||
PERFORM RECEIVE-LINE.
|
PERFORM RECEIVE-LINE.
|
||||||
|
D DISPLAY "NICK. ", NICK,
|
||||||
|
D "COMMAND. ", COMMAND OF IRC-STATE,
|
||||||
|
D "TARGET. ", TARGET.
|
||||||
IF PING THEN
|
IF PING THEN
|
||||||
PERFORM PONG
|
PERFORM PONG
|
||||||
ELSE IF PRIVMSG THEN
|
ELSE IF PRIVMSG THEN
|
||||||
|
@ -234,7 +267,7 @@
|
||||||
BEGIN-REPLY.
|
BEGIN-REPLY.
|
||||||
MOVE SPACES TO MSG-BODY.
|
MOVE SPACES TO MSG-BODY.
|
||||||
MOVE 1 TO WORK-PTR.
|
MOVE 1 TO WORK-PTR.
|
||||||
STRING COMMAND DELIMITED BY SPACES
|
STRING COMMAND OF IRC-STATE DELIMITED BY SPACES
|
||||||
INTO MSG-BODY
|
INTO MSG-BODY
|
||||||
WITH POINTER WORK-PTR.
|
WITH POINTER WORK-PTR.
|
||||||
ADD 1 TO WORK-PTR.
|
ADD 1 TO WORK-PTR.
|
||||||
|
@ -277,11 +310,11 @@
|
||||||
"$NUL$"
|
"$NUL$"
|
||||||
INTO MSG-BODY
|
INTO MSG-BODY
|
||||||
PERFORM SEND-LINE
|
PERFORM SEND-LINE
|
||||||
MOVE 1 TO WORK-PTR
|
MOVE PARAM-PTR(NUM-PARAMS) TO WORK-PTR
|
||||||
UNSTRING REST DELIMITED BY "$COLN$"
|
UNSTRING MSG-BODY DELIMITED BY "$COLN$"
|
||||||
INTO WORK
|
INTO WORK
|
||||||
WITH POINTER WORK-PTR
|
WITH POINTER WORK-PTR
|
||||||
UNSTRING REST
|
UNSTRING MSG-BODY
|
||||||
INTO WORK
|
INTO WORK
|
||||||
WITH POINTER WORK-PTR
|
WITH POINTER WORK-PTR
|
||||||
IF WORK IS NOT EQUAL TO WOPO-NICK THEN
|
IF WORK IS NOT EQUAL TO WOPO-NICK THEN
|
||||||
|
@ -370,7 +403,7 @@
|
||||||
MOVE PARAM(2) TO REG(1).
|
MOVE PARAM(2) TO REG(1).
|
||||||
* 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 OF IRC-STATE TO REG(3).
|
||||||
MOVE TARGET TO REG(4).
|
MOVE TARGET TO REG(4).
|
||||||
PERFORM VALIDATE-USER.
|
PERFORM VALIDATE-USER.
|
||||||
IF USER-LEVEL IS GREATER THAN 80 AND
|
IF USER-LEVEL IS GREATER THAN 80 AND
|
||||||
|
@ -383,7 +416,7 @@
|
||||||
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
|
||||||
MOVE REG(3) TO COMMAND
|
MOVE REG(3) TO COMMAND OF IRC-STATE
|
||||||
MOVE REG(4) TO TARGET
|
MOVE REG(4) TO TARGET
|
||||||
PERFORM REPLY-ACK.
|
PERFORM REPLY-ACK.
|
||||||
|
|
||||||
|
@ -391,7 +424,7 @@
|
||||||
MOVE PARAM(2) TO REG(1).
|
MOVE PARAM(2) TO REG(1).
|
||||||
* 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 OF IRC-STATE TO REG(3).
|
||||||
MOVE TARGET TO REG(4).
|
MOVE TARGET TO REG(4).
|
||||||
IF REG(1) EQUALS SPACES THEN
|
IF REG(1) EQUALS SPACES THEN
|
||||||
MOVE TARGET TO REG(1).
|
MOVE TARGET TO REG(1).
|
||||||
|
@ -399,7 +432,7 @@
|
||||||
IF USER-LEVEL IS GREATER THAN 80 THEN
|
IF USER-LEVEL IS GREATER THAN 80 THEN
|
||||||
* RESTORE NICK AND TARGET, THEN REPLY.
|
* RESTORE NICK AND TARGET, THEN REPLY.
|
||||||
MOVE REG(2) TO NICK
|
MOVE REG(2) TO NICK
|
||||||
MOVE REG(3) TO COMMAND
|
MOVE REG(3) TO COMMAND OF IRC-STATE
|
||||||
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
|
||||||
|
@ -412,7 +445,7 @@
|
||||||
HANDLE-QUIT.
|
HANDLE-QUIT.
|
||||||
* PRESERVE VARIABLES FOR REPLY
|
* PRESERVE VARIABLES FOR REPLY
|
||||||
MOVE NICK TO REG(1).
|
MOVE NICK TO REG(1).
|
||||||
MOVE COMMAND TO REG(2).
|
MOVE COMMAND OF IRC-STATE TO REG(2).
|
||||||
MOVE TARGET TO REG(3).
|
MOVE TARGET TO REG(3).
|
||||||
MOVE "QUIT-MESSAGE" TO CONFIG-KEY.
|
MOVE "QUIT-MESSAGE" TO CONFIG-KEY.
|
||||||
READ CONFIG RECORD
|
READ CONFIG RECORD
|
||||||
|
@ -421,7 +454,7 @@
|
||||||
IF USER-LEVEL IS GREATER THAN 90 THEN
|
IF USER-LEVEL IS GREATER THAN 90 THEN
|
||||||
* RESTORE NICK AND TARGET, THEN REPLY.
|
* RESTORE NICK AND TARGET, THEN REPLY.
|
||||||
MOVE REG(1) TO NICK
|
MOVE REG(1) TO NICK
|
||||||
MOVE REG(2) TO COMMAND
|
MOVE REG(2) TO COMMAND OF IRC-STATE
|
||||||
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
|
||||||
|
@ -436,7 +469,7 @@
|
||||||
MOVE PARAM(3) TO REG(2).
|
MOVE PARAM(3) TO REG(2).
|
||||||
* PRESERVE VARIABLES FOR REPLY
|
* PRESERVE VARIABLES FOR REPLY
|
||||||
MOVE NICK TO REG(3).
|
MOVE NICK TO REG(3).
|
||||||
MOVE COMMAND TO REG(4).
|
MOVE COMMAND OF IRC-STATE TO REG(4).
|
||||||
MOVE TARGET TO REG(5).
|
MOVE TARGET TO REG(5).
|
||||||
PERFORM VALIDATE-USER.
|
PERFORM VALIDATE-USER.
|
||||||
MOVE REG(1) TO USER-NAME.
|
MOVE REG(1) TO USER-NAME.
|
||||||
|
@ -448,7 +481,7 @@
|
||||||
INVALID KEY MOVE 0 TO USER-LEVEL.
|
INVALID KEY MOVE 0 TO USER-LEVEL.
|
||||||
* RESTORE NICK AND TARGET, THEN REPLY.
|
* RESTORE NICK AND TARGET, THEN REPLY.
|
||||||
MOVE REG(3) TO NICK.
|
MOVE REG(3) TO NICK.
|
||||||
MOVE REG(4) TO COMMAND.
|
MOVE REG(4) TO COMMAND OF IRC-STATE.
|
||||||
MOVE REG(5) TO TARGET.
|
MOVE REG(5) TO TARGET.
|
||||||
PERFORM BEGIN-REPLY.
|
PERFORM BEGIN-REPLY.
|
||||||
STRING USER-RECORD
|
STRING USER-RECORD
|
||||||
|
@ -470,13 +503,13 @@
|
||||||
MOVE PARAM(2) TO REG(1)
|
MOVE PARAM(2) TO REG(1)
|
||||||
* 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 OF IRC-STATE TO REG(3)
|
||||||
MOVE TARGET TO REG(4)
|
MOVE TARGET TO REG(4)
|
||||||
PERFORM VALIDATE-USER
|
PERFORM VALIDATE-USER
|
||||||
IF USER-LEVEL > 60 THEN
|
IF USER-LEVEL > 60 THEN
|
||||||
* RESTORE NICK AND TARGET, THEN REPLY.
|
* RESTORE NICK AND TARGET, THEN REPLY.
|
||||||
MOVE REG(2) TO NICK
|
MOVE REG(2) TO NICK
|
||||||
MOVE REG(3) TO COMMAND
|
MOVE REG(3) TO COMMAND OF IRC-STATE
|
||||||
MOVE REG(4) TO TARGET
|
MOVE REG(4) TO TARGET
|
||||||
MOVE SPACES TO BF-CODE
|
MOVE SPACES TO BF-CODE
|
||||||
MOVE REG(1) TO BF-CODE
|
MOVE REG(1) TO BF-CODE
|
||||||
|
@ -493,22 +526,22 @@
|
||||||
D DISPLAY "MSG-BODY. ", MSG-BODY
|
D DISPLAY "MSG-BODY. ", MSG-BODY
|
||||||
PERFORM SEND-LINE
|
PERFORM SEND-LINE
|
||||||
ELSE
|
ELSE
|
||||||
MOVE 1 TO WORK-PTR
|
MOVE PARAM-PTR(NUM-PARAMS) TO WORK-PTR
|
||||||
UNSTRING REST DELIMITED BY SPACE
|
UNSTRING MSG-BODY DELIMITED BY SPACE
|
||||||
INTO PARAM(1),
|
INTO PARAM(1),
|
||||||
WITH POINTER WORK-PTR
|
WITH POINTER WORK-PTR
|
||||||
UNSTRING REST
|
UNSTRING MSG-BODY
|
||||||
INTO REG(1)
|
INTO REG(1)
|
||||||
WITH POINTER WORK-PTR
|
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 OF IRC-STATE TO REG(3)
|
||||||
MOVE TARGET TO REG(4)
|
MOVE TARGET TO REG(4)
|
||||||
PERFORM VALIDATE-USER
|
PERFORM VALIDATE-USER
|
||||||
IF USER-LEVEL > 50 THEN
|
IF USER-LEVEL > 50 THEN
|
||||||
* RESTORE NICK AND TARGET, THEN REPLY
|
* RESTORE NICK AND TARGET, THEN REPLY
|
||||||
MOVE REG(2) TO NICK
|
MOVE REG(2) TO NICK
|
||||||
MOVE REG(3) TO COMMAND
|
MOVE REG(3) TO COMMAND OF IRC-STATE
|
||||||
MOVE REG(4) TO TARGET
|
MOVE REG(4) TO TARGET
|
||||||
MOVE REG(1) TO BF-INPUT
|
MOVE REG(1) TO BF-INPUT
|
||||||
PERFORM REPLY-ACK.
|
PERFORM REPLY-ACK.
|
||||||
|
@ -530,7 +563,7 @@
|
||||||
MOVE PARAM(2) TO REG(1).
|
MOVE PARAM(2) TO REG(1).
|
||||||
* 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 OF IRC-STATE TO REG(3).
|
||||||
MOVE TARGET TO REG(4).
|
MOVE TARGET TO REG(4).
|
||||||
PERFORM VALIDATE-USER.
|
PERFORM VALIDATE-USER.
|
||||||
IF REG(1) IS EQUAL TO SPACES THEN
|
IF REG(1) IS EQUAL TO SPACES THEN
|
||||||
|
@ -540,7 +573,7 @@
|
||||||
D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT.
|
D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT.
|
||||||
* RESTORE NICK AND TARGET, THEN REPLY.
|
* RESTORE NICK AND TARGET, THEN REPLY.
|
||||||
MOVE REG(2) TO NICK
|
MOVE REG(2) TO NICK
|
||||||
MOVE REG(3) TO COMMAND
|
MOVE REG(3) TO COMMAND OF IRC-STATE
|
||||||
MOVE REG(4) TO TARGET
|
MOVE REG(4) TO TARGET
|
||||||
IF USER-LEVEL > 50 THEN
|
IF USER-LEVEL > 50 THEN
|
||||||
PERFORM REPLY-ACK
|
PERFORM REPLY-ACK
|
||||||
|
|
Loading…
Reference in a new issue