GDSX Manual

LINE^HANDLER Example, Design
Extended General Device Support (GDSX) Manual134303
7-14
LINE^HANDLER Procedure
Processing Intertask Requests
Example 7-3 shows the code for the PROCESS^DH^REQ subprocedure. Most of this
processing is described under “Transaction Flow” on page 7-7. Notice that because the
requester applications have been restricted to WRITE and WRITEREAD, only these two
operation types need to be handled in this routine.
Example 7-2. Main Entry: Decoding Events
CALL ^READUPDATEX(IN^QUEUE^FILE^NUM); ! GET INTERTASK MESSAGE
IF <> THEN CALL DEBUG;
OLDEST := NEWEST := 0;
@MSG^BUF := GETEXTPOOL(10,1024); ! FROM EXTENDED BUFFER POOL
IF @MSG^BUF = 0D THEN CALL DEBUG;
WHILE (-1) DO
BEGIN
EVT := WAIT^EVENT((DISP^ITC+DISP^IOC+DISP^CAN+DISP^STOP),-1D);
CASE (EVT) OF
BEGIN
E^ITC -> ! INTERTASK MESSAGE RECEIVED FROM A D^H
BEGIN
CALL PROCESS^DH^REQ;
CALL ^READUPDATEX(IN^QUEUE^FILE^NUM);! GET NEXT MESSAGE
END;
E^IOC -> ! LINE I/O COMPLETED
CALL LINE^IO^CMPLT;
E^CAN -> ! ITC OPERATION CANCELED
CALL CANCEL^ITC;
CALL ^READUPDATEX(IN^QUEUE^FILE^NUM);! GET NEXT MESSAGE
E^STOP -> ! TASK STOPPED FROM SCF
CALL STOP^LINE;
OTHERWISE ->
CALL DEBUG;
END; ! CASE
END; ! WHILE
END; ! L^H PROC