GDSX Manual
USKELEX and USKELEXC Listings
Extended General Device Support (GDSX) Manual–134303
B-4
USKELEX Listing
 CALL SCAN^BUF;
 @MY^DCB := DCBTBL[INTERNAL^TERM^NO];
 MY^DCB.WT^RD^PEND := TRUE; ! SET FLAG
 ! FOR USER^STOP PROCEDURE
 CALL ^WRITEREADX(TERM^FILE^NUM,TERM^BUF, 
 RQSTR^WT^CT,RQSTR^RD^CT);
 IF <> THEN CALL DEBUG;
 CALL ^AWAITIOX(TERM^FILE^NUM,@TERM^BUF,TERM^CT^RD); 
 CALL ^FILEINFO(TERM^FILE^NUM,FERR);
 IF (FERR = 0) THEN
 CALL ^REPLYX(TERM^BUF,TERM^CT^RD) 
 ! NORMAL COMPLETION
 ELSE
 CALL ^REPLYX(,,,,FERR); ! APPL DEALS WITH 
 ! IOP FS ERRORS
 MY^DCB.WT^RD^PEND := FALSE; ! CLEAR FLAG
 END;
 END;
 WT -> ! WRITE
 BEGIN
 CALL SCAN^BUF;
 CALL ^WRITEX(TERM^FILE^NUM,TERM^BUF,RQSTR^WT^CT); 
 IF <> THEN CALL DEBUG;
 CALL ^AWAITIOX(TERM^FILE^NUM); 
 CALL ^FILEINFO(TERM^FILE^NUM,FERR);
 CALL ^REPLYX(,,,,FERR); 
 END;
 RD -> ! READ
 BEGIN
 CALL ^READX(TERM^FILE^NUM,TERM^BUF,RQSTR^RD^CT); 
 IF <> THEN CALL DEBUG;
 CALL ^AWAITIOX(TERM^FILE^NUM,@TERM^BUF,TERM^CT^RD); 
 CALL ^FILEINFO(TERM^FILE^NUM,FERR);
 IF (FERR = 0) THEN
 CALL ^REPLYX(TERM^BUF,TERM^CT^RD) 
 ELSE
 CALL ^REPLYX(,,,,FERR); 
 END;
 CTRL -> ! CONTROL
 BEGIN
 CALL ^CONTROL(TERM^FILE^NUM,RCV^BUF[1],RCV^BUF[2]);
 IF <> THEN CALL DEBUG;
 CALL ^AWAITIOX(TERM^FILE^NUM); 
 CALL ^FILEINFO(TERM^FILE^NUM,FERR);
 CALL ^REPLYX(,,,,FERR);; 
 END;
 SET^MD -> ! SETMODE
 BEGIN
 CALL ^SETMODENOWAIT(TERM^FILE^NUM,
 RCV^BUF[1],RCV^BUF[2],RCV^BUF[3]);
 IF <> THEN CALL DEBUG;
 CALL ^AWAITIOX(TERM^FILE^NUM); 
 CALL ^FILEINFO(TERM^FILE^NUM,FERR);
 CALL ^REPLYX(,,,,FERR); 
 END;
 END; !CASE
 CALL PUTEXTPOOL(10,@TERM^BUF); 
 CALL PUTEXTPOOL(10,@RCV^BUF); 










