*DECK TEXTIPL
PROC TEXTIPL;
*CALL COPYRITE CDCNET - COPYRIGHT CONTROL DATA. 1992.
# TITLE TEXTIPL - SYMPL TEXT FOR THE IP SOCKET LIBRARY #
CONTROL STEXT;
BEGIN # TEXTIPL #
#
**** TEXTIPL SYMPL TEXT FOR THE IP SOCKET LIBRARY
*
* THIS PROCEDURE GENERATES A SYMPL TEXT FOR COMPILING THE IP
* SOCKET LIBRARY FOR TCP AND UDP INTERFACES.
* IT CONTAINS DEFINITIONS OF SYMBOLS, PARAMETERS, COMMON BLOCKS,
* ETC THROUGHOUT THE PROGRAM.
*
*
#
*CALL COPYRITC
#
**** MISCELLANEOUS DEFINITIONS
#
DEF SM$ # 0 #; # SUPERVISORY MESSAGE LIST NUMB #
DEF DATA$ # 1 #; # DATA MESSAGE LIST NUMBER #
DEF ACNSIZE$ # 7 #; # ACN CONNECTION BLOCK SIZE #
DEF MINACN$ # 1 #; # MINIMUM NAM CONNECTION NUMBER #
DEF MAXACN$ # 5 #; # MAXIMUM NAM CONNECTION NUMBER #
DEF INPSIZE$ # 273 #; # SIZE OF INPUT BUFFER #
DEF OUTSIZE$ # 273 #; # SIZE OF OUTPUT BUFFER #
DEF NORMWAIT$ # 2 #; # NORMAL NETWAIT TIME #
DEF NOWAIT$ # 1 #; # NO WAIT REQUESTED NETWAIT TIME#
DEF CONNECTABN$ # 1 #; # CON/ACRQ ABN VALUE #
DEF BLOCKWAIT$ # 60 #; # DEFAULT BLOCKING VALUE 60 SEC #
DEF HOSTNAME$ # "LOCALHOST_" #; # LOCAL HOST NAME IN TCPHOST FIL#
DEF HOSTSIZE$ # 30 #; # MAXIMUM HOST NAME SIZE #
DEF NLFILE #O"16220634000000000000"#;# LOG FILE NAME #
#
**** DISPLAY CHARACTERS
#
DEF CHARA$ # "A" #; # UPPER CASE "A" #
DEF CHARZ$ # "Z" #; # UPPER CASE "Z" #
DEF CHARNUL$ # 0 #; # NULL CHARACTER #
DEF CHARNSIGN$ # O"60" #; # NUMBER SIGN #
DEF CHARSP$ # " " #; # SPACE CHARACTER #
DEF CHAR0$ # "0" #; # CHARACTER "0" #
DEF CHAR9$ # "9" #; # CHARACTER "9" #
DEF ESC76$ # O"76" #; # ESCAPE CHARACTER - OCTAL 76 #
#
**** TCPHOST FILE INFORMATION.
#
DEF TCPHFN$ # "TCPHOST" #; # TCP HOST FILE NAME #
#
**** SOCKET APPLICATION ABORT CODES
#
DEF ERRLGL$ # 0 #; # ERR/LGL RECEIVED #
DEF NAKERR$ # 1 #; # FC/NAK RECEIVED #
DEF NCONACRQA$ # 2 #; # UNEXPECTED CON/ARCQ/A #
DEF NCONCB$ # 3 #; # UNEXPECTED CON/CB/R #
DEF NCONENDN$ # 4 #; # UNEXPECTED CON/END/N #
DEF NCONREQ$ # 5 #; # INTERNAL ERROR #
DEF NFCACK$ # 6 #; # UNEXPECTED FC/ACK #
DEF NFCINIT$ # 7 #; # UNEXPECTED FC/INIT/R #
DEF NDATA$ # 8 #; # UNEXPECTED DATA #
DEF NINVALID$ # 9 #; # INVALID DATA OR UDP VERSION #
DEF INTERROR$ # 10 #; # INTERNAL ERROR #
DEF NLAST$ # 10 #; # LAST EXIT CONDITION #
#
**** NAM NETON STATUS
#
STATUS NETON$STATUS # NETON STATUS LIST #
SUCCESS, # NETON SUCCESSFUL #
UNAVAILABLE, # NAM UNAVAILABLE #
DUPLICATE, # DUPLICATE NETON ATTEMPT #
DISABLED, # APPLICATION DISABLED #
HSTNOTFOUND; # HOST NOT FOUND IN TCPHOST FILE#
#
**** PROTOCOL TYPES SUPPORTED BY THE SOCKET LIBRARY
#
STATUS PTYPE
SOCKETUDP, # UDP PACKET PROTOCOL #
SOCKETTCP; # TCP STREAM PROTOCOL #
#
**** SOCKET CONNECTION STATE TO THE GATEWAY.
#
STATUS CONNECTSTATE
IDLE, # GATEWAY CONN NOT ESTABLISHED #
CONNECTED, # CONNECT EST, CON/REQ/R RECEIVD#
OPEN, # CONNECTION OPEN, FC/INIT REC #
BOUND, # SOCKET BOUND TO A PORT #
CLOSING, # SENT THE CON/END/R MESSAGE #
CLOSED; # THE SOCKET IS CLOSED #
#
**** SOCKET ROUTINES RETURN STATUS CODES
#
STATUS SOCKSTAT
OK, # COMPLETE NO ERROR #
WAIT, # CONNECTION INIT IN PROCESS #
ABORT, # CONNECTION ABORTED #
NODATA, # NO SM/DATA AVAILABLE #
FLOWCTRL, # DATA NOT SENT, AT ABL #
INVALIDST, # INVALID STATE FOR THE REQUEST #
CONFIGERR, # SYSTEM CONFIGURED INCORRECTLY #
UNAVGATE, # TCP/IP GATEWAY UNAVAILABLE #
REQFAIL; # REQUEST FAILED #
#
**** TCP/IP UDP GATEWAY INTERFACE DECLARATIONS
*
* THE FOLLOWING CONTAIN CONSTANT AND STATUS DECLARATIONS RELATED
* TO THE IP SOCKET LIBRARY INTERFACE TO THE CDCNET TCP/IP GATEWAY.
*
#
DEF BASENAME$ # "TCPIPGW" #; # BASE TCPIP GW NAME #
DEF ADDSIZE$ # 4 #; # IP ADDRESS RECORD SIZE #
DEF UDPHEADSZ$ # 16 #; # BYTES IN A UDP HEADER RECORD #
#
**** TCP/IP UDP GATEWAY INTERFACE REQUEST/INDICATIONS
#
DEF CALLREQ$ # X"10" #; # UDP CALL REQUEST #
DEF DATAREQ$ # X"11" #; # DATA REQUEST, NO DESTINATION #
DEF DESTREQ$ # X"12" #; # DATA REQUEST WITH DESTINATION #
DEF DATAIND$ # X"13" #; # DATA INDICATION FROM THE GW #
DEF CALLRES$ # X"14" #; # CALL RESPONSE #
DEF UDPVERS$ # X"2" #; # UDP PROTOCOL VERSION #
STATUS IP$FIU # IP ADDRESS FIELDS IN USE #
NONE,
NETWORK,
HOST,
BOTH;
#
**** GW$INT$COM - GATEWAY INTERFACE COMMON AREA
*
* THIS LABELLED COMMON BLOCK CONTAINS THE ARRAY AND BASED ARRAY
* AREAS USED TO COMMUNICATE WITH THE GATEWAY.
*
#
COMMON GW$INT$COM;
BEGIN # GW$INT$COM #
ARRAY TGW$GWNAME [00:00] S(1);
BEGIN
ITEM TGW$BASENAME C(00,00,07); # BASE DEFAULT GATEWAY NAME #
ITEM TGW$MID C(00,42,03); # MACHINE IDENTIFIER #
END
ARRAY UDP$HEAD$REC [00:00] S(UDPHEADSZ$);
BEGIN
ITEM UDP$HEADER U(00,52,08); # UDP DATAGRAM HEADER REQUEST #
ITEM UDP$VERSION U(01,52,08); # UDP VERSION #
ITEM UDP$NOTUSED U(02,52,08); # SPARE BYTE #
ITEM UDP$FIU U(03,52,08); # IP ADDRESS FIELDS IN USE #
END
ARRAY REC$UDP [00:00] S(2);
BEGIN # FIRST 2 BYTES OF RECEIVE HEAD #
ITEM REC$REQ U(00,52,08); # UDP DATAGRAM HEADER REQUEST #
ITEM REC$VER U(01,52,08); # UDP VERSION #
END
ARRAY HST$ADDR [00:00] S(ADDSIZE$);;# LOCAL HOST IP ADDRESS #
BASED ARRAY IP$ADDR$REC [00:00] S(ADDSIZE$);
BEGIN
ITEM IP$IPFIU U(00,52,08); # FIELDS IN USE #
ITEM IP$IPNET U(01,28,32); # NETWORK (O..0FFFFFFH) #
ITEM IP$IPHOST U(02,28,32); # HOST (O..0FFFFFFH) #
ITEM IP$PIU B(03,35,01); # PORT IN USE #
ITEM IP$PORT U(03,36,24); # PORT NUMBER #
ITEM IP$UDPORT U(03,28,32); # IN USE/PORT NUMBER #
END
END # GW$INT$COM #
#
**** FMTCOM - FILE MANAGEMENT COMMON BLOCK.
*
* THIS COMMON BLOCK CONTAINS THE DEFINITIONS REQUIRED TO INTERACT
* WITH THE NOS PERMANANT FILE SYSTEM.
*
#
#
**** FET/CIO BUFFER DEFINITIONS.
#
DEF FBUFSIZ$ # 128 #; # CIO BUFFER SIZE = 2 PRUS #
DEF FETSIZ$ # 16 #; # SIZE OF FET #
DEF WORKSIZ$ # 24 #; # SIZE OF WORKING BUFFER #
COMMON FMTCOM;
BEGIN # FMTCOM #
#
**** FET - FILE ENVIRONMENT TABLE.
*
* THE FET BUFFER CONTAINS THE 16-WORD FET DEFINITION FOR READING
* THE TCPHOST FILE.
#
ARRAY FET [00:00] S(FETSIZ$);
BEGIN
ITEM FET$WORD U(00,00,60); # FULL WORD REFERENCE #
ITEM FET$LFN C(00,00,07); # LOCAL FILE NAME #
ITEM FET$LFNU U(00,00,42); # LFN AS NUMERIC #
ITEM FET$STAT U(00,42,18); # RETURNED STATUS CODE #
ITEM FET$LEVN U(00,42,04); # EOR/EOF LEVEL NUMBER #
ITEM FET$AT U(00,46,05); # ABNORMAL TERMINATION CODE #
ITEM FET$FSTAT U(00,48,11); # REPLY FROM *STATUS* MACRO #
ITEM FET$CODE U(00,51,09); # RETURN CODE #
ITEM FET$COMPB B(00,59,01); # COMPLETION BIT #
ITEM FET$FET1 U(01,00,60); # FULL WORD REFERENCE #
ITEM FET$DT C(01,00,02); # DEVICE TYPE #
ITEM FET$DTU U(01,00,12); # DEVICE TYPE INTEGER #
ITEM FET$RANF B(01,12,01); # RANDOM ACCESS FLAG #
ITEM FET$UP B(01,14,01); # USER PROCESSING FLAG #
ITEM FET$EP B(01,15,01); # ERROR PROCESSING #
ITEM FET$RT B(01,16,01); # REAL TIME PROCESSING #
ITEM FET$A B(01,21,01); # CCESS LEVEL PROCESSING #
ITEM FET$FB B(01,23,01); # FLUSH BIT #
ITEM FET$LEN U(01,36,06); # LENGTH OF FET-5 #
ITEM FET$FIRST U(01,42,18); # FIRST POINTER #
ITEM FET$IN U(02,42,18); # IN POINTER #
ITEM FET$OUT U(03,42,18); # OUT POINTER #
ITEM FET$FET4 U(04,00,60); # FULL WORD REFERENCE #
ITEM FET$AL U(04,22,03); # FULL WORD REFERENCE #
ITEM FET$LIMIT U(04,42,18); # LIMIT POINTER #
ITEM FET$FET5 U(05,00,60); # FULL WORD REFERENCE #
ITEM FET$CAT U(05,30,30); # SECURITY CATEGORIES #
ITEM FET$FET6 U(06,00,60); # FULL WORD REFERENCE #
ITEM FET$PFN C(08,00,07); # PERMANNET FILE NAME #
ITEM FET$SR U(08,42,06); # SPECIAL REQUEST #
ITEM FET$CT U(08,48,06); # FILE CATEGORY #
ITEM FET$M U(08,54,06); # FILE ACCESS MODE #
ITEM FET$UN C(09,00,07); # ALTERNATE USER NAME #
ITEM FET$UNU U(09,00,42); # ALTERNATE USER NAME (NUM) #
ITEM FET$DN U(09,42,06); # DEVICE NUMBER FOR CATLIST #
ITEM FET$S U(09,36,24); # NUMBER OF PRUS FOR FILE #
ITEM FET$PW C(10,00,07); # FILE PASSWORD #
ITEM FET$PWU U(10,00,42); # FILE PASSWORD AS INTEGER #
ITEM FET$ERAD U(10,42,18); # ERROR MESSAGE ADDRESS #
ITEM FET$UCW U(11,00,60); # USER CONTROL WORD #
ITEM FET$PN C(12,00,07); # PACKNAME #
ITEM FET$PNU U(12,00,42); # PACKNAME AS INTEGER #
ITEM FET$UNIT U(12,48,12); # NUMBER OF UNITS ON DEVICE #
ITEM FET$NFN C(13,00,07); # NEW FILE NAME #
ITEM FET$XT U(13,42,18); # EXPIRATION TERM #
ITEM FET$PR U(15,00,03); # PREFERRED RESIDENCE #
ITEM FET$BR U(15,03,03); # BACKUP REQUIREMENT #
ITEM FET$SS U(15,06,06); # SUBSYSTEM #
ITEM FET$AC U(15,12,02); # ALTERNATE USER CATLIST #
END
#
**** CIOBUF - CIRCULAR I/O BUFFER.
*
#
ARRAY CIOBUF [00:00] S(FBUFSIZ$);
BEGIN
ITEM CIO$WORD U(00,00,60);
END
#
**** WORKBUF - FILE I/O WORKING BUFFER FOR DATA TRANSFER.
*
#
ARRAY WORKBUF [00:00] S(WORKSIZ$);
BEGIN
ITEM WORK$CHAR C(00,00,240);
END
END # FMTCOM #
#
**** NETWORK SUPERVISORY MESSAGE DEFINITIONS
*
* SUPERVISORY MESSAGE DEFINITIONS ARE SUPPLIED BY THE COMMON
* DECKS: SMAPPFC, SMAPDEF, MISCOM.
#
*CALL SMAPPFC
*CALL SMAPDEF
*CALL MISCOM
#
**** BASESM$COM - BASED ARRAY POINTERS.
*
* THIS LABELLED COMMON BLOCK CONTAINS THE BASED ARRAY POINTERS
* WHICH ARE USED DURING SUPERVISORY MESSAGE PROCESSING.
*
#
COMMON BASESM$COM;
BEGIN # BASESM$COM #
#
**** ABH - APPLICATION BLOCK HEADER DEFINITION.
*
* THE ABH FIELD DECLARATIONS ARE SUPPLIED BY THE COMMON DECK
* *HEADER*.
#
BASED ARRAY ABH [00:00] S(1);
BEGIN
*CALL HEADER
END
#
**** APSM - SUPERVISORY MESSAGES DEFINITION.
*
* THE SUPERVISORY MESSAGE FIELD DECLARATIONS ARE SUPPLIED
* BY THE COMMON DECKS *SUPMSG* AND *SMAPPL*.
#
BASED ARRAY APSM [00:00] S(19);
BEGIN
*CALL SUPMSG
*CALL SMAPPL
END
END # BASESM$COM #
#
**** SOCKET$COM - COMMON STORAGE AREA FOR THE SOCKET LIBRARY.
*
* THIS LABELLED COMMON BLOCK CONTAINS THE ACTUAL STORAGE AREA
* REQUIRED BY THE SOCKET LIBRARY DURING PROCESSING.
*
#
COMMON SOCKET$COM;
BEGIN # SOCKET$COM #
ITEM IPMC I; # LOGGING MESSAGE COUNT #
ITEM IPHOSTUN C(10); # TCPHOST USERNAME #
ITEM CURACN U; # CURRENT ACN NUMBER #
ITEM NUMACN U; # NUMBER OF OUTSTANDING CONNECTS#
ITEM BLOCK B; # WAIT FOR COMPLETION #
ITEM NDLFILE I; # NETWORK DEBUG LOG FILE #
ITEM DFLAG B; # DEBUG FLAG #
#
**** NSUP - NAM SUPERVISORY STATUS WORD
*
* NSUP IS THE WORD INTO WHICH NAM STORES THE STATE OF
* NETWORK COMMUNICATIONS.
*
#
ARRAY NSUP [00:00] S(1);
BEGIN
ITEM NSUP$W U(00,00,60); # FULL WORD REFERNECE #
ITEM NSUP$C B(00,00,01); # COMPLETION BIT #
ITEM NSUP$N B(00,02,01); # NAM AVAILABLE BIT #
ITEM NSUP$D B(00,03,01); # DATA MESSAGE AVAILABLE BIT #
ITEM NSUP$DU U(00,03,01); # DATA MESSAGE AVAILABLE BIT #
ITEM NSUP$S B(00,04,01); # SUPERVISORY MESSAGE AVAIL BIT #
ITEM NSUP$SU U(00,04,01); # SUPERVISORY MESSAGE AVAIL BIT #
ITEM NSUP$MC U(00,30,30); # DEBUG LOG OPER MESSAGE COUNT #
END
#
**** IABH - INPUT APPLICATION BLOCK HEADER
*
* IABH IS THE WORD INTO WHICH NAM STORES THE APPLICATION BLOCK
* HEADER FOLLOWING A *NETGETL* OPERATION.
*
#
ARRAY IABH [00:00] S(1);
BEGIN
ITEM IABH$WRD U(00,00,60); # FULL WORD REFERENCE #
END
#
**** DABH - OUTPUT DATA APPLICATION BLOCK HEADER
*
* DABH IS THE WORD CONTAINING THE APPLICATION BLOCK HEADER WHICH
* NAM INTERPRETS AFTER A *NETPUT* OPERATION FOR OUTGOING DATA TO
* A MDI.
* FIXED FIELDS IN THE ABH ARE SET UP AT INITIALIZATION TIME.
*
#
ARRAY DABH [00:00] S(1);
BEGIN
ITEM DABH$WRD U(00,00,60); # FULL WORD REFERENCE #
END
#
**** SABH - OUTPUT SUPERVISORY MESSAGE APPLICATION BLOCK HEADER
*
* SABH IS THE WORD CONTAINING THE APPLICATION BLOCK HEADER WHICH
* NAM INTERPRETS AFTER A *NETPUT* OPERATION OF AN OUTGOING
* ASYNCHRONOUS SUPERVISORY MESSAGE.
* FIXED FIELDS IN THE ABH ARE SET UP AT INITIALIZATION TIME.
*
#
ARRAY SABH [00:00] S(1);
BEGIN
ITEM SABH$WRD U(00,00,60); # FULL WORD REFERENCE #
END
#
**** BWT - BLOCK WAIT TIME
*
* BWT IS THE WORDS CONTAINING THE TIME OF DAY USED TO DETERMINE
* THE LENGTH OF TIME FOR THE IP SOCKET ROUTINES TO BLOCK WAITING
* FOR A REQUEST TO BE PROCESSED.
#
ARRAY BWT$TIME [00:00] S(2);
BEGIN
ITEM BWT$WORD U(00,00,60); # FULL WORD REFERENCE #
ITEM BWT$SECONDS U(00,00,24); # SECOND TIMER #
ITEM BWT$MILLI U(00,24,36); # MILLISECOND TIMER #
ITEM BWT$EXPIRE U(01,00,24); # SECOND EXPIRE TIME #
END
#
**** ISS - INITIATING SOCKET STATUS
*
* ISS IS THE WORD CONTAINING THE SOCKET STATUS USED THROUGH THE
* OPEN SOCKET PROCEDURE TO DETERMINE THE COMPLETION OF THE OPEN
* SOCKET PROCESS.
#
ARRAY ISS$CONNECT [00:00] S(1);
BEGIN
ITEM ISS$WORD U(00,00,60); # FULL WORD REFERENCE #
ITEM ISS$STATUS S:SOCKSTAT(00,00,03); # CURRENT SOCKET STATUS #
ITEM ISS$ACN U(00,48,12); # NEW CONNECTION ACN #
END
#
**** ACNST - APPLICATION CONNECTION SOCKET TABLE.
*
* ACNST IS THE TABLE USED TO KEEP TRACK OF THE SOCKET CONNECTIONS.
*
#
ARRAY ACN$ST [1:MAXACN$] S(ACNSIZE$);
BEGIN
ITEM ACN$WORD0 U(00,00,60); # FULL WORD REFERENCE #
ITEM ACN$ACN U(00,00,12); # CONNECTION NUMBER #
ITEM ACN$PTYPE S:PTYPE(00,12,02); # PROTOCOL UDP OR TCP #
ITEM ACN$CONTROL B(00,14,01); # CONTROL ACN FOR TCP ONLY #
ITEM ACN$STATE S:CONNECTSTATE(00,15,03);# CURRENT CONNECT STATE#
ITEM ACN$DATACN U(00,18,12); # DATA CONNECTION FOR TCP #
ITEM ACN$CNTRLACN U(00,18,12); # CONTROL ACN IF DATA CONN #
ITEM ACN$DBZ U(00,30,12); # DOWNLINE BLOCK SIZE #
ITEM ACN$ABL U(00,42,03); # APPLICATION BLOCK LIMIT #
ITEM ACN$OBC U(00,45,03); # OUTSTANDING BLOCK COUNT #
ITEM ACN$CONNECT B(00,58,01); # SOCKET CONNECTED TO NAM #
ITEM ACN$ABORT B(00,59,01); # CON/CB RECEIVED #
ITEM ACN$ABN U(01,00,12); # CURRENT APPL BLOCK NUMBER#
ITEM ACN$DATAV B(01,24,01); # DATA AVAILABLE IN BUFFER #
ITEM ACN$MORE B(01,25,01); # DATA IS A BLK BLOCK #
ITEM ACN$DATALNTH U(01,30,12); # BYTES IN RECEIVED BUFFER #
ITEM ACN$BUFFER U(01,42,18); # DATA BUFFER POINTER #
ITEM ACN$SIPADDR U(02,00,60); # SOURCE IP ADDRESS LOC #
ITEM ACN$SIPFIU S:IP$FIU(02,57,03); # FIELDS IN USE #
ITEM ACN$SIPNET U(03,36,24); # NETWORK (O..0FFFFFFH) #
ITEM ACN$SIPHOST U(04,36,24); # HOST (O..0FFFFFFH) #
ITEM ACN$SUDPIU B(05,35,01); # PORT IN USE #
ITEM ACN$SUDPORT U(05,36,24); # PORT (O..0FFFFH) #
ITEM ACN$SIUPORT U(05,28,32); # IN USE/PORT #
ITEM ACN$WAITIME U(06,48,09); # BLOCK TIME IN SECONDS #
ITEM ACN$BLOCK B(06,59,01); # SOCKET BLOCKING #
END
#
**** INPUT BUFFER.
*
* THE INPUT BUFFER IS USED FOR RECEIVING DATA FROM THE NETWORK.
*
#
ITEM INPLENGTH I; # INPUT LENGTH IN OCTETS #
ARRAY INPBUF [00:INPSIZE$] S(1); # INPUT BUFFER #
BEGIN
ITEM INP$WORD U(00,00,60);
END
#
**** OUTPUT BUFFER.
*
* THE OUTPUT BUFFER IS USED FOR WRITING TO A FILE AND SENDING
* DATA TO THE NETWORK.
*
#
ITEM OUTLENGTH I; # OUTPUT LENGTH IN OCTETS #
ARRAY OUTBUF [00:OUTSIZE$] S(1); # OUTPUT BUFFER #
BEGIN
ITEM OUT$WORD U(00,00,60);
END
END # SOCKET$COM #
COMMON QUEUE$COM;
BEGIN # QUEUE$COM #
#
**** INPUT QUEUE STORAGE AREA.
*
* THIS ARRAY HOLDS ONE BLOCK OF DATA/CONNECTION TO BE PASSED TO
* AN APPLICATION WHEN REQUESTED. ALSO CONTAINS A BASED ARRAY
* POINTER USED TO MOVE DATA INTO THE ARRAY.
*
#
BASED ARRAY REA$BUF [00:INPSIZE$] S(1);
BEGIN
ITEM REA$WORD U(00,00,60); # FULL WORD REFERENCE #
END
ARRAY QUE$BUF [00:INPSIZE$,MINACN$:MAXACN$] S(1);
BEGIN
ITEM QUE$WORD U(00,00,60);
END
END # QUEUE$COM #
END # TEXTIPL #
TERM