GDSX Manual
USKELEX and USKELEXC Listings
Extended General Device Support (GDSX) Manual–134303
B-22
USKELEXC Listing
 CALL NOTIFY^IO^COMPLETIONX(WT^IOCB);
 CALL INCR^INDEX(OLDEST);
 ! TAKE THIS WT^RD OFF THE LIST
 IF (OLDEST <> NEWEST) THEN ! MORE WT^RDS PENDING
 CALL WT^RD^TO^LINE;
 END;
 WT^RD^OP -> ! OLDEST WT^RD ON LIST IS FINISHED
 BEGIN ! AND TEXT HAS BEEN READ AT THE PROMPT
 @DH^IOCB := WT^RD^IOCB^LIST[OLDEST];
 @DH^BUF := DH^IOCB.BUFADDRX;
 @LH^BUF := LINE^IOCB.BUFADDRX;
 IF (LINE^IOCB.ERR = 0) THEN
 BEGIN ! NORMAL COMPLETION
 DH^BUF ':=' LH^BUF FOR LINE^IOCB.IOCNT BYTES;
 DH^IOCB.IOCNT := LINE^IOCB.IOCNT;
 DH^IOCB.ERR := 0;
 END
 ELSE
 BEGIN ! PASS I/O PROCESS FS ERR BACK TO APPL
 DH^IOCB.IOCNT := 0;
 DH^IOCB.ERR := LINE^IOCB.ERR;
 END;
 CALL NOTIFY^IO^COMPLETIONX(DH^IOCB);
 END;
 OTHERWISE ->
 CALL PROCESS_DEBUG_;
 END; ! CASE
 CALL DEALLOCATEIOCB(LINE^IOCB); ! TSCODE ALLOCATED THIS IOCB.
 END; ! SUBPROC
!===========================================================================
! Line^Handler Procedure MAIN ENTRY POINT begins here
!===========================================================================
CALL ^READUPDATEX(IN^QUEUE^FILE^NUM); ! GET INTERTASK MESSAGE
IF <> THEN CALL PROCESS_DEBUG_;
OLDEST := NEWEST := 0;
@MSG^BUF := GETEXTPOOL(10,1024); ! FROM EXTENDED BUFFER POOL
IF @MSG^BUF = 0D THEN CALL PROCESS_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










