GDSX Manual
USKELEX and USKELEXC Listings
Extended General Device Support (GDSX) Manual–134303
B-16
USKELEXC Listing
BEGIN ! THIS PROCEDURE PERFORMS DATASTREAM
INT I; ! CONVERSION, CHANGING LOWERCASE
STRING LEFT^HALF; ! CHARACTERS TO UPPERCASE. IT IS
! CALLED ONLY FOR OUTBOUND (TO IOP)
@S^TERM^BUF := @TERM^BUF; ! REQUESTS.
@S^RCV^BUF := @RCV^BUF;
FOR I := 0 TO (RQSTR^WT^CT - 1) DO
BEGIN
LEFT^HALF := S^RCV^BUF[I].<8:11>;
IF (LEFT^HALF = 6 OR LEFT^HALF = 7) THEN ! IF LEFT HALF OF BYTE
BEGIN ! IS 6 OR 7 (BASE 10),
S^TERM^BUF[I] := S^RCV^BUF[I] LAND %337; ! CHANGE BIT SO LEFT
END ! HALF OF BYTE IS 4 OR 5,
ELSE S^TERM^BUF[I] := S^RCV^BUF[I]; ! ELSE LEAVE IT ALONE.
END; ! FOR
END; ! SUBPROC
?PAGE
!===========================================================================
! Device^Handler Procedure MAIN ENTRY POINT begins here
!===========================================================================
WHILE (1) DO
BEGIN
@RCV^BUF := GETEXTPOOL(10,BUF^SIZE); ! FROM EXT BUFFER POOL,
IF @RCV^BUF = 0D THEN CALL PROCESS_DEBUG_; ! (BYTE ADDRESSABLE)
@E^RCV^BUF := @RCV^BUF;
TAKE^OVER := FALSE;
CALL ^READUPDATEX(DOLR^RCV,RCV^BUF,BUF^SIZE);
IF <> THEN CALL PROCESS_DEBUG_;
CALL ^AWAITIOX(DOLR^RCV,@RCV^BUF,RQSTR^WT^CT);
IF = THEN ! (CCE) NORMAL COMPLETION !
IF d^plus^enabled THEN
!dxcd
BEGIN
!dxcd
@get^rcv^info := GETLOCALPOOL(0,
!dxcd
($LEN(getreceiveinfo^template)/2));
!dxcd
rcv^error := ^FILE_GETRECEIVEINFO_(get^rcv^info);
!dxcd
IF rcv^error THEN CALL PROCESS_DEBUG_;
!dxcd
RQST^TYPE := get^rcv^info.op;
!dxcd
RQSTR^RD^CT := get^rcv^info.cnt;
!dxcd
CALL PUTLOCALPOOL(0, get^rcv^info);
!dxcd
END
!dxcd
ELSE
!dxcd
BEGIN
CALL ^RECEIVEINFO(,,,,RQSTR^RD^CT,RQST^TYPE);
IF <> THEN CALL PROCESS_DEBUG_;
END
ELSE
IF > THEN
!-------------------------------!