GDSX (Extended General Device Support) Manual
USKELEX and USKELEXC Listings
Extended General Device Support (GDSX) Manual—529931-001
B-8
USKELEX Listing
@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 DEBUG;
END; ! CASE
CALL DEALLOCATEIOCB(LINE^IOCB); ! TSCODE ALLOCATED THIS IOCB
END; ! SUBPROC
? PAGE
!===========================================================================
! Line^Handler Procedure MAIN ENTRY POINT begins here
!===========================================================================
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