GDSX Manual

USKELEX and USKELEXC Listings
Extended General Device Support (GDSX) Manual134303
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);