CRCR and STOQ Events in COBOL85

The following COBOL85 program fragment demonstrates the use of CRCR and STOQ events in a WAIT statement. This example performs the same functions as the preceding ALGOL example.

IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
 01  STOQALPHA.
     03  STOQ-QUEUE         PIC X(6).
     03  STOQ-SUBQ-LENGTH   PIC 9(2) COMP VALUE 6.
     03  STOQ-SUBQ          PIC X(6).
     03  STOQ-DATA-LENGTH   PIC 9(4) COMP.
     03  STOQ-DATA          PIC X(9999).
 01  STOQBETA.
     03  STOQ-QUEUE         PIC X(6).
     03  STOQ-SUBQ-LENGTH   PIC 9(2) COMP VALUE 6.
     03  STOQ-SUBQ          PIC X(6).
     03  STOQ-DATA-LENGTH   PIC 9(4) COMP.
     03  STOQ-DATA          PIC X(9999).
 77 DONE      BINARY PIC 9(11).
 77 PROGNAME  PIC X(256).
 77 EVT       REAL.
 77 EVORDER   BINARY PIC 9(11).
 77 DELTA-INPUT     PIC X(2000).
 77 PROGNAME-OUTPUT PIC X(2000).
PROCEDURE DIVISION.
WAITLOOP SECTION.
P1.
* The statements to initialize the STOQ blocks STOQALPHA & STOQBETA
* are omitted from this example
MOVE 0 TO DONE.
WAIT UNTIL CRCR-INPUT “OBJECT/DELTA”
           CRCR-OUTPUT PROGNAME
           STOQ-INPUT STOQALPHA
           STOQ-OUTPUT STOQBETA
           ATTRIBUTE ACCEPTEVENT OF MYSELF
     USING EVORDER
     GIVING EVT.
IF EVT = 1
   RECEIVE “OBJECT/DELTA” INTO DELTA-INPUT
ELSE IF EVT = 2 THEN
   SEND PROGNAME FROM PROGNAME-OUTPUT
ELSE IF EVT = 3 THEN
   RECEIVE FROM TOP STOQALPHA
ELSE IF EVT = 4 THEN
   SEND TO TOP STOQBETA
ELSE
   MOVE 1 TO DONE
END-IF.
COMPUTE EVORDER = EVORDER + 1.
IF EVORDER IS > 1
   MOVE 1 TO EVORDER
END-IF.
IF DONE IS = 0 THEN 
   GO WAITLOOP.
STOP RUN.