*DECK TEXTFFS 
      PROC TEXTFFS; 
*CALL COPYRITE
# TITLE TEXTFFS - SYMPL TEXT FOR FTP FILE SERVER.                      #
  
      CONTROL STEXT;
  
      BEGIN                            # TEXTFFS                       #
  
# 
**    TEXTFFS  SYMPL TEXT FOR THE FTP FILE SERVER.
* 
*     A. LIM                           88/01/08 
* 
*     THIS PROCEDURE GENERATES A SYMPL TEXT FOR COMPILING THE 
*     FTP FILE SERVER - FTPS. 
*     IT CONTAINS DEFINITIONS OF SYMBOLS, PARAMETERS, COMMON BLOCKS ETC 
*     USED THROUGHOUT THE FTPS PROGRAM. 
* 
# 
*CALL COPYRITC
*CALL COMPSRL 
# 
**    CODES FOR ENDING FTPS 
# 
      DEF NERRLGL        #    0 #;     # ERR/LGL RECEIVED              #
      DEF NNAKERR        #    1 #;     # FC/NAK RECEIVED IN DEBUG MODE #
      DEF NCONCB         #    2 #;     # INVALID CON/CB RECEIVED       #
      DEF NCONENDN       #    3 #;     # INVALID CON/END/N RECEIVED    #
      DEF NCONREQ        #    4 #;     # INVALID CON/REQ RECEIVED      #
      DEF NFCACK         #    5 #;     # INVALID FC/ACK(NAK) RECEIVED  #
      DEF NFCINIT        #    6 #;     # INVALID FC/INIT RECEIVED      #
      DEF NDATA          #    7 #;     # DATA RECEIVED IN WRONG STATE  #
      DEF NCONACRQA      #    8 #;     # INVALID CON/ACRQ/A RECEIVED   #
      DEF NIERROR        #    9 #;     # FTPS INTERNAL ERROR           #
      DEF NNOHF          #    10#;     # NO HOST NAME FILE / HOST NAME #
      DEF NNOIPA         #    11#;     # NO ENTRY FOR IP ADDRESS       #
      DEF NINVDCT        #    12#;     # INVALID CONNECTION TYPE RECD  #
      DEF NINITCN        #    13#;     # INITIATE CN RECD IN WRONG STAT#
      DEF NENDCN         #    14#;     # END C/N RECD IN WRONG STATE   #
      DEF NSENDATA       #    15#;     # SEND DATA RECD IN WRONG STATE #
      DEF NSUPDATA       #    16#;     # SUSPEND DATA RECD IN WRONG STA#
      DEF NREDATA        #    17#;     # RESUME DATA RECD IN WRONG STAT#
      DEF NLAST          #    17#;     # LAST EXIT CONDITION           #
# 
**    POINTER TABLE INDEXES.
# 
      DEF PRPV           #   01 #;     # REPRIEVE PARAMETER BLOCK      #
      DEF PZDN           #   02 #;     # *ZZZZZDN* FET                 #
      DEF PBAP           #   03 #;     # BASED ARRAY POINTERS          #
      DEF PNSUP          #   04 #;     # NAM NSUP WORD                 #
      DEF PINPB          #   05 #;     # INCOMING DATA OR SM BUFFER    #
      DEF POUTB          #   06 #;     # OUTGOING DATA OR SM BUFFER    #
      DEF PCUR           #   07 #;     # CURRENT COMMON VARIABLES      #
      DEF PMAN           #   08 #;     # TABLE MANAGER VARIABLES       #
      DEF PTBL           #   09 #;     # MANAGED TABLES AREA           #
      DEF PTMR           #   10 #;     # TIMER TABLE                   #
      DEF PACN           #   11 #;     # ACN TABLE                     #
      DEF PMBT           #   12 #;     # MBT TABLE                     #
      DEF PPARMS         #   13 #;     # PARAMETER LIST BLOCK          #
      DEF PIND           #   15 #;     # INDICATION COMMON BLOCK       #
      DEF PREQ           #   16 #;     # REQUEST COMMON BLOCK          #
      DEF PCTB           #   17 #;     # CTB TABLE                     #
      DEF PTRLEN         #   17 #;     # LENGTH OF POINTER TABLE       #
# 
**    ASCII CHARACTER VALUES IN HEXADECIMAL.
# 
  
      DEF ASCIA          #X"41"#;      # CAPITAL A                     #
      DEF ASCIASTER      #X"2A"#;      # ASTERISK                      #
      DEF ASCIAPOSTP     #X"27"#;      # APOSTROPHE                    #
      DEF ASCICOMMA      #X"2C"#;      # COMMA                         #
      DEF ASCICR         #X"0D"#;      # CARRIAGE RETURN               #
      DEF ASCIDBLQU      #X"22"#;      # DOUBLE QUOTES                 #
      DEF ASCIDOLLAR     #X"24"#;      # DOLLAR SIGN                   #
      DEF ASCIE          #X"45"#;      # CAPITAL E                     #
      DEF ASCIEQUAL      #X"3D"#;      # EQUAL SIGN                    #
      DEF ASCIII         #X"49"#;      # CAPITAL I                     #
      DEF ASCILA         #X"61"#;      # LITTLE A                      #
      DEF ASCILBRACE     #X"7B"#;      # LEFT BRACE                    #
      DEF ASCILE         #X"65"#;      # LITTLE E                      #
      DEF ASCILF         #X"0A"#;      # LINE FEED                     #
      DEF ASCILPAREN     #X"28"#;      # LEFT PARENTHESIS              #
      DEF ASCILZ         #X"7A"#;      # LITTLE Z                      #
      DEF ASCIMINUS      #X"2D"#;      # MINUS SIGN                    #
      DEF ASCININE       #X"39"#;      # NUMBER NINE                   #
      DEF ASCINSIGN      #X"23"#;      # NUMBER SIGN                   #
      DEF ASCINUL        #X"00"#;      # NULL                          #
      DEF ASCIPERIOD     #X"2E"#;      # PERIOD                        #
      DEF ASCIPLUS       #X"2B"#;      # PLUS SIGN                     #
      DEF ASCIQUEST      #X"3F"#;      # QUESTION MARK                 #
      DEF ASCIRBRACE     #X"7D"#;      # RIGHT BRACE                   #
      DEF ASCIRPAREN     #X"29"#;      # RIGHT PARENTHESIS             #
      DEF ASCISEMI       #X"3B"#;      # SEMICOLON                     #
      DEF ASCISPACE      #X"20"#;      # SPACE                         #
      DEF ASCIUS         #X"1F"#;      # UNIT SEPARATOR                #
      DEF ASCIX          #X"58"#;      # CAPITAL X                     #
      DEF ASCIZ          #X"5A"#;      # CAPITAL Z                     #
      DEF ASCIZERO       #X"30"#;      # NUMBER ZERO                   #
# 
**    INDICES FOR FIELDS IN A QUEUE ENTRY 
# 
      DEF SIZ$           #    0 #;     # INDEX TO ENTRY SIZE           #
      DEF ABH$           #    1 #;     # INDEX TO APPLICATION BLOCK HDR#
      DEF TXT$           #    2 #;     # INDEX TO TEXT IN ENTRY        #
# 
**    INDICES FOR FIELDS IN AN ACN ENTRY
# 
      DEF TS$            #    5 #;     # TCP SOURCE ADDRESS            #
      DEF TD$            #   10 #;     # TCP DESTINATION ADDRESS       #
# 
**    FTPS TERMINATION CODES
# 
      DEF NORMAL         #    0 #;     # NORMAL END    NORMAL   = FALSE#
      DEF ABNORMAL       #    1 #;     # ABNORMAL END  ABNORMAL = TRUE #
# 
**    DEFAULT TIMER VALUES: 
*       ROLLOUT TIMER 
*       MAXIMUM TIMER VALUE ALLOWED 
# 
      DEF ROLLTMR$       #    3 #;     # MININUM ROLLOUT TIMER         #
      DEF MAXTMR$ # O"37777777" #;     # MAXIMUM TIMER VALUE           #
# 
**    DEFAULT TIMER VALUES IN MILLISECONDS. 
# 
      DEF IOTMR$         #   10 #;     # WAIT TIME FOR I/O RECALL      #
      DEF NETTMR$        #   10 #;     # WAIT TIME FOR NETWORK RECALL  #
# 
**    MISCELLANEOUS DEFINITIONS 
# 
      DEF FLMUL         #O"1000"#;     # FIELD LENGTH MULTIPLE         #
      DEF MINACN$        #    1 #;     # MINIMUM CONNECTION NUMBER     #
      DEF MAXACNS$       #    3 #;     # MAXIMUM NO OF C/N (SERVER)    #
      DEF MAXACNC$       #    4 #;     # MAXIMUM NO OF C/N (CLIENT)    #
      DEF NUMRCN$        #    3 #;     # NUMBER OF ORIGINATING C/N     #
  
      DEF FTPS$          #    0 #;     # ENTRY POINT VALUE FOR SERVER  #
      DEF FTPC$          #    1 #;     # ENTRT POINT VALUE FOR CLIENT  #
      DEF FTPI$          #"FTPI"#;     # DISPLAY CODE HDR FOR CLIENT   #
  
      DEF PFM$           # TRUE #;     # PFM TEXT FOR RESPONSE MESSAGE #
      DEF NOPFM$         #FALSE #;     # NO PFM TEXT FOR RESPONSE MSG  #
  
      DEF SM$            #    0 #;     # NAM LIST NUMBER FOR SM        #
      DEF DATA$          #    1 #;     # NAM LIST NUMBER FOR DATA      #
      DEF RESTART$       #    1 #;     # NETOFF AND RESTART            #
      DEF NORESTART$     #    0 #;     # NETOFF AND NO RESTART         #
  
      DEF ACNSIZ$        #   16 #;     # SIZE OF CONNECTION ENTRY      #
      DEF NCONNECT$      #    3 #;     # MAX NUMBER OF CONNECTIONS =   #
                                       # CS + SAP + CTRL + DATA (0-3)  #
      DEF FCBC$          #    7 #;     # FLOW CTRL BLK COUNT (DEFAULT) #
      DEF FCBC$DATA      #    1 #;     # FLOW CTRL BLK COUNT (DATA C/N)#
      DEF HNAME$   #"LOCALHOST_"#;     # HOST NAME                     #
      DEF L1FN$    #  "ZZZZZN1" #;     # LEVEL 1 FILE NAME             #
      DEF NAME1$   #  "TCPIPGW" #;     # NAME1 FIELD OF CON/ACRQ/R     #
      DEF TCPHFN$  #  "TCPHOST" #;     # TCP HOST FILE NAME            #
      DEF INPSIZ$        #  273 #;     # SIZE OF INPUT BUFFER          #
      DEF OUTSIZ$        #  273 #;     # SIZE OF OUTPUT DATA BUFFER    #
      DEF DTBUFSIZ$      #  273 #;     # SIZE OF EACH DATA BUFFER      #
      DEF WORKSIZ$       #   63 #;     # SIZE OF WORKING BUFFER        #
      DEF TMRSIZ$        #    1 #;     # SIZE OF TIMER ENTRY           #
      DEF FETSIZ$        #   16 #;     # SIZE OF FET                   #
      DEF FBUFSIZ$       #  128 #;     # CIO BUFFER SIZE = 2 PRUS      #
      DEF MBTESIZ$       #  146 #;     # SIZE OF MBT ENTRY = ...       #
                                       # ...(FETSIZ$ + FBUFSIZ$ + 2)   #
      DEF MAXPARMS$      #    5 #;     # MAX NUMBER OF ENTRIES IN PARMS#
      DEF PARSIZ$        #    9 #;     # ENTRY SIZE OF PARAMETER BLOCK #
      DEF HNAMEL$        #   60 #;     # HOST NAME LENGTH IN OCTETS    #
      DEF STR$DIS        #    0 #;     # CHARACTER SET = DISPLAY CODE  #
      DEF STR$612        #    1 #;     # CHARACTER SET = 6/12 ASCII    #
# 
*     PARAMETER BLOCK INDICIES. 
# 
      DEF HN$            #    1 #;     # HARD CODED HOST NAME          #
      DEF HNF$           #    2 #;     # HOST NAME FROM HOST FILE      #
      DEF IPAA$          #    3 #;     # IP ADDRESS IN ASCII           #
      DEF IPADC$         #    4 #;     # IP ADDRESS IN DISPLAY CODE    #
      DEF IPAB$          #    5 #;     # IP ADDRESS IN BINARY          #
  
      DEF S$             #    8 #;     # INDEX OF PARAMETER SIZE       #
*CALL COMAIPI 
# 
*     INTERNAL AI/PI LENGTHS. 
# 
      DEF CSHDRWRD       #    2 #;     # LEN OF AI/PI HEADER CM WORDS  #
      DEF LCCNRPLEN      #   30 #;     # LEN (OCTETS) OF LOCAL-CONN RSP#
# 
*     FILE TYPE DEFINITIONS 
# 
      DEF TYPE$A         #"A"# ;       # ASCII TYPE                    #
      DEF TYPE$I         #"I"# ;       # IMAGE TYPE                    #
      DEF TYPE$N         #"N"# ;       # NON-PRINT                     #
  
# 
*     FILE MODE DEFINITIONS 
# 
      DEF MODE$S         #"S"# ;       # STREAM MODE                   #
  
# 
*     FILE STRUCTUE DEFINITIONS 
# 
      DEF STRU$F         #"F"# ;       # FILE STRUCTURE                #
  
# 
*     CHARACTER SET DESIGNATIONS. 
# 
      DEF CSD        #  "D" #;         # 6/6 DISPLAY, Z-BYTE TERM      #
      DEF CSA        #  "A" #;         # 6/12 ASCII, Z-BYTE TERM       #
      DEF CS8        #  "8" #;         # 8/12 ASCII, Z-BYTE TERM       #
      DEF CS8E       # "8E" #;         # 8/12 ASCII, CR-LF TERM        #
      DEF CS88       # "88" #;         # 8/8 ASCII, CR-LF TERM         #
  
# 
*     SIZES 
# 
  
      DEF BITSA8BYTE #  12  #;         # BITS PER 8/12 ASCII BYTE      #
      DEF BITSIBYTE  #   8  #;         # BITS PER IMAGE BYTE           #
      DEF BITSTBYTE  #   8  #;         # BITS PER TRANSMISSION BYTE    #
      DEF BITSACHAR  #   8  #;         # BITS PER ASCII CHARACTER      #
      DEF BITSDCCHAR #   6  #;         # BITS PER DISPLAY CODE CHAR.   #
  
# 
*     PFM ERRORS
# 
      DEF NEC        #  0 #;           # NO ERROR COMPLETION           #
      DEF FNF        #  2 #;           # FILE NOT FOUND                #
  
# 
*     DEFINITIONS FOR CIO USAGES. 
# 
  
      DEF PFMFETCD     #    0  #;     # PFM FET CURRENT DATE           #
      DEF PFMFETMDN    # O"77" #;     # PFM FET MAX DEVICE NUMBER      #
      DEF PFMFETDFB    #    24 #;     # PFM FET DATE FIRST BIT         #
      DEF PFMFETDLEN   #    18 #;     # PFM FET DATE LENGTH            #
      DEF PFMFETLEN    # O"20" #;     # PFM FET LENGTH                 #
      DEF PFMFETMXT    #O"7777"#;     # PFM FET MAX EXPIRATION TERM    #
      DEF PFMFETMXTS   #   "*" #;     # PFM FET MAX EXPIRATION SYMBOL  #
      DEF PFMFETXDOK   #     0 #;     # PFM FET EXPIRATION DATE OK     #
# 
**    ALTERNATE CATLIST - 'AC'
*     THE FOLLOWING DEFINITIONS DEFINE THE MAXIMUM NUMBER OF VALID
*     PARAMETER VALUES, THE MNEMONICS, AND THE CORRESPONDING
*     NUMERICAL VALUES OF THE MNEMONICS OF THE PARAMETER VALUES.
# 
  
      DEF ACMAX$     #  2 #;           # MAXIMUM AC VALUES             #
  
      DEF ACN$       #O"16000000000000000000"#;  # 'N' NOT PERMITTED   #
      DEF ACY$       #O"31000000000000000000"#;  # 'Y' PERMITTED       #
  
      DEF ACNN$      #  1  #;                    # AC NOT PERMITTED    #
      DEF ACNY$      #  2  #;                    # AC PERMITTED        #
  
# 
**    ACCESS LEVEL - 'AL' 
*     THE FOLLOWING DEFINITIONS DEFINE THE MAXIMUM NUMBER OF VALID
*     PARAMETER VALUES, THE MNEMONICS, AND THE CORRESPONDING
*     NUMERICAL VALUES OF THE MNEMONICS OF THE PARAMETER VALUES.
# 
  
      DEF ALMAX$     #  8 #;           # MAXIMUM AL VALUES             #
  
      DEF ALLVL0$    #O"14261433000000000000"#;  # 'LVL0' LEVEL 0      #
      DEF ALLVL1$    #O"14261434000000000000"#;  # 'LVL1' LEVEL1       #
      DEF ALLVL2$    #O"14261435000000000000"#;  # 'LVL2' LEVEL2       #
      DEF ALLVL3$    #O"14261436000000000000"#;  # 'LVL3' LEVEL3       #
      DEF ALLVL4$    #O"14261437000000000000"#;  # 'LVL4' LEVEL4       #
      DEF ALLVL5$    #O"14261440000000000000"#;  # 'LVL5' LEVEL5       #
      DEF ALLVL6$    #O"14261441000000000000"#;  # 'LVL6' LEVEL6       #
      DEF ALLVL7$    #O"14261442000000000000"#;  # 'LVL7  LEVEL7       #
  
      DEF ALNLVL0$   #  0 #;                     # LEVEL 0             #
      DEF ALNLVL1$   #  1 #;                     # LEVEL 1             #
      DEF ALNLVL2$   #  2 #;                     # LEVEL 2             #
      DEF ALNLVL3$   #  3 #;                     # LEVEL 3             #
      DEF ALNLVL4$   #  4 #;                     # LEVEL 4             #
      DEF ALNLVL5$   #  5 #;                     # LEVEL 5             #
      DEF ALNLVL6$   #  6 #;                     # LEVEL 6             #
      DEF ALNLVL7$   #  7 #;                     # LEVEL 7             #
  
# 
**    BACKUP REQUIREMENT - 'BR' 
*     THE FOLLOWING DEFINITIONS DEFINE THE MAXIMUM NUMBER OF VALID
*     PARAMETER VALUES, THE MNEMONICS, AND THE CORRESPONDING
*     NUMERICAL VALUES OF THE MNEMONICS OF THE PARAMETER VALUES.
# 
  
      DEF BRMAX$     #  3 #;           # MAXIMUM BR VALUES             #
  
      DEF BRN$       #O"16000000000000000000"#;  # 'N' NOT REQUIRED    #
      DEF BRY$       #O"31000000000000000000"#;  # 'Y' REQUIRED        #
      DEF BRMD$      #O"15040000000000000000"#;  # 'MD' MEDIA DEPENDENT#
  
      DEF BRNN$      #  1  #;                    # BR NOT REQUIRED    # 
      DEF BRNY$      #  2  #;                    # BR REQUIRED        # 
      DEF BRNMD$     #  3  #;                    # BR MEDIA DEPENDENT # 
  
# 
**    CATAGORY - 'CT' 
*     THE FOLLOWING DEFINITIONS DEFINE THE MAXIMUM NUMBER OF VALID
*     PARAMETER VALUES, THE MNEMONICS, AND THE CORRESPONDING
*     NUMERICAL VALUES OF THE MNEMONICS OF THE PARAMETER VALUES.
# 
  
      DEF CTMAX$     #  7 #;           # MAXIMUM CT VALUES             #
  
      DEF CTP$       #O"20000000000000000000"#;  # 'P' PRIVATE         #
      DEF CTPR$      #O"20220000000000000000"#;  # 'PR'                #
      DEF CTPRIVATE$ #O"20221126012405000000"#;  # 'PRIVATE'           #
      DEF CTS$       #O"23000000000000000000"#;  # 'S' SEMI PRIVATE    #
      DEF CTSPRIV$   #O"23202211260000000000"#;  # 'SPRIV'             #
      DEF CTPU$      #O"20250000000000000000"#;  # 'PU' PUBLIC         #
      DEF CTPUBLIC$  #O"20250214110300000000"#;  # 'PUBLIC'            #
  
      DEF CTNP$      #     O"40" #;              # PRIVATE             #
      DEF CTNS$      #     O"41" #;              # SEMI PRIVATE        #
      DEF CTNPU$     #     O"42" #;              # PUBLIC              #
  
# 
**    MODE - 'M'
*     THE FOLLOWING DEFINITIONS DEFINE THE MAXIMUM NUMBER OF VALID
*     PARAMETER VALUES, THE MNEMONICS, AND THE CORRESPONDING
*     NUMERICAL VALUES OF THE MNEMONICS OF THE PARAMETER VALUES.
# 
  
      DEF MMAX$      # 20 #;           # MAXIMUM M VALUES              #
  
      DEF MW$        #O"27000000000000000000"#;  # 'W' WRITE           #
      DEF MWRITE$    #O"27221124050000000000"#;  # 'WRITE'             #
      DEF MR$        #O"22000000000000000000"#;  # 'R' READ            #
      DEF MREAD$     #O"22050104000000000000"#;  # 'READ'              #
      DEF MA$        #O"01000000000000000000"#;  # 'A' APPEND          #
      DEF MAPPEND$   #O"01202005160400000000"#;  # 'APPEND'            #
      DEF ME$        #O"05000000000000000000"#;  # 'E' EXECUTE         #
      DEF MEXECUTE$  #O"05300503252405000000"#;  # 'EXECUTE'           #
      DEF MN$        #O"16000000000000000000"#;  # 'N' NULL            #
      DEF MNULL$     #O"16251414000000000000"#;  # 'NULL'              #
      DEF MM$        #O"15000000000000000000"#;  # 'M' MODIFY          #
      DEF MMODIFY$   #O"15170411063100000000"#;  # 'MODIFY'            #
      DEF MRM$       #O"22150000000000000000"#;  # 'RM' READ MODIFY    #
      DEF MREADMD$   #O"22050104150400000000"#;  # 'READMD'            #
      DEF MRA$       #O"22010000000000000000"#;  # 'RA' READ APPEND    #
      DEF MREADAP$   #O"22050104012000000000"#;  # 'READAP'            #
      DEF MU$        #O"25000000000000000000"#;  # 'U' UPDATE          #
      DEF MUPDATE$   #O"25200401240500000000"#;  # 'UPDATE'            #
      DEF MRU$       #O"22250000000000000000"#;  # 'RU' READ MODIFY    #
      DEF MREADUP$   #O"22050104252000000000"#;  # 'READUP'            #
  
      DEF MNW$       # O"40"#;                   # WRITE               #
      DEF MNR$       # O"41"#;                   # READ                #
      DEF MNA$       # O"42"#;                   # APPEND              #
      DEF MNE$       # O"43"#;                   # EXECUTE             #
      DEF MNN$       # O"44"#;                   # NEGATE              #
      DEF MNM$       # O"45"#;                   # MODIFY              #
      DEF MNRM$      # O"46"#;                   # READ MODIFY         #
      DEF MNRA$      # O"47"#;                   # READ APPEND         #
      DEF MNU$       # O"50"#;                   # UPDATE              #
      DEF MNRU$      # O"51"#;                   # READ UPDATE         #
  
# 
**    PREFERRED RESIDENCE - 'PR'
*     THE FOLLOWING DEFINITIONS DEFINE THE MAXIMUM NUMBER OF VALID
*     PARAMETER VALUES, THE MNEMONICS, AND THE CORRESPONDING
*     NUMERICAL VALUES OF THE MNEMONICS OF THE PARAMETER VALUES.
# 
  
      DEF PRMAX$     #  4 #;           # MAXIMUM PR VALUES             #
  
      DEF PRL$       #O"14000000000000000000"#;  # 'L' LOCKED TO DISK  #
      DEF PRD$       #O"04000000000000000000"#;  # 'D' DISK            #
      DEF PRM$       #O"15000000000000000000"#;  # 'M' CARTRIDGE       #
      DEF PRN$       #O"16000000000000000000"#;  # 'N' NO PREFERENCE   #
  
      DEF PRNL$      #   1 #;                    # LOCKED TO DISK      #
      DEF PRND$      #   2 #;                    # DISK                #
      DEF PRNM$      #   3 #;                    # CARTRIDGE           #
      DEF PRNN$      #   4 #;                    # NO PREFERENCE       #
  
# 
**    DEVICE TYPE - 'R' 
*     THE FOLLOWING DEFINITIONS DEFINE THE MAXIMUM NUMBER OF VALID
*     PARAMETER VALUES, AND THE MNEMONICS.
# 
  
      DEF RMAX$      # 17 #;           # MAXIMUM R VALUES              #
  
      DEF RDB$       #O"04020000000000000000"#;  # 'DB'                #
      DEF RDC$       #O"0403 000000000000000"#;  # 'DC'                #
      DEF RDD$       #O"04040000000000000000"#;  # 'DD'                #
      DEF RDE$       #O"04050000000000000000"#;  # 'DE'                #
      DEF RDI$       #O"04110000000000000000"#;  # 'DI'                #
      DEF RDJ$       #O"04120000000000000000"#;  # 'DJ'                #
      DEF RDK$       #O"04130000000000000000"#;  # 'DK'                #
      DEF RDL$       #O"04140000000000000000"#;  # 'DL'                #
      DEF RDM$       #O"04150000000000000000"#;  # 'DM'                #
      DEF RDP$       #O"04200000000000000000"#;  # 'DP'                #
      DEF RDQ$       #O"04210000000000000000"#;  # 'DQ'                #
      DEF RDV$       #O"04260000000000000000"#;  # 'DV'                #
      DEF RDW$       #O"04270000000000000000"#;  # 'DW'                #
      DEF RMT$       #O"15240000000000000000"#;  # 'MT'                #
      DEF RNE$       #O"16050000000000000000"#;  # 'NE'                #
      DEF RNT$       #O"16240000000000000000"#;  # 'NT'                #
      DEF RTT$       #O"24240000000000000000"#;  # 'TT'                #
  
      DEF RDDB$      # "DB" #;
      DEF RDDC$      # "DC" #;
      DEF RDDD$      # "DD" #;
      DEF RDDE$      # "DE" #;
      DEF RDDI$      # "DI" #;
      DEF RDDJ$      # "DJ" #;
      DEF RDDK$      # "DK" #;
      DEF RDDL$      # "DL" #;
      DEF RDDM$      # "DM" #;
      DEF RDDP$      # "DP" #;
      DEF RDDQ$      # "DQ" #;
      DEF RDDV$      # "DV" #;
      DEF RDDW$      # "DW" #;
      DEF RDMT$      # "MT" #;
      DEF RDNE$      # "NE" #;
      DEF RDNT$      # "NT" #;
      DEF RDTT$      # "TT" #;
  
# 
**    SPECIAL REQUEST - 'SR'
* 
# 
      DEF SRCE$      #       3 #;                # CLEAR FILE ERR CODE #
      DEF SRCP$      #       8 #;                # RESET CN AND PN     #
  
# 
**    SUBSYSTEM  - 'SS' 
*     THE FOLLOWING DEFINITIONS DEFINE THE MAXIMUM NUMBER OF VALID
*     PARAMETER VALUES, THE MNEMONICS, AND THE CORRESPONDING
*     NUMERICAL VALUES OF THE MNEMONICS OF THE PARAMETER VALUES.
# 
  
      DEF SSMAX$     # 14 #;           # MAXIMUM SS VALUES             #
  
      DEF SSNUL$     #O"16251400000000000000"#;  # 'NULL'              #
      DEF SSNULL$    #O"16251414000000000000"#;  # 'NULL'              #
      DEF SSBAS$     #O"02012300000000000000"#;  # 'BASIC'             #
      DEF SSBASIC$   #O"02012311030000000000"#;  # 'BASIC'             #
      DEF SSFOR$     #O"06172200000000000000"#;  # 'FORT'              #
      DEF SSFORT$    #O"06172224000000000000"#;  # 'FORT'              #
      DEF SSFORTRAN$ #O"06172224220116000000"#;  # 'FORTRAN'           #
      DEF SSFTN$     #O"06241600000000000000"#;  # 'FTNTS'             #
      DEF SSFTNTS$   #O"06241624230000000000"#;  # 'FTNTS'             #
      DEF SSEXE$     #O"05300500000000000000"#;  # 'EXEC'              #
      DEF SSEXEC$    #O"05300503000000000000"#;  # 'EXEC'              #
      DEF SSEXECUTE$ #O"05300503252405000000"#;  # 'EXECUTE'           #
      DEF SSBAT$     #O"02012400000000000000"#;  # 'BATCH'             #
      DEF SSBATCH$   #O"02012403100000000000"#;  # 'BATCH'             #
  
      DEF SSNNULL$   #   O"40" #;                # NULL                #
      DEF SSNBASIC$  #   O"41" #;                # BASIC               #
      DEF SSNFORT$   #   O"42" #;                # FORT, FORTRAN       #
      DEF SSNFTNTS$  #   O"43" #;                # FTNTS               #
      DEF SSNEXEC$   #   O"44" #;                # EXEC, EXECUTE       #
      DEF SSNBATCH$  #   O"45" #;                # BATCH               #
  
# 
**    NETWORK SUPERVISORY MESSAGE DEFINITIONS 
* 
*     SUPERVISORY MESSAGE DEFINITIONS ARE SUPPLIED BY THE COMMON
*     DECKS: SMAPPFC, SMAPDEF, MISCOM.
# 
*CALL SMAPPFC 
*CALL SMAPDEF 
*CALL MISCOM
                                               CONTROL EJECT; 
                                               CONTROL FI;
# 
***   IP AND COMMON INTERFACE DECLARATIONS. 
* 
*     THE FOLLOWING CONTAINS THE IP INTERFACE DECLARATIONS. 
*     IT ALSO CONTAINS INTERFACE DECLARATIONS WHICH ARE 
*     COMMON TO IP, TCP, AND/OR TELNET. 
* 
*     ALL SYMPL BOOLEAN ITEMS IN BASED ARRAYS ARE DEFINED AS
*     A SINGLE BIT LEFT JUSTIFIED IN A WORD TO BE COMPATIBLE WITH THE 
*     FTN5 EQUIVALENT LOGICAL DECLARATIONS. 
# 
  
      STATUS IP$FIUSTAT        # IP ADDRESS FIELDS IN USE             # 
        NONE,                  # NONE                               0 # 
        NETWORK,               # NETWORK                            1 # 
        HOST,                  # HOST                               2 # 
        BOTH,                  # BOTH                               3 # 
        IP$FIU$END;            # END OF 'IP$FIUSTAT'                  # 
  
      STATUS IP$OPTSTAT        # IP ROUTE RECORD OPTION FIELD         # 
        STRICT,                # STRICT                             0 # 
        LOOSE,                 # LOOSE                              1 # 
        RECORD,                # RECORD                             2 # 
        IP$OPT$END;            # END OF 'IP$OPTSTAT'                  # 
  
      STATUS IP$STATUS         # IP RETURN STATUS                     # 
  
# 
*       IP DDN INTERFACE REPLY CODES. 
# 
  
        IP$SUCCESS,            # (0)  OPERATION COMPLETED             # 
        IP$PTC$INU,            # (1)  PROTOCOL INUSE                  # 
        IP$PTC$ILL,            # (2)  PROTOCOL ILLEGAL                # 
        IP$SAP$NOP,            # (3)  'SAP' NOT OPEN                  # 
        IP$NET$UNR,            # (4)  INVALID NETWORK ID              # 
        IP$HST$UNR,            # (5)  INVALID HOST ID                 # 
        IP$PTC$UNR,            # (6)  INVALID PROTOCOL                # 
        IP$PRT$UNR,            # (7)  INVALID PORT                    # 
        IP$FRG$REQ,            # (8)  UNABLE TO SENT WITHOUT
                                      FRAGMENTATION                   # 
        IP$OPT$ERR,            # (9)  ERROR IN OPTION                 # 
        IP$RTE$FLD,            # (10) ERROR IN STRICT ROUTE           # 
        IP$TME$OUT,            # (11) TIMEOUT DURING TRAVEL           # 
        IP$ASM$TMT,            # (12) TIMEOUT DURING ASSEMBLY         # 
        IP$LAK$MEM,            # (13) INSUFFICIENT MEMORY             # 
        IP$CONGEST,            # (14) NO DELIVERY, CONGESTION         # 
        IP$BAD$ICT,            # (15) BAD TYPE IN ICMP HEADER         # 
        IP$BAD$ICC,            # (16) BAD CODE IN ICMP HEADER         # 
        IP$INTERR,             # (17) INTERNAL ERROR OCCURED          # 
        IP$STA$END;            # (18) END OF 'IP$STATUS'              # 
  
# 
*     THE FOLLOWING CONSTANTS DEFINE THE IP DATA STRUCTURE SIZES AND
*     INTERRELATIONSHIPS.  ANY CHANGES TO THE DATA STRUCTURES MUST
*     BE REFLECTED IN THE CONSTANTS, AND VICE VERSA.
# 
  
        DEF I$BDPAR$SZ #1#;  # IP BAD PARAMETER SIZE IN WORDS         # 
        DEF I$DADR$SZ  #3#;  # IP DESTINATION ADDRESS RECORD SIZE 
                                 IN WORDS                             # 
        DEF I$SADR$SZ  #3#;  # IP SOURCE ADDRESS RECORD SIZE IN 
                                 WORDS                                # 
        DEF IC$HDR$SZ  #4#;  # ICMP HEADER RECORD SIZE IN WORDS       # 
        DEF IP$FLSP$SZ #2#;  # FULL STAMP SIZE IN WORDS               # 
        DEF IP$HDR$SZ  #21#; # IP HEADER RECORD SIZE IN WORDS         # 
        DEF IP$LGAR$SZ #2#;  # LARGE ARRAY ELEMENT SIZE IN WORDS      # 
        DEF IP$LIST$SZ #1#;  # IP LIST ARRAY ELEMENT SIZE IN WORDS    # 
        DEF IP$OPT$SZ  #39#; # IP OPTION RECORD SIZE IN WORDS         # 
        DEF IP$NOFR$SZ #1#;  # IP NO FRAGMENT SIZE IN WORDS           # 
        DEF IP$PRCL$SZ #1#;  # IP PROTOCOL SIZE IN WORDS              # 
        DEF IP$SEC$SW  #1#;  # SECURITY RECORD STARTING WORD          # 
        DEF IP$SEC$SZ  #6#;  # IP SECURITY RECORD SIZE IN WORDS       # 
        DEF IP$SMAR$SZ #1#;  # SMALL ARRAY ELEMENT SIZE IN WORDS      # 
        DEF IP$STAT$SZ #1#;  # IP RETURN STATUS SIZE IN WORDS         # 
        DEF IP$STI$SW  #7#;  # STREAMID RECORD STARTING WORD          # 
        DEF IP$STI$SZ  #3#;  # IP STREAMID RECORD SIZE IN WORDS       # 
        DEF IP$RTE$SW  #10#; # ROUTING RECORD STARTING WORD           # 
        DEF IP$RTE$SZ  #14#; # IP ROUTING RECORD SIZE IN WORDS        # 
        DEF IP$TIM$SW  #24#; # TIMING RECORD STARTING WORD            # 
        DEF IP$TIM$SZ  #15#; # IP TIMING RECORD SIZE IN WORDS         # 
        DEF IP$TMSP$SZ #1#;  # TIME STAMP SIZE IN WORDS               # 
        DEF ITT$SID$SZ #1#;  # ITT SAPID SIZE IN WORDS                # 
        DEF ITT$SIZ$SZ #1#;  # ITT$SIZE SIZE IN WORDS                 # 
  
# 
*     THE FOLLOWING CONSTANTS DEFINE THE IP PROTOCOL TYPES. 
# 
  
        DEF IP$EGP     #8#;  # EXTERNAL GATEWAY PROTOCOL              # 
        DEF IP$ICMP    #1#;  # INTERNET CONTROL MESSAGE PROTOCOL      # 
        DEF IP$IGP     #9#;  # INTERNAL GATEWAY PROTOCOL              # 
        DEF IP$IP      #0#;  # INTERNET PROTOCOL                      # 
        DEF IP$TCP     #6#;  # TRANSMISSION CONTROL PROTOCOL          # 
        DEF IP$UDP     #17#; # USER DATAGRAM PROTOCOL                 # 
  
                                               CONTROL EJECT; 
  
# 
*     COMMON VARIABLES FOR TCP INTERFACE ROUTINES 
# 
  
      COMMON TCP$TIF; 
  
      BEGIN                          # TCP$TIF                        # 
  
      ITEM DN$T$ACT        U;        # STATE ACTION TO BE PERFORMED   # 
      ITEM DN$T$DOFF       U;        # DATA OFFSET IN BUFFER          # 
      ITEM DN$T$EVENT      U;        # EVENT/TRIGGER GENERATED        # 
      ITEM DN$T$NEXT       U;        # NEXT STATE WHEN COMPLETE       # 
      ITEM DN$T$IDENT      U;        # INDEX INTO PRIMITIVE TABLE     # 
      ITEM DN$T$ITTID      U;        # CEPID/SAPID FOR THE EVENT      # 
  
      END                            # TCP$TIF                        # 
  
# 
*     COMMON BLOCK FOR IP STRUCTURES
# 
  
      COMMON FFS$IPC; 
  
      BEGIN                          # FFS$IPC                        # 
  
# 
**    I$DADR$REC - IP DESTINATION ADDRESS RECORD DEFINITION.
* 
*     'I$DADR$REC' IS THE DEFINITION OF THE IP DESTINATION ADDRESS
*     RECORD. 
* 
*     NOTE - IF ANY OF THE ARRAY ITEMS ARE CHANGED OR MOVED THE 
*     DEF SHOULD BE CHECKED FOR ACCURACY. 
# 
  
        BASED ARRAY I$DADR$REC [0:0] S(I$DADR$SZ);
          BEGIN 
          ITEM I$DADR$FIU S:IP$FIUSTAT(00,00,60);  # FIELDS IN USE    # 
          ITEM I$DADR$NET U(01,36,24);  # NETWORK (0..0FFFFFFH)       # 
          ITEM I$DADR$HST U(02,36,24);  # HOST (0..0FFFFFFH)          # 
          END 
  
  
  
  
# 
**    I$SADR$REC - IP SOURCE ADDRESS RECORD DEFINITION. 
* 
*     'I$SADR$REC' IS THE DEFINITION OF THE IP SOURCE ADDRESS RECORD. 
* 
*     NOTE - IF ANY OF THE ARRAY ITEMS ARE CHANGED OR MOVED THE 
*     DEF SHOULD BE CHECKED FOR ACCURACY. 
# 
  
        BASED ARRAY I$SADR$REC [0:0] S(I$SADR$SZ);
          BEGIN 
          ITEM I$SADR$FIU S:IP$FIUSTAT(00,00,60);  # FIELDS IN USE    # 
          ITEM I$SADR$NET U(01,36,24);  # NETWORK (0..0FFFFFFH)       # 
          ITEM I$SADR$HST U(02,36,24);  # HOST (0..0FFFFFFH)          # 
          END 
  
                                               CONTROL EJECT; 
  
# 
**    IP$HDR$REC - IP HEADER RECORD DEFINITION. 
* 
*     'IP$HDR$REC' IS THE DEFINITION OF THE IP HEADER RECORD. 
* 
*     NOTE - THE FOOTNOTES IN THE RIGHT COLUMN OF THE ITEM DECLARATION
*     COMMENTS HAVE THE FOLLOWING MEANINGS: 
*       'ULP' MEANS THE 'ULP' MUST FILL THIS FIELD PRIOR TO THE CALL. 
*       'XXX' MEANS THIS FIELD NEED NOT BE FILLED PRIOR TO THE CALL.
# 
  
        BASED ARRAY IP$HDR$REC [0:0] S(IP$HDR$SZ);
          BEGIN 
          ITEM IP$HDR$IU  B(00,00,01); # IP HEADER IN-USE       ULP   # 
          ITEM IP$HDR$FIU B(01,00,01); # IP FULL HEADER IN-USE  ULP   # 
          ITEM IP$HDR$VER U(02,56,04); # VERSION (0..15)        XXX   # 
          ITEM IP$HDR$IHL U(03,56,04); # HEADER LENGTH (0..15)  XXX   # 
          ITEM IP$HDR$PRE U(04,57,03); # PRECEDENCE (0..7)      ULP   # 
          ITEM IP$HDR$DLA B(05,00,01); # DELAY                  ULP   # 
          ITEM IP$HDR$TPT B(06,00,01); # THROUGHPUT             ULP   # 
          ITEM IP$HDR$RLY B(07,00,01); # RELIABILITY            ULP   # 
          ITEM IP$HDR$UF1 B(08,00,01); # UNUSED FLAG 1          XXX   # 
          ITEM IP$HDR$UF2 B(09,00,01); # UNUSED FLAG 2          XXX   # 
          ITEM IP$HDR$TOT U(10,44,16); # TOTAL LENGTH (0..FFFF) XXX   # 
          ITEM IP$HDR$ID  U(11,44,16); # IDENT (0..FFFF)        ULP   # 
          ITEM IP$HDR$UF3 B(12,00,01); # UNUSED FLAG 3          XXX   # 
          ITEM IP$HDR$DFR B(13,00,01); # DON'T FRAGMENT         ULP   # 
          ITEM IP$HDR$MFR B(14,00,01); # MORE FRAGMENTS         XXX   # 
          ITEM IP$HDR$FOS U(15,47,13); # FRAG OFFSET (0..1FFF)  XXX   # 
          ITEM IP$HDR$TTL U(16,52,08); # TIME TO LIVE (0..256)  ULP   # 
          ITEM IP$HDR$PCL U(17,52,08); # PROTOCOL (0..256)      ULP   # 
          ITEM IP$HDR$CKS U(18,44,16); # CHECKSUM (0..FFFF)     XXX   # 
          ITEM IP$HDR$SRC I(19,28,32); # SOURCE ADDRESS         XXX 
                                         (-80000000..7FFFFFFF)        # 
          ITEM IP$HDR$DES I(20,28,32); # DESTINATION ADDRESS    XXX 
                                         (-80000000..7FFFFFFF)        # 
          END 
  
  
# 
**    IC$HDR$REC - 'ICMP' HEADER RECORD DEFINITION. 
* 
*     'IC$HDR$REC' IS THE DEFINITION OF THE 'ICMP' HEADER RECORD. 
# 
  
        BASED ARRAY IC$HDR$REC [0:0] S(IC$HDR$SZ);
          BEGIN 
          ITEM IC$HDR$ERT U(00,52,08); # ERROR TYPE (0..255)          # 
          ITEM IC$HDR$ERC U(01,52,08); # ERROR CODE (0..255)          # 
          ITEM IC$HDR$CKS U(02,44,16); # CHECKSUM (0..FFFF)           # 
          # CASE 0 #
          ITEM IC$HDR$GWY U(03,28,32); # GATEWAY
                                         (-80000000..7FFFFFFF)        # 
          # CASE 1 #
          ITEM IC$HDR$PTR U(03,28,08); # PTR (0..255)                 # 
          ITEM IC$HDR$UNU U(03,36,24); # UNUSED (0..FFFFFF)           # 
          # CASE 2 #
          ITEM IC$HDR$ID  U(03,28,16); # IDENTIFIER (0..FFFF)         # 
          ITEM IC$HDR$SEQ U(03,44,16); # SEQUENCE (0..FFFF)           # 
          END 
  
                                               CONTROL EJECT; 
  
# 
**    IP$OPT$REC - IP OPTION RECORD DEFINITION. 
* 
*     'IP$OPT$REC' IS THE DEFINITION OF THE IP OPTION RECORD. 
*     THIS DEFINITION IS USED BY SEVERAL OF THE TCP AND IP
*     MODULES.
* 
*     NOTES - IF ANY OF THE ARRAY ITEMS ARE CHANGED OR MOVED THE
*     DEF'S SHOULD BE CHECKED FOR ACCURACY. 
* 
*     IF ANY OF THE ARRAY ITEMS ARE CHANGED IN THE 'IP$SEC$REC',
*     'IP$STI$REC', 'IP$RTE$REC', 'IP$LIST', 'IP$TIM$REC',
*     'IP$SM$ARAY', 'IP$LG$ARAY', 'IP$TMSP', OR 'IP$FLSP' 
*     DEFINITIONS, THE DEF'S SHOULD BE CHECKED FOR ACCURACY.
# 
  
  
        BASED ARRAY IP$OPT$REC [0:0] S(IP$OPT$SZ);
          BEGIN 
                                # IP OPTIONS RECORD IN-USE            # 
          ITEM IP$OPT$IU  B(00,00,01);
                                # SECURITY - RECORD OF 'IP$SEC$REC'   # 
          ITEM IP$OPT$SEC U(IP$SEC$SW,00,60); 
                                # STREAMID - RECORD OF 'IP$STI$REC'   # 
          ITEM IP$OPT$STI U(IP$STI$SW,00,60); 
                                # ROUTING - RECORD OF 'IP$RTE$REC'    # 
          ITEM IP$OPT$RTE U(IP$RTE$SW,00,60); 
                                # TIMING - RECORD OF 'IP$TIM$REC'     # 
          ITEM IP$OPT$TIM U(IP$TIM$SW,00,60); 
          END 
  
                                               CONTROL EJECT; 
  
# 
**    IP$SEC$REC - IP SECURITY RECORD DEFINITION. 
* 
*     'IP$SEC$REC' IS THE DEFINITION OF THE IP SECURITY RECORD. 
*     THIS DEFINITION IS USED BY SEVERAL OF THE IP MODULES. 
* 
*     IF ANY OF THE ARRAY ITEMS ARE CHANGED OR MOVED THE
*     DEF'S SHOULD BE CHECKED FOR ACCURACY. 
* 
*     IF THIS DEFINITION CHANGES, ANY DEFINITION WHICH INCLUDES 
*     IT SHOULD BE RECHECKED FOR ACCURACY.
# 
  
        BASED ARRAY IP$SEC$REC [0:0] S(IP$SEC$SZ);
          BEGIN 
          ITEM IP$SEC$ZRO U(00,53,07);  # ZEOR (0..127)               # 
          ITEM IP$SEC$IU  B(01,00,01);  # IN USE                      # 
          ITEM IP$SEC$SEC U(02,44,16);  # SECURITY (0..0FFFFH)        # 
          ITEM IP$SEC$CMP U(03,44,16);  # COMPARTMENTS (0..0FFFFH)    # 
          ITEM IP$SEC$HDL U(04,44,16);  # HANDLING (0..0FFFFH)        # 
          ITEM IP$SEC$TCC U(05,36,24);  # TCC (0..0FFFFFFH)           # 
          END 
  
  
  
  
# 
**    IP$STI$REC - IP STREAMID RECORD DEFINITION. 
* 
*     'IP$STI$REC' IS THE DEFINITION OF THE IP STREAM ID RECORD.
*     THIS DEFINITION IS USED BY SEVERAL OF THE IP MODULES. 
* 
*     NOTES - IF ANY OF THE ARRAY ITEMS ARE CHANGED OR MOVED THE
*     DEF'S SHOULD BE CHECKED FOR ACCURACY. 
* 
*     IF THIS DEFINITION CHANGES, ANY DEFINITION WHICH INCLUDES THE 
*     IT SHOULD BE RECHECKED FOR ACCURACY.
# 
  
        BASED ARRAY IP$STI$REC [0:0] S(IP$STI$SZ);
          BEGIN 
          ITEM IP$STI$ZRO U(00,53,07);  # ZERO (0..127)               # 
          ITEM IP$STI$IU  B(01,00,01);  # IN USE                      # 
          ITEM IP$STI$STI U(02,44,16);  # STREAMID (0..0FFFFH)        # 
          END 
  
  
  
  
# 
**    IP$RTE$REC - IP ROUTING RECORD DEFINITION.
* 
*     'IP$RTE$REC' IS THE DEFINITION OF THE IP ROUTING RECORD.
*     THIS DEFINITION IS USED BY SEVERAL OF THE IP MODULES. 
* 
*     IF ANY OF THE ARRAY ITEMS ARE CHANGED OR MOVED THE
*     DEF'S SHOULD BE CHECKED FOR ACCURACY. 
* 
*     IF THE IP ADDRESS RECORD CHANGES, THE 'IP$RTE$SZ' DEF SHOULD
*     BE CHECKED FOR ACCURACY.
* 
*     IF THIS DEFINITION CHANGES, ANY DEFINITION WHICH INCLUDES THE 
*     IT SHOULD BE RECHECKED FOR ACCURACY.
# 
  
        BASED ARRAY IP$RTE$REC [0:0] S(IP$RTE$SZ);
          BEGIN 
          ITEM IP$RTE$ZRO U(00,53,07);  # ZERO (0..127)               # 
          ITEM IP$RTE$INU B(01,00,01);  # IN USE                      # 
          ITEM IP$RTE$TYP S:IP$OPTSTAT(02,00,60);  # TTYPE            # 
          ITEM IP$RTE$NDX U(03,52,08);  # INDEX (0..255)              # 
          ITEM IP$RTE$CNT U(04,52,08);  # COUNT (0..255)              # 
          ITEM IP$RTE$LST U(05,00,60);  # LIST - RECORD OF 'IP$LIST'  # 
          END 
  
  
  
  
# 
**    IP$LIST - IP LIST ARRAY DEFINITION. 
* 
*     'IP$LIST' IS THE DEFINITION OF THE IP LIST ARRAY. 
# 
  
        BASED ARRAY IP$LIST [0:8] S(IP$LIST$SZ);
          BEGIN 
          ITEM IP$LIST$DA U(00,28,32);  # DATA (-80000000..7FFFFFFF)  # 
          END 
  
  
  
  
# 
**    IP$TIM$REC - IP TIMING RECORD DEFINITION. 
* 
*     'IP$TIM$REC' IS THE DEFINITION OF THE IP TIMING RECORD. 
*     THIS DEFINITION IS USED BY SEVERAL OF THE IP MODULES. 
* 
*     IF ANY OF THE ARRAY ITEMS ARE CHANGED OR MOVED, THE 
*     DEF'S SHOULD BE CHECKED FOR ACCURACY. 
* 
*     IF THE IP SMALL ARRAY, LARGE ARRAY, TIME STAMP, OR FULL STAMP 
*     DEFINITIONS CHANGE, THE FOLLOWING DEF'S SHOULD BE CHECKED FOR 
*     ACCURACY. 
* 
*     IF THIS DEFINITION CHANGES, ANY DEFINITION WHICH INCLUDES 
*     IT SHOULD BE RECHECKED FOR ACCURACY.
# 
  
        BASED ARRAY IP$TIM$REC [0:0] S(IP$TIM$SZ);
          BEGIN 
          ITEM IP$TIM$ZRO U(00,53,07);  # ZERO (0..127)               # 
          ITEM IP$TIM$IU  B(01,00,01);  # IN USE                      # 
          ITEM IP$TIM$TYP U(02,52,08);  # TTYPE (0..255)              # 
          ITEM IP$TIM$NDX U(03,52,08);  # INDEX (0..255)              # 
          ITEM IP$TIM$CNT U(04,52,08);  # COUNT (0..255)              # 
          ITEM IP$TIM$OVF U(05,52,08);  # OVERFLOW (0..255)           # 
          # CASE 0 #
          ITEM IP$TIM$SA  U(06,00,60);  # SMALL ARRAY (IP$SM$ARAY)    # 
          # CASE 1 #
          ITEM IP$TIM$LA  U(06,00,60);  # LARGE ARRAY (IP$LG$ARAY)    # 
          END 
  
  
  
  
# 
**    IP$SM$ARAY - IP SMALL ARRAY DEFINITION. 
* 
*     'IP$SM$ARAY' IS THE DEFINITION OF THE IP SMALL ARRAY. 
# 
  
        BASED ARRAY IP$SM$ARAY [0:8] S(IP$SMAR$SZ); 
          BEGIN 
          ITEM IP$SMAR$TS U(00,00,60);  # TIMESTAMP (IP$TMSP)         # 
          END 
  
  
  
  
# 
**    IP$LG$ARAY - IP LARGE ARRAY DEFINITION. 
* 
*     'IP$LG$ARAY' IS THE DEFINITION OF THE IP LARGE ARRAY. 
# 
  
        BASED ARRAY IP$LG$ARAY [0:3] S(IP$LGAR$SZ); 
          BEGIN 
          ITEM IP$LGAR$FS U(00,00,60);  # FULLSTAMP (IP$FLSP)         # 
          END 
  
  
  
  
# 
**    IP$TMSP - IP TIME STAMP DEFINITION. 
* 
*     'IP$TMSP' IS THE DEFINITION OF THE IP TIME STAMP. 
*     THIS DEFINITION IS USED BY SEVERAL OF THE IP MODULES. 
* 
*     IF THIS DEFINITION CHANGES, ANY DEFINITION WHICH INCLUDES IT
*     SHOULD BE RECHECKED FOR ACCURACY. 
# 
  
        BASED ARRAY IP$TMSP [0:0] S(IP$TMSP$SZ);
          BEGIN 
          ITEM IP$TMSP$TS U(00,28,32); # DATA (-80000000..7FFFFFFF)   # 
          END 
  
  
  
  
# 
**    IP$FLSP - IP FULL STAMP DEFINITION. 
* 
*     'IP$FLSP' IS THE DEFINITION OF THE IP FULL STAMP. 
*     THIS DEFINITION IS USED BY SEVERAL OF THE IP MODULES. 
* 
*     IF THIS DEFINITION CHANGES, ANY DEFINITION WHICH INCLUDES THE 
*     IT SHOULD BE RECHECKED FOR ACCURACY.
# 
  
        BASED ARRAY IP$FLSP [0:0] S(IP$FLSP$SZ);
          BEGIN 
                                   # ADDRESS (-80000000..7FFFFFFF)    # 
          ITEM IP$FLSP$AD I(00,28,32);
                                   # TIME - RECORD OF 'IP$TMSP'       # 
          ITEM IP$FLSP$TM U(01,00,60);
          END 
  
  
# 
**    'IP$STAT' - IP RETURN STATUS. 
* 
*     'IP$STAT' IS THE STATUS RETURNED AS A RESULT OF A IP
*     REQUEST.
# 
  
        BASED ARRAY IPSTAT [0:0] S(IP$STAT$SZ); 
          BEGIN 
                                   # IP REQUEST RETURN STATUS         # 
          ITEM IP$STAT    S:IP$STATUS(00,00,60);
          END 
  
  
  
  
# 
**    ITT$DATA - IP/TCP/TELNET DATA BUFFER. 
* 
*     'ITT$DATA' DEFINES THE BUFFER CONTAINING DATA TO BE SENT
*     OR RECEIVED.
* 
*     THIS DEFINITION IS USED BY IP, TCP AND TELNET.
# 
  
        BASED ARRAY ITTDATA [0:0] S(OUTSIZ$); 
          BEGIN 
          ITEM ITT$DATA   U(00,00,60);  # DATA BUFFER FIRST WORD      # 
          END 
  
  
  
  
# 
**    ITT$SIZE - IP/TCP/TELNET DATA BUFFER SIZE.
* 
*     'ITT$DATA' DEFINES THE NUMBER OF BYTES TO BE SENT OR RECEIVED 
*     IN ITT$DATA.
* 
*     THIS DEFINITION IS USED BY IP, TCP AND TELNET.
# 
  
        BASED ARRAY ITTSIZE [0:0] S(ITT$SIZ$SZ);
          BEGIN 
          ITEM ITT$SIZE   U(00,28,32);  # ITT$SIZE (32-BIT INTEGER)   # 
          END 
  
                                               CONTROL EJECT; 
  
# 
**    ITT$SAPID - IP/TCP/TELNET SAPID.
* 
*     'ITT$SAPID' IS THE SAPID RETURNED BY THE REQUEST. 
# 
  
        BASED ARRAY ITTSAPID [0:0] S(ITT$SID$SZ); 
          BEGIN 
          ITEM ITT$SAPID  I(00,28,32);  # SAPID (-2**31..2**31-1)     # 
          END 
  
      END                            # FFS$IPC                        # 
                                               CONTROL EJECT; 
  
# 
***   TCP INTERFACE RECORD DEFINITIONS. 
* 
*     THE FOLLOWING CONTAINS THE TCP INTERFACE RECORD DEFINITIONS.
* 
*     ALL SYMPL BOOLEAN ITEMS IN BASED ARRAYS ARE DEFINED AS
*     A SINGLE BIT LEFT JUSTIFIED IN A WORD TO BE COMPATIBLE WITH THE 
*     FTN5 EQUIVALENT LOGICAL DECLARATIONS. 
# 
  
# 
**    COMMON TCP DEFINITIONS. 
# 
  
# 
*     THE FOLLOWING ARE WELL-KNOWN TCP PORT NUMBERS.
# 
  
      DEF TP$PT$0    #0#;      # RESERVED                             # 
      DEF TP$PT$1    #1#;      # UNASSIGNED                           # 
      DEF TP$PT$2    #2#;      # UNASSIGNED                           # 
      DEF TP$PT$3    #3#;      # UNASSIGNED                           # 
      DEF TP$PT$4    #4#;      # UNASSIGNED                           # 
      DEF TP$PT$RJE  #5#;      # REMOTE JOB ENTRY                     # 
      DEF TP$PT$ECHO #7#;      # ECHO                                 # 
      DEF TP$PT$DISC #9#;      # DISCARD                              # 
      DEF TP$PT$USRS #11#;     # ACTIVE USERS                         # 
      DEF TP$PT$DTIM #13#;     # DAYTIME                              # 
      DEF TP$PT$STAT #15#;     # WHO IS UP OR NETSTAT                 # 
      DEF TP$PT$QUOT #17#;     # QUOTE OF THE DAY                     # 
      DEF TP$PT$CHAR #19#;     # CHARACTER GENERATOR                  # 
      DEF TP$PT$FTPD #20#;     # FILE TRANSFER, DEFAULT DATA          # 
      DEF TP$PT$FTPC #21#;     # FILE TRANSFER, TELNET CONTROL        # 
      DEF TP$PT$TELN #23#;     # TELNET                               # 
      DEF TP$PT$SMTP #25#;     # SMTP                                 # 
      DEF TP$PT$NSWF #27#;     # NSW USER SYSTEM FE                   # 
      DEF TP$PT$MSGI #29#;     # MSG ICP                              # 
      DEF TP$PT$MSGA #31#;     # MSG AUTHENTICATION                   # 
      DEF TP$PT$DSP  #33#;     # DISPLAY SUPPORT PROTOCOL             # 
      DEF TP$PT$PRNT #35#;     # ANY PRIVATE PRINTER SERVER           # 
      DEF TP$PT$TIME #37#;     # TIME                                 # 
      DEF TP$PT$RLP  #39#;     # RESOURCE LOCATION PROTOCOL           # 
      DEF TP$PT$GRAF #41#;     # GRAPHICS                             # 
      DEF TP$PT$HNS  #42#;     # HOST NAME SERVER                     # 
      DEF TP$PT$NICN #43#;     # WHO IS, NICNAME                      # 
      DEF TP$PT$MPMF #44#;     # MPM FLAGS PROTOCOL                   # 
      DEF TP$PT$MPMR #45#;     # MESSAGE PROCESSING MODULE (RECV)     # 
      DEF TP$PT$MPMS #46#;     # MPM (DEFAULT SEND)                   # 
      DEF TP$PT$NIFT #47#;     # NI FTP                               # 
      DEF TP$PT$LOGH #49#;     # LOGIN HOST PROTOCOL                  # 
      DEF TP$PT$IMPA #51#;     # IMP LOGICAL ADDRESS MAINTENANCE      # 
      DEF TP$PT$DOMN #53#;     # DOMAIN NAME SERVER                   # 
      DEF TP$PT$ISIG #55#;     # ISI GRAPHICS LANGUAGE                # 
      DEF TP$PT$TRMN #57#;     # ANY PRIVATE TERMINAL ACCESS          # 
      DEF TP$PT$FILE #59#;     # ANY PRIVATE FILE SERVICE             # 
      DEF TP$PT$NIML #61#;     # NI MAIL                              # 
      DEF TP$PT$VIAF #63#;     # VIA SYSTEMS FTP                      # 
      DEF TP$PT$TACA #65#;     # TACACS DATABASE SERVICE              # 
      DEF TP$PT$BTSS #67#;     # BOOTSTRAP PROTOCOL SERVER            # 
      DEF TP$PT$BTSC #68#;     # BOOTSTRAP PROTOCOL CLIENT            # 
      DEF TP$PT$TFTP #69#;     # TRIVIAL FILE TRANSFER                # 
      DEF TP$PT$RJS1 #71#;     # REMOTE JOB SERVICE - 1               # 
      DEF TP$PT$RJS2 #72#;     # REMOTE JOB SERVICE - 2               # 
      DEF TP$PT$RJS3 #73#;     # REMOTE JOB SERVICE - 3               # 
      DEF TP$PT$RJS4 #74#;     # REMOTE JOB SERVICE - 4               # 
      DEF TP$PT$DIAL #75#;     # ANY PRIVATE DIAL OUT SERVICE         # 
      DEF TP$PT$PRJE #77#;     # ANY PRIVATE RJE SERVICE              # 
      DEF TP$PT$FING #79#;     # FINGER                               # 
      DEF TP$PT$H2NS #81#;     # HOSTS2 NAME SERVER                   # 
      DEF TP$PT$MML1 #83#;     # MIT ML DEVICE                        # 
      DEF TP$PT$MML2 #85#;     # MIT ML DEVICE                        # 
      DEF TP$PT$TRML #87#;     # ANY PRIVATE TERMINAL LINK            # 
      DEF TP$PT$SUMT #89#;     # SU/MIT TELNET GATEWAY                # 
      DEF TP$PT$DOVR #91#;     # MIT DOVER SPOOLER                    # 
      DEF TP$PT$DCP  #93#;     # DEVICE CONTROL PROTOCOL              # 
      DEF TP$PT$SUPD #95#;     # SUPDUP                               # 
      DEF TP$PT$SWFT #97#;     # SWIFT REMOTE VIRTUAL FILE PROTOCOL   # 
      DEF TP$PT$NEWS #98#;     # TAC NEWS                             # 
      DEF TP$PT$META #99#;     # METAGRAM RELAY                       # 
      DEF TP$PT$NHNS #101#;    # NIC HOST NAME SERVER                 # 
      DEF TP$PT$ISOT #102#;    # ISO TSAP                             # 
      DEF TP$PT$X400 #103#;    # X.400                                # 
      DEF TP$PT$X40S #104#;    # X.400-SND                            # 
      DEF TP$PT$CSNS #105#;    # MAILBOX NAME SERVER                  # 
      DEF TP$PT$RTEL #107#;    # REMOTE TELNET SERVICE                # 
      DEF TP$PT$POP2 #109#;    # POST OFFICE PROTOCOL, VERSION 2      # 
      DEF TP$PT$SRPC #111#;    # SUN REMOTE PROCEDURE CALL            # 
      DEF TP$PT$AUTH #113#;    # AUTHENTICATION SERVICE               # 
      DEF TP$PT$SFTP #115#;    # SIMPLE FILE TRANSFER PROTOCOL        # 
      DEF TP$PT$UUCP #117#;    # UUCP PATH SERVICE                    # 
      DEF TP$PT$UNTP #119#;    # USENET NEWS TRANSFER PROTOCOL        # 
      DEF TP$PT$HYDR #121#;    # HYDRA EXPEDITED REMOTE PROC CALL     # 
      DEF TP$PT$NTP  #123#;    # NETWORK TIME PROTOCOL                # 
      DEF TP$PT$LCSM #125#;    # LOCUS PC-INTERFACE NET MAP SERVER    # 
      DEF TP$PT$LCSC #127#;    # LOCUS PC-INTERFACE CONN SERVER       # 
      DEF TP$PT$PWDG #129#;    # PASSWORD GENERATOR PROTOCOL          # 
      DEF TP$PT$CSCF #130#;    # CISCO FNATIVE                        # 
      DEF TP$PT$CSCT #131#;    # CISCO TNATIVE                        # 
      DEF TP$PT$CSCS #132#;    # CISCO SYSMAINT                       # 
      DEF TP$PT$UNB1 #133#;    # BEGIN UNASSIGNED NUMBERS, 1ST BLOCK  # 
      DEF TP$PT$UNE1 #159#;    # END UNASSIGNED NUMBERS, 1ST BLOCK    # 
      DEF TP$PT$RSVB #160#;    # BEGIN RESERVED NUMBERS               # 
      DEF TP$PT$RSVE #223#;    # END RESERVED NUMBERS                 # 
      DEF TP$PT$UNB2 #224#;    # BEGIN UNASSIGNED NUMBERS, 2ND BLOCK  # 
      DEF TP$PT$UNE2 #241#;    # END UNASSIGNED NUMBERS, 2ND BLOCK    # 
      DEF TP$PT$SURV #243#;    # SURVEY MEASUREMENT                   # 
      DEF TP$PT$LINK #245#;    # LINK                                 # 
      DEF TP$PT$UNB3 #247#;    # BEGIN UNASSIGNED NUMBERS, 3RD BLOCK  # 
      DEF TP$PT$UNE3 #255#;    # END UNASSIGNED NUMBERS, 3RD BLOCK    # 
  
# 
*     THE FOLLOWING ARE COMMON STATUS DEFINITIONS FOR THE 
*     TCP MODULE INTERFACE DEFINITIONS. 
# 
  
      STATUS TP$STATE          # TCP FINITE STATE                     # 
        TP$AKFN$WT,            # WAITING FOR 'ACK' OF A 'FIN'         # 
        TP$AKSN$WT,            # WAITING FOR 'ACK' OF A 'SYN'         # 
        TP$CLOSED,             # NO CONNECTION                        # 
        TP$CLSE$WT,            # WAITING FOR 'ULP' DISCONNECT         # 
        TP$ESTBLSH,            # CONNECTION ESTABLISHED               # 
        TP$FNAK$WT,            # WAITING FOR 'FIN' OR 'ACK'           # 
        TP$FIN$WT,             # WAITING FOR 'FIN'                    # 
        TP$LAK$WT,             # WAITING FOR FINAL 'ACK'              # 
        TP$LISTEN,             # PASSIVE CONNECT WAITING              # 
        TP$SNAK$WT,            # WAITING FOR 'SYN' OR 'SYN-ACK'       # 
        TP$TIME$WT,            # CLOSE AFTER '2MSL'                   # 
        TP$FST$END;            # END OF 'TP$STATE'                    # 
  
      STATUS TP$STATUS         # TCP RETURN STATUS                    # 
  
# 
*       TCP DDN INTERFACE REPLY CODES.
# 
  
        TP$SUCCESS,            # (0)  FUNCTION COMPLETED              # 
        TP$INUSE,              # (1)  CONNECTION ALREADY IN USE       # 
        TP$NOTOPEN,            # (2)  EXISTS, ONLY HALF OPEN          # 
        TP$NOHOST,             # (3)  CAN'T ROUTE, HOST UNREACHABLE   # 
        TP$ILLWC,              # (4)  WORKCODE ILLEGAL                # 
        TP$INTERR,             # (5)  INTERNAL ERROR OCCURED          # 
        TP$NILPTR,             # (6)  NIL POINTER TO USER CMR OR MR   # 
        TP$NONET,              # (7)  CAN'T ROUTE, NETWORK UNREACH.   # 
        TP$NOCON,              # (8)  CONNECTION DOESN'T EXIST        # 
        TP$NOMEM,              # (9)  NO MEMORY AVAILABLE             # 
        TP$OPTERR,             # (10) ERROR IN IP HEADER OPTION       # 
        TP$NOPORT,             # (11) CAN'T ROUTE, PORT UNREACHABLE   # 
        TP$PTCLERR,            # (12) PDU HAS FATAL ERROR             # 
        TP$NOPTCL,             # (13) CAN'T ROUTE, PROTOCOL UNREACH.  # 
        TP$PEERABT,            # (14) ABORT RECEIVED FROM PEER        # 
        TP$BADROUT,            # (15) SOURCE ROUTE OPTION BAD         # 
        TP$BADSID,             # (16) THE SAPID IS INVALID            # 
        TP$SAPUNAV,            # (17) NO SAP'S ARE AVAILABLE          # 
        TP$SPMISMA,            # (18) SECURITY/PRECEDENCE MISMATCH    # 
        TP$TIMEOUT;            # (20) PDU TIMED OUT                   # 
  
# 
*       THE FOLLOWING CONSTANTS DEFINE THE SIZE AND INTERRELATIONSHIP 
*       OF THE TCP DATA STRUCTURES.  THEY SHOULD BE CHECKED EVERY TIME
*       THE DATA STRUCTURES CHANGE, AND VICE VERSA. 
# 
  
        DEF ALLOC$SZ   #2#;  # ALLOCATION SIZE IN WORDS               # 
        DEF ST$IND$SZ  #1#;  # TCP START INDICATION SIZE IN WORDS     # 
        DEF T$CEPID$SZ #1#;  # TCP/TELNET CEPID SIZE IN WORDS         # 
        DEF T$DADR$SZ  #5#;  # TCP DESTINATION ADDRESS RECORD 
                                 SIZE IN WORDS                        # 
        DEF T$FLCTL$SZ #1#;  # TCP FLOW CONTROL SIZE IN WORDS         # 
        DEF T$PUSH$SZ  #1#;  # TCP PUSH SIZE IN WORDS                 # 
        DEF T$SADR$SZ  #5#;  # TCP SOURCE ADDRESS RECORD SIZE 
                                 IN WORDS                             # 
        DEF TCP$STS$SZ #1#;  # TCP RETURN STATUS SIZE IN WORDS        # 
        DEF TCP$ULP$SZ #2#;  # TCP ULP TIMEOUT SIZE IN WORDS          # 
        DEF TCP$URG$SZ #1#;  # TCP URGENT SIZE IN WORDS               # 
        DEF TDADRIPASW #0#;  # IP ADDRESS STARTING WORD               # 
        DEF TDADRPIUSW #3#;  # PORT IN USE STARTING WORD              # 
        DEF TDADRPRTSW #4#;  # PORT STARTING WORD                     # 
        DEF TSADRIPASW #0#;  # IP ADDRESS STARTING WORD               # 
        DEF TSADRPIUSW #3#;  # PORT IN USE STARTING WORD              # 
        DEF TSADRPRTSW #4#;  # PORT STARTING WORD                     # 
        DEF TS$SZ      #13#; # WORD SIZE OF 'TP$SREC' ARRAY           # 
        DEF TS$ULP$SW  #0#;  # ULP TIMEOUT STARTING WORD              # 
        DEF TS$PDS$SW  #2#;  # PDU SIZE STARTING WORD                 # 
        DEF TS$ALC$SW  #3#;  # ALLOCATION STARTING WORD               # 
        DEF TS$FST$SW  #4#;  # 'FSM' STARTING WORD                    # 
        DEF TS$UNS$SW  #5#;  # UNSENT STARTING WORD                   # 
        DEF TS$SUA$SW  #6#;  # SENT UNACKED STARTING WORD             # 
        DEF TS$STL$SW  #7#;  # SENT TOTAL STARTING WORD               # 
        DEF TS$UDL$SW  #8#;  # UNDELIVERED STARTING WORD              # 
        DEF TS$RUA$SW  #9#;  # RECEIVED UNACKED STARTING WORD         # 
        DEF TS$RTL$SW  #10#; # RECEIVED TOTAL STARTING WORD           # 
        DEF TS$RTT$SW  #11#; # ROUND TRIP TIME STARTING WORD          # 
        DEF TS$RTC$SW  #12#; # RETRANSMIT COUNT STARTING WORD         # 
        DEF U$CEPID$SZ #1#;  # USER CEPID SIZE IN WORDS               # 
        DEF U$SID$SZ   #1#;  # USER SAPID SIZE IN WORDS               # 
  
  
                                               CONTROL EJECT; 
      COMMON FFS$TCP;                # COMMON FOR TCP DATA STRUCTURES # 
      BEGIN                          # FFS$TCP                        # 
  
# 
**    T$DADR$REC - TCP DESTINATION ADDRESS RECORD.
* 
*     'T$DADR$REC' SPECIFIES THE INTERNET ADDRESS AND PORT ADDRESS
*     OF THE DATAGRAM DESTINATION.
* 
*     NOTE - IF 'I$DADR$REC' CHANGES OR ANY OF THE OTHER ITEMS CHANGE,
*     MAKE SURE THE CORRESPONDING DEF'S ARE CHECKED FOR ACCURACY. 
# 
  
        BASED ARRAY T$DADR$REC [0:0] S(T$DADR$SZ);
          BEGIN 
          ITEM T$DADR$IPA  U(TDADRIPASW,00,60);  # IP ADDRESS, RECORD 
                                                     OF 'I$DADR$REC'  # 
          ITEM T$DADR$PIU  B(TDADRPIUSW,00,01);  # PORT IN USE        # 
          ITEM T$DADR$PRT  U(TDADRPRTSW,44,16);  # PORT (0..FFFF)     # 
          END 
  
  
  
  
# 
**    T$SADR$REC - TCP SOURCE ADDRESS RECORD. 
* 
*     'T$SADR$REC' SPECIFIES THE INTERNET ADDRESS AND PORT ADDRESS
*     OF THE DATAGRAM SOURCE. 
* 
*     NOTE - IF 'I$SADR$REC' CHANGES OR ANY OF THE OTHER ITEMS CHANGE,
*     MAKE SURE THE CORRESPONDING DEF'S ARE CHECKED FOR ACCURACY. 
# 
  
        BASED ARRAY T$SADR$REC [0:0] S(T$SADR$SZ);
          BEGIN 
          ITEM T$SADR$IPA  U(TSADRIPASW,00,60);  # IP ADDRESS, RECORD 
                                                     OF 'I$SADR$REC'  # 
          ITEM T$SADR$PIU  B(TSADRPIUSW,00,01);  # PORT IN USE        # 
          ITEM T$SADR$PRT  U(TSADRPRTSW,44,16);  # PORT (0..FFFF)     # 
          END 
  
  
  
# 
**    T$CEPID - TCP/TELNET CEPID. 
* 
*     'TN$T$CEPID' IS THE TCP/TELNET CEPID. 
# 
  
        BASED ARRAY TCEPID [0:0] S(T$CEPID$SZ); 
          BEGIN 
          ITEM T$CEPID  I(00,28,32);   # CEPID (-2**31..2**31-1)      # 
          END 
  
  
  
  
# 
**    U$CEPID - TELNET/TCP USER CEPID.
* 
*     'U$CEPID' IS THE TELNET/TCP USER CEPID. 
# 
  
  
        BASED ARRAY UCEPID [0:0] S(U$CEPID$SZ); 
          BEGIN 
          ITEM U$CEPID   I(00,28,32);  # CEPID (-2**31..2**31-1)      # 
          END 
  
  
  
  
  
# 
**    START$IND - TCP START INDICATION FLAG.
* 
*     'START$IND' IS THE TCP START INDICATION FLAG. 
# 
  
        BASED ARRAY STARTIND [0:0] S(ST$IND$SZ);
          BEGIN 
          ITEM START$IND  B(00,00,01);      # START INDICATION FLAG   # 
          END 
  
  
  
# 
**    T$PUSH - TCP/TELNET FORCE DATA SEND FLAG. 
* 
*     'TCP$DTA$SZ' IS SET TRUE TO FORCE THE TCP/TELNET MODULE TO
*     IMMEDIATELY SEND THE CURRENT DATA AND ANY PREVIOUS DATA 
*     TO ITS PEER.
# 
  
  
        BASED ARRAY TPUSH [0:0] S(T$PUSH$SZ); 
          BEGIN 
          ITEM T$PUSH    B(00,00,01);  # FORCE DATA FLAG              # 
          END 
  
                                               CONTROL EJECT; 
# 
**    'TP$SREC' - TCP STATUS RECORD.
* 
*     'TP$SREC' DEFINES THE TCP STATUS RECORD.
* 
*     IF THE ITEMS IN THIS DEFINITION ARE CHANGED IN ANY MANNER,
*     THE FOLLOWING DEF'S SHOULD BE CHECKED FOR ACCURACY. 
# 
  
        BASED ARRAY TP$SREC [0:0] S(TS$SZ); 
          BEGIN 
                                     # ULP TIMEOUT - RECORD OF
                                       'ULP$TMOUT'                    # 
          ITEM TS$ULP     U(TS$ULP$SW,00,60); 
                                     # PDU SIZE (0..2**12-1)          # 
          ITEM TS$PDS     U(TS$PDS$SW,48,12); 
          ITEM TS$ALC     U(TS$ALC$SW,00,60);  # ALLOCATION           # 
                                     # 'FSM' STATE                    # 
          ITEM TS$FST     S:TP$STATE(TS$FST$SW,00,60);
          ITEM TS$UNS     U(TS$UNS$SW,00,60);  # UNSENT               # 
          ITEM TS$SUA     U(TS$SUA$SW,00,60);  # SEND UNACKED         # 
          ITEM TS$STL     U(TS$STL$SW,00,60);  # SEND TOTAL           # 
          ITEM TS$UDL     U(TS$UDL$SW,00,60);  # UNDELIVERED          # 
          ITEM TS$RUA     U(TS$RUA$SW,00,60);  # RECEIVED UNACKED     # 
          ITEM TS$RTL     U(TS$RTL$SW,00,60);  # RECEIVED TOTAL       # 
          ITEM TS$RTT     U(TS$RTT$SW,44,16);  # ROUND TRIP TIME
                                                   (0..2**15-1)       # 
          ITEM TS$RTC     U(TS$RTC$SW,00,60);  # RETRANS COUNT        # 
          END 
  
  
# 
**    'ALLOCATION' - TCP ALLOCATION BYTE COUNT. 
* 
*     'ALLOCATION' SPECIFIES THE NUMBER OF BYTES THE APPLICATION WILL 
*     ACCEPT FROM TCP.
# 
  
        BASED ARRAY ALLOC [0:0] S(ALLOC$SZ);
          BEGIN 
          ITEM ALLOCATION  U(00,44,16);  # ALLOCATION (0..2**16)      # 
          ITEM AUTOALLOC   B(01,00,01);  # AUTOMATIC RE-ALLOCATION    # 
          END 
  
  
  
# 
**    'TP$STAT' - TCP RETURN STATUS.
* 
*     'TP$STAT' IS THE STATUS RETURNED AS A RESULT OF A TCP 
*     REQUEST.
# 
  
        BASED ARRAY TPSTAT [0:0] S(TCP$STS$SZ); 
          BEGIN 
          ITEM TP$STAT    S:TP$STATUS(00,00,60);   # RETURN STATUS    # 
          END 
  
  
  
# 
**    'TP$URG' - TCP URGENT DATA FLAG.
# 
  
        BASED ARRAY TPURG [0:0] S(TCP$URG$SZ);
          BEGIN 
          ITEM TP$URG    B(00,00,01);  # TCP URGENT DATA FLAG         # 
          END 
  
  
  
# 
**    'TP$ULP' - TCP ULP TIMEOUT RECORD.
# 
  
        BASED ARRAY ULPTMOUT [0:0] S(TCP$ULP$SZ); 
          BEGIN 
          ITEM ULP$TMOUT     U(00,28,32);  # TCP ULP TIMEOUT          # 
          ITEM TMOUT$ABT     B(01,00,01);  # TCP TIMEOUT ABORT        # 
          END 
  
  
  
# 
**    U$SAPID - TCP USER SAPID. 
* 
*     'U$SAPID' IS THE USER SAPID RETURNED BY THE REQUEST.
# 
  
        BASED ARRAY USAPID [0:0] S(U$SID$SZ); 
          BEGIN 
          ITEM U$SAPID I(00,28,32); # USER SAPID (-2**31..2**31-1)    # 
          END 
  
      END                            # FFS$TCP                        # 
                                               CONTROL EJECT; 
  
  
# 
***   TCP GW TO NAM INTERFACE DEFINITIONS.
* 
*     THE FOLLOWING DEFINES THE TCP GW INTERFACE PRIMITIVE
*     HEADERS AND DATA BLOCKS.
# 
  
# 
*     THE FOLLOWING DEF'S DEFINE THE PRIMITIVE IDENTIFIERS IN THE 
*     CDCNET CHARACTER SET (ASCII). 
*     IMMEDIATELY FOLLOWING EACH IDENTIFIER, THERE IS A DEF FOR THE 
*     HEADER LENGTH IN NUMBER OF WORDS. 
# 
  
# 
*     IP REQUESTS.
# 
  
      DEF GW$ID$ICS  #X"49504353202020"#;                 # 'IPCS   ' # 
      DEF GW$HL$ICS  #4#; 
      DEF GW$ID$IOS  #X"49504F53202020"#;                 # 'IPOS   ' # 
      DEF GW$HL$IOS  #4#; 
      DEF GW$ID$ISR  #X"49505352202020"#;                 # 'IPSR   ' # 
      DEF GW$HL$ISR  #56#;
  
# 
*     IP INDICATIONS. 
# 
  
      DEF GW$ID$IDI  #X"49504449202020"#;                 # 'IPDI   ' # 
      DEF GW$HL$IDI  #56#;
      DEF GW$ID$IEI  #X"49504549202020"#;                 # 'IPEI   ' # 
      DEF GW$HL$IEI  #56#;
  
# 
*     ICMP REQUESTS.
# 
  
      DEF GW$ID$IIR  #X"49504952202020"#;                 # 'IPIR   ' # 
      DEF GW$HL$IIR  #10#;
  
# 
*     ICMP INDICATIONS. 
# 
  
      DEF GW$ID$III  #X"49504949202020"#;                 # 'IPII   ' # 
      DEF GW$HL$III  #10#;
  
# 
*     TCP REQUESTS. 
# 
  
      DEF GW$ID$TA   #X"54435041202020"#;                 # 'TCPA   ' # 
      DEF GW$HL$TA   #4#; 
      DEF GW$ID$TAC  #X"54435041432020"#;                 # 'TCPAC  ' # 
      DEF GW$HL$TAC  #68#;
      DEF GW$ID$TACC #X"54435041434320"#;                 # 'TCPACC ' # 
      DEF GW$HL$TACC #4#; 
      DEF GW$ID$TCS  #X"54435043532020"#;                 # 'TCPCS  ' # 
      DEF GW$HL$TCS  #4#; 
      DEF GW$ID$TD   #X"54435044202020"#;                 # 'TCPD   ' # 
      DEF GW$HL$TD   #4#; 
      DEF GW$ID$TOS  #X"5443504F532020"#;                 # 'TCPOS  ' # 
      DEF GW$HL$TOS  #4#; 
      DEF GW$ID$TPC  #X"54435050432020"#;                 # 'TCPPC  ' # 
      DEF GW$HL$TPC  #68#;
      DEF GW$ID$TS   #X"54435053202020"#;                 # 'TCPS   ' # 
      DEF GW$HL$TS   #80#;
      DEF GW$ID$TSD  #X"54435053442020"#;                 # 'TCPSD  ' # 
      DEF GW$HL$TSD  #8#; 
  
# 
*     TCP INDICATIONS.
# 
  
      DEF GW$ID$TABI #X"54435041424920"#;                 # 'TCPABI ' # 
      DEF GW$HL$TABI #4#; 
      DEF GW$ID$TCI  #X"54435043492020"#;                 # 'TCPCI  ' # 
      DEF GW$HL$TCI  #62#;
      DEF GW$ID$TCSI #X"54435043534920"#;                 # 'TCPCSI ' # 
      DEF GW$HL$TCSI #4#; 
      DEF GW$ID$TDC  #X"54435044432020"#;                 # 'TCPDC  ' # 
      DEF GW$HL$TDC  #4#; 
      DEF GW$ID$TDI  #X"54435044492020"#;                 # 'TCPDI  ' # 
      DEF GW$HL$TDI  #4#; 
      DEF GW$ID$TEI  #X"54435045492020"#;                 # 'TCPEI  ' # 
      DEF GW$HL$TEI  #4#; 
      DEF GW$ID$TFCI #X"54435046434920"#;                 # 'TCPFCI ' # 
      DEF GW$HL$TFCI #4#; 
      DEF GW$ID$TR   #X"54435052202020"#;                 # 'TCPR   ' # 
      DEF GW$HL$TR   #4#; 
      DEF GW$ID$UDI  #X"54435055444920"#;                 # 'TCPUDI ' # 
      DEF GW$HL$UDI  #4#; 
  
# 
*     TELNET REQUESTS.
# 
  
      DEF GW$ID$LACR #X"54454C41435220"#;                 # 'TELACR ' # 
      DEF GW$HL$LACR #102#; 
      DEF GW$ID$LAR  #X"54454C41522020"#;                 # 'TELAR  ' # 
      DEF GW$HL$LAR  #4#; 
      DEF GW$ID$LCR  #X"54454C43522020"#;                 # 'TELCR  ' # 
      DEF GW$HL$LCR  #8#; 
      DEF GW$ID$LCS  #X"54454C43532020"#;                 # 'TELCS  ' # 
      DEF GW$HL$LCS  #4#; 
      DEF GW$ID$LDR  #X"54454C44522020"#;                 # 'TELDR  ' # 
      DEF GW$HL$LDR  #4#; 
      DEF GW$ID$LFCR #X"54454C46435220"#;                 # 'TELFCR ' # 
      DEF GW$HL$LFCR #4#; 
      DEF GW$ID$LODR #X"54454C4F445220"#;                 # 'TELODR ' # 
      DEF GW$HL$LODR #8#; 
      DEF GW$ID$LOR  #X"54454C4F522020"#;                 # 'TELOR  ' # 
      DEF GW$HL$LOR  #8#; 
      DEF GW$ID$LOS  #X"54454C4F532020"#;                 # 'TELOS  ' # 
      DEF GW$HL$LOS  #4#; 
      DEF GW$ID$LPCR #X"54454C50435220"#;                 # 'TELPCR ' # 
      DEF GW$HL$LPCR #102#; 
      DEF GW$ID$LUDR #X"54454C55445220"#;                 # 'TELUDR ' # 
      DEF GW$HL$LUDR #8#; 
  
# 
*     TELNET INDICATIONS. 
# 
  
      DEF GW$ID$LAI  #X"54454C41492020"#;                 # 'TELAI  ' # 
      DEF GW$HL$LAI  #4#; 
      DEF GW$ID$LCI  #X"54454C43492020"#;                 # 'TELCI  ' # 
      DEF GW$HL$LCI  #4#; 
      DEF GW$ID$LCRI #X"54454C43524920"#;                 # 'TELCRI ' # 
      DEF GW$HL$LCRI #58#;
      DEF GW$ID$LCSI #X"54454C43534920"#;                 # 'TELCSI ' # 
      DEF GW$HL$LCSI #4#; 
      DEF GW$ID$LDC  #X"54454C44432020"#;                 # 'TELDC  ' # 
      DEF GW$HL$LDC  #4#; 
      DEF GW$ID$LDI  #X"54454C44492020"#;                 # 'TELDI  ' # 
      DEF GW$HL$LDI  #4#; 
      DEF GW$ID$LEI  #X"54454C45492020"#;                 # 'TELEI  ' # 
      DEF GW$HL$LEI  #4#; 
      DEF GW$ID$LFCI #X"54454C46434920"#;                 # 'TELFCI ' # 
      DEF GW$HL$LFCI #4#; 
      DEF GW$ID$LODI #X"54454C4F444920"#;                 # 'TELODI ' # 
      DEF GW$HL$LODI #4#; 
      DEF GW$ID$LOI  #X"54454C4F492020"#;                 # 'TELOI  ' # 
      DEF GW$HL$LOI  #4#; 
      DEF GW$ID$LUDI #X"54454C55444920"#;                 # 'TELUDI ' # 
      DEF GW$HL$LUDI #4#; 
  
# 
*     GATEWAY PRIMITIVE HEADERS.
* 
*     THESE HEADERS ARE THE SYMPL EQUIVALENTS OF THE CDCNET CYBIL 
*     PRIMITIVE HEADER DATA STRUCTURES.  EACH HEADER FIELD IS 
*     ALIGNED EXACTLY THE SAME AS ITS CDCNET CYBIL COUNTERPART
*     SO THAT THE HEADER CAN BE TRANSFERED ACROSS NAM BETWEEN 
*     IT AND THE TCP G/W. 
# 
  
      DEF DN$GWHD$SZ  #102#; # MAXIMUM GW HEADER SIZE                 # 
      DEF DGWVERSION  #X"10"#; # HEADER VERSION                       # 
      DEF GW$FLST$SZ  #4#;   # FULLSTAMP RECORD SIZE IN WORDS         # 
      DEF GW$IAD$SZ   #2#;   # IP ADDRESS RECORD SIZE IN WORDS        # 
      DEF GW$ICHD$SZ  #2#;   # ICMP HEADER RECORD SIZE IN WORDS       # 
      DEF GW$IPHD$SZ  #4#;   # IP HEADER RECORD SIZE IN WORDS         # 
      DEF GW$IPOP$SZ  #44#;  # IP OPTION RECORD SIZE IN WORDS         # 
      DEF GW$LGAR$SZ  #4#;   # LARGE ARRAY ELEMENT SIZE IN WORDS      # 
      DEF GW$LIST$SZ  #2#;   # LIST ELEMENT SIZE IN WORDS             # 
      DEF GW$ROUT$SZ  #20#;  # IP ROUTING RECORD SIZE IN WORDS        # 
      DEF GW$SBYT$SZ  #36#;  # SPECIAL BYTE ARRAY SIZE IN WORDS       # 
      DEF GW$SCUR$SZ  #2#;   # IP SECURITY RECORD SIZE IN WORDS       # 
      DEF GW$SMAR$SZ  #2#;   # SMALL ARRAY ELEMENT SIZE IN WORDS      # 
      DEF GW$STRE$SZ  #2#;   # IP STREAMID RECORD SIZE IN WORDS       # 
      DEF GW$TAD$SZ   #4#;   # TCP ADDRESS RECORD SIZE IN WORDS       # 
      DEF GW$TIMG$SZ  #20#;  # IP TIMING RECORD SIZE IN WORDS         # 
      DEF GW$TMST$SZ  #2#;   # TIMESTAMP RECORD SIZE IN WORDS         # 
      DEF GW$TST$SZ   #14#;  # TCP STATUS RECORD SIZE IN WORDS        # 
      DEF GW$UTO$SZ   #2#;   # ULP TIMEOUT RECORD SIZE IN WORDS       # 
  
      COMMON TCP$DGW; 
      BEGIN 
  
      BASED ARRAY GW$HEADER [0:0] S(DN$GWHD$SZ);
        BEGIN                        # GW$HEADER                      # 
  
# 
*       ITEMS COMMON TO ALL HEADERS.
# 
  
        ITEM GW$IDENT   U(00,00,56); # PRIMITIVE ID (1-7 ASCII CHARS) # 
        ITEM GW$HDR$TYP U(01,00,04); # HEADER TYPE (0=REQ/IND,1=REPLY)# 
        ITEM GW$HDR$LEN U(01,04,16); # HEADER LENGTH (0..FFFF)        # 
        ITEM GW$DAT$LEN U(01,20,16); # DATA LENGTH (0..FFFF)          # 
        ITEM GW$STATUS  U(01,36,16); # REQUEST STATUS (TPSTAT, IPSTAT,
                                         OR TNSTATUS)                 # 
        ITEM GW$VERSION U(01,52,08); # HEADER VERSION NUMBER          # 
  
# 
*       IP REQUEST HEADERS. 
# 
  
# 
*       IP CLOSE SAP. 
# 
  
        ITEM GW$ICS$STS U(01,36,16); # STATUS             (IPSTAT)    # 
        ITEM GW$ICS$SID I(02,00,32); # SAPID              (ITTSAPID)  # 
        ITEM GW$ICS$PCL U(02,32,08); # PROTOCOL           (IPPRTCL)   # 
  
# 
*       IP OPEN SAP.
# 
  
        ITEM GW$IOS$STS U(01,36,16); # STATUS             (IPSTAT)    # 
        ITEM GW$IOS$SID I(02,00,32); # SAPID              (ITTSAPID)  # 
        ITEM GW$IOS$PCL U(02,32,08); # PROTOCOL           (IPPRTCL)   # 
  
# 
*       IP SEND REQUEST.
# 
  
        ITEM GW$ISR$STS U(01,36,16); # STATUS             (IPSTAT)    # 
        ITEM GW$ISR$SRC U(02,00,60); # SOURCE             (GW$IP$SAD) # 
        ITEM GW$ISR$DES U(04,00,60); # DESTINATION        (GW$IP$DAD) # 
        ITEM GW$ISR$SID I(06,00,32); # SAPID              (ITTSAPID)  # 
        ITEM GW$ISR$ID  U(06,32,16); # HEADER IDENTIFIER  (GW$IPHD$ID)# 
        ITEM GW$ISR$PCL U(06,48,08); # HEADER PROTOCOL    (GW$IPHD$PC)# 
        ITEM GW$ISR$HIU B(07,04,01); # HEADER IN USE      (BOOLEAN)   # 
        ITEM GW$ISR$HFU B(07,05,01); # HEADER FIELDS USED (BOOLEAN)   # 
        ITEM GW$ISR$OIU B(07,06,01); # OPTIONS IN USE     (BOOLEAN)   # 
        ITEM GW$ISR$HDR U(08,00,60); # HEADER             (GW$IP$HDR) # 
        ITEM GW$ISR$OPT U(12,00,60); # OPTIONS            (GW$IP$OPT) # 
  
# 
*       IP INDICATION HEADERS.
# 
  
# 
*       IP DATA INDICATION. 
# 
  
        ITEM GW$IDI$HDR U(02,00,60); # HEADER             (GW$IP$HDR) # 
        ITEM GW$IDI$SRC U(06,00,60); # SOURCE             (GW$IP$SAD) # 
        ITEM GW$IDI$DES U(08,00,60); # DESTINATION        (GW$IP$DAD) # 
        ITEM GW$IDI$SID I(10,00,32); # SAPID              (ITTSAPID)  # 
        ITEM GW$IDI$OIU B(10,32,01); # OPTIONS IN USE     (BOOLEAN)   # 
        ITEM GW$IDI$OPT U(12,00,60); # OPTIONS            (GW$IP$OPT) # 
  
# 
*       IP ERROR INDICATION.
# 
  
        ITEM GW$IEI$HDR U(02,00,60); # HEADER             (GW$IP$HDR) # 
        ITEM GW$IEI$SRC U(06,00,60); # SOURCE             (GW$IP$SAD) # 
        ITEM GW$IEI$DES U(08,00,60); # DESTINATION        (GW$IP$DAD) # 
        ITEM GW$IEI$OPT U(10,00,60); # OPTIONS            (GW$IP$OPT) # 
        ITEM GW$IEI$SID I(54,00,32); # SAPID              (ITTSAPID)  # 
        ITEM GW$IEI$ERR U(54,32,16); # ERROR              (IPSTAT)    # 
        ITEM GW$IEI$BP  U(55,04,16); # BAD PARAM          (IPBAD$PRM) # 
  
# 
*       ICMP REQUEST HEADERS. 
# 
  
# 
*       ICMP REQUEST. 
# 
  
        ITEM GW$IIR$STS U(01,36,16); # STATUS             (IPSTAT)    # 
        ITEM GW$IIR$SRC U(02,00,60); # SOURCE             (GW$IP$SAD) # 
        ITEM GW$IIR$DES U(04,00,60); # DESTINATION        (GW$IP$DAD) # 
        ITEM GW$IIR$ICH U(06,00,60); # ICMP HEADER        (GW$IC$HDR) # 
        ITEM GW$IIR$PCL U(08,00,08); # PROTOCOL           (IPRTCL)    # 
        ITEM GW$IIR$SID I(08,08,32); # SAPID              (ITTSAPID)  # 
  
# 
*       ICMP INDICATION HEADERS.
# 
  
# 
*       ICMP INDICATION.
# 
  
        ITEM GW$III$SRC U(02,00,60); # SOURCE             (GW$IP$SAD) # 
        ITEM GW$III$DES U(04,00,60); # DESTINATION        (GW$IP$DAD) # 
        ITEM GW$III$ICH U(06,00,60); # ICMP HEADER        (GW$IC$HDR) # 
        ITEM GW$III$SID I(08,00,32); # SAPID              (ITTSAPID)  # 
  
  
# 
*       TCP REQUEST HEADERS.
# 
  
# 
*       TCP ALLOCATE. 
# 
  
        ITEM GW$TA$STS U(01,36,16); # STATUS              (TPSTAT)    # 
        ITEM GW$TA$ICI I(02,00,32); # ITT CEPID                       # 
        ITEM GW$TA$AUT B(02,32,01); # AUTO-ALLOCATION (CONTINUOUS)    # 
        ITEM GW$TA$SZ  U(03,04,32); # SIZE               (0..7FFFFFFF)# 
  
# 
*       TCP ACTIVE CONNECT. 
# 
  
        ITEM GW$TAC$STS U(01,36,16); # STATUS             (TPSTAT)    # 
        ITEM GW$TAC$DSI I(02,00,32); # DGW SAPID                      # 
        ITEM GW$TAC$AUT B(02,32,01); # AUTO-ALLOCATION (CONTINUOUS)   # 
        ITEM GW$TAC$ICI I(03,04,32); # ITT CEPID                      # 
        ITEM GW$TAC$DCI I(04,00,32); # DGW CEPID                      # 
        ITEM GW$TAC$SRC U(06,00,60); # SOURCE             (GW$TCP$SAD)# 
        ITEM GW$TAC$DES U(10,00,60); # DESTINATION        (GW$TCP$DAD)# 
        ITEM GW$TAC$ALO U(14,00,16); # ALLOCATION         (0..FFFF)   # 
        ITEM GW$TAC$IPH U(16,00,60); # IP HEADER          (GW$IP$HDR) # 
        ITEM GW$TAC$IPO U(20,00,60); # IP OPTIONS         (GW$IP$OPT) # 
        ITEM GW$TAC$UTO U(64,00,60); # ULP TIMEOUT        (GW$ULP$TO) # 
        ITEM GW$TAC$PSH B(66,00,01); # PUSH FLAG          (TPUSH)     # 
        ITEM GW$TAC$URG B(66,01,01); # URGENT FLAG        (TPURG)     # 
  
# 
*       TCP ABORT CURRENT CONNECTION. 
# 
  
        ITEM GW$TACC$ST U(01,36,16); # STATUS             (TPSTAT)    # 
        ITEM GW$TACC$IC I(02,00,32); # ITT CEPID                      # 
  
# 
*       TCP CLOSE SAP.
# 
  
        ITEM GW$TCS$STS U(01,36,16); # STATUS             (TPSTAT)    # 
        ITEM GW$TCS$ISI I(02,00,32); # ITT SAPID                      # 
  
# 
*       TCP DISCONNECT. 
# 
  
        ITEM GW$TD$STS U(01,36,16); # STATUS              (TPSTAT)    # 
        ITEM GW$TD$ICI I(02,00,32); # ITT CEPID                       # 
  
# 
*       TCP OPEN SAP. 
# 
  
        ITEM GW$TOS$STS U(01,36,16); # STATUS             (TPSTAT)    # 
        ITEM GW$TOS$ISI I(02,00,32); # ITT SAPID                      # 
        ITEM GW$TOS$DSI I(03,04,32); # DGW SAPID                      # 
  
# 
*       TCP PASSIVE CONNECT.
# 
  
        ITEM GW$TPC$STS U(01,36,16); # STATUS             (TPSTAT)    # 
        ITEM GW$TPC$DSI I(02,00,32); # DGW SAPID                      # 
        ITEM GW$TPC$AUT B(02,32,01); # AUTO-ALLOCATION (CONTINUOUS)   # 
        ITEM GW$TPC$ICI I(03,04,32); # ITT CEPID                      # 
        ITEM GW$TPC$DCI I(04,00,32); # DGW CEPID                      # 
        ITEM GW$TPC$SRC U(06,00,60); # SOURCE             (GW$TCP$SAD)# 
        ITEM GW$TPC$DES U(10,00,60); # DESTINATION        (GW$TCP$DAD)# 
        ITEM GW$TPC$ALO U(14,00,16); # ALLOCATION         (0..FFFF)   # 
        ITEM GW$TPC$IPH U(16,00,60); # IP HEADER          (GW$IP$HDR) # 
        ITEM GW$TPC$IPO U(20,00,60); # IP OPTIONS         (GW$IP$OPT) # 
        ITEM GW$TPC$UTO U(64,00,60); # ULP TIMEOUT        (GW$ULP$TO) # 
        ITEM GW$TPC$PSH B(66,00,01); # PUSH FLAG          (TPUSH)     # 
        ITEM GW$TPC$URG B(66,01,01); # URGENT FLAG        (TPURG)     # 
  
# 
*       TCP STATUS. 
# 
  
        ITEM GW$TS$STS U(01,36,16); # STATUS              (TPSTAT)    # 
        ITEM GW$TS$DCI I(02,00,32); # DGW CEPID                       # 
        ITEM GW$TS$ICI I(03,04,32); # ITT CEPID                       # 
        ITEM GW$TS$DSI I(04,00,32); # DGW SAPID                       # 
        ITEM GW$TS$ISI I(05,04,32); # ITT SAPID                       # 
        ITEM GW$TS$SRC U(06,00,60); # SOURCE              (GW$TCP$SAD)# 
        ITEM GW$TS$DES U(10,00,60); # DESTINATION         (GW$TCP$DAD)# 
        ITEM GW$TS$IPH U(14,00,60); # IP HEADER           (GW$IP$HDR) # 
        ITEM GW$TS$IPO U(18,00,60); # IP OPTIONS          (GW$IP$OPT) # 
        ITEM GW$TS$UTO U(62,00,60); # ULP TIMEOUT         (GW$ULP$TO) # 
        ITEM GW$TS$STA U(64,00,60); # TCP STATUS RECORD   (GW$TCP$STA)# 
  
# 
*       TCP SEND DATA.
# 
  
        ITEM GW$TSD$STS U(01,36,16); # STATUS             (TPSTAT)    # 
        ITEM GW$TSD$ICI I(02,00,32); # ITT CEPID                      # 
        ITEM GW$TSD$PSH B(02,32,01); # PUSH FLAG          (TPUSH)     # 
        ITEM GW$TSD$URG B(02,33,01); # URGENT BLAG        (TPURG)     # 
        ITEM GW$TSD$UTO U(04,00,60); # ULP TIMEOUT        (GW$ULP$TO) # 
  
# 
*       TCP INDICATION HEADERS. 
# 
  
# 
*       TCP ABORT INDICATION. 
# 
  
        ITEM GW$TABI$RE U(01,36,16); # REASON             (TPSTAT)    # 
        ITEM GW$TABI$IC I(02,00,32); # ITT CEPID                      # 
  
# 
*       TCP CONNECTION INDICATION.
# 
  
        ITEM GW$TCI$ICI I(02,00,32); # ITT CEPID                      # 
        ITEM GW$TCI$SRC U(04,00,60); # SOURCE             (GW$TCP$SAD)# 
        ITEM GW$TCI$DES U(08,00,60); # DESTINATION        (GW$TCP$DAD)# 
        ITEM GW$TCI$IPH U(12,00,60); # IP HEADER          (GW$IP$HDR) # 
        ITEM GW$TCI$IPO U(16,00,60); # IP OPTIONS         (GW$IP$OPT) # 
        ITEM GW$TCI$UTO U(60,00,60); # ULP TIMEOUT        (GW$ULP$TO) # 
  
# 
*       TCP CLOSE SAP INDICATION. 
# 
  
        ITEM GW$TCSI$IS I(02,00,32); # ITT SAPID                      # 
        ITEM GW$TCSI$RE U(02,32,16); # REASON             (TPSTAT)    # 
  
# 
*       TCP DISCONNECT CONFIRMATION.
# 
  
        ITEM GW$TDC$ICI I(02,00,32); # ITT CEPID                      # 
  
# 
*       TCP DISCONNECT INDICATION.
# 
  
        ITEM GW$TDI$ICI I(02,00,32); # ITT CEPID                      # 
  
# 
*       TCP ERROR INDICATION. 
# 
  
        ITEM GW$TEI$ETY I(01,36,16); # EITYPE             (TPSTAT)    # 
        ITEM GW$TEI$ICI I(02,00,32); # ITT CEPID                      # 
  
# 
*       TCP FLOW CONTROL INDICATION.
# 
  
        ITEM GW$TFCI$IC I(02,00,32); # ITT CEPID                      # 
        ITEM GW$TFCI$SI B(02,32,01); # START INDICATION   (BOOLEAN)   # 
  
# 
*       TCP RECEIVE.
# 
  
        ITEM GW$TR$ICI I(02,00,32); # ITT CEPID                       # 
        ITEM GW$TR$URG B(02,32,01); # URGENT FLAG         (TPURG)     # 
  
# 
*       TCP URGENT DATA INDICATION. 
# 
  
        ITEM GW$UDI$ICI I(02,00,32); # ITT CEPID                      # 
  
  
# 
*       TELNET OPTION DATA REQUEST. 
# 
  
        ITEM GW$LODR$ST U(01,36,16); # STATUS             (TNSTATUS)  # 
        ITEM GW$LODR$IC I(02,00,32); # ITT CEPID                      # 
        ITEM GW$LODR$PS B(02,32,01); # PUSH FLAG          (TPUSH)     # 
        ITEM GW$LODR$TO U(04,00,60); # TCP TIMEOUT OPT    (GW$ULP$TO) # 
        ITEM GW$LODR$OC U(06,00,09); # OPTION CODE        (TNOPTIONS) # 
  
# 
*       TELNET OPTION REQUEST.
# 
  
        ITEM GW$LOR$STS U(01,36,16); # STATUS             (TNSTATUS)  # 
        ITEM GW$LOR$ICI I(02,00,32); # ITT CEPID                      # 
        ITEM GW$LOR$PSH B(02,32,01); # PUSH FLAG          (TPUSH)     # 
        ITEM GW$LOR$UTO U(04,00,60); # TCP TIMEOUT OPT    (GW$ULP$TO) # 
        ITEM GW$LOR$ON  U(06,00,03); # OPTION NEGOTIATION (TNOPT$NEG) # 
        ITEM GW$LOR$OC  U(06,03,09); # OPTION CODE        (TNOPTIONS) # 
  
        END                          # GW$HEADER                      # 
  
# 
*     TCP DATA BLOCK. 
# 
  
      BASED ARRAY GW$TCP$DAT [0:0] S(1);
        BEGIN 
        ITEM GW$TCPDATA   U(00,00,60); # ONE WORD OF DATA BYTES       # 
        END 
  
# 
*     TCP SOURCE ADDRESS RECORD PRIMITIVE.
# 
  
      BASED ARRAY GW$TCP$SAD [0:0] S(GW$TAD$SZ);
        BEGIN # GW$TCP$SAD #
        ITEM GW$TSAD$AD U(00,00,60); # ADDRESS            (GW$IP$SAD) # 
        ITEM GW$TSAD$PI B(02,00,01); # PORT IN USE        (BOOLEAN)   # 
        ITEM GW$TSAD$PT U(02,08,16); # PORT               (0..FFFF)   # 
        END  # GW$TCP$SAD # 
  
# 
*     TCP DESTINATION ADDRESS RECORD PRIMITIVE. 
# 
  
      BASED ARRAY GW$TCP$DAD [0:0] S(GW$TAD$SZ);
        BEGIN # GW$TCP$DAD #
        ITEM GW$TDAD$AD U(00,00,60); # ADDRESS            (GW$IP$DAD) # 
        ITEM GW$TDAD$PI B(02,00,01); # PORT IN USE        (BOOLEAN)   # 
        ITEM GW$TDAD$PT U(02,08,16); # PORT               (0..FFFF)   # 
        END  # GW$TCP$DAD # 
  
  
# 
*     TCP STATUS RECORD PRIMITIVE.
# 
  
      BASED ARRAY GW$TCP$STA [0:0] S(GW$TST$SZ);
        BEGIN # GW$TCP$STA #
        ITEM GW$TSTS$TO U(00,00,60); # ULP TIMEOUT (GW$ULP$TO)        # 
        ITEM GW$TSTS$PS I(02,00,32); # PDU SIZE (INTEGER)             # 
        ITEM GW$TSTS$AL I(03,28,32); # ALLOCATION (INTEGER)           # 
        ITEM GW$TSTS$FS I(04,00,32); # FSM STATE (INTEGER)            # 
        ITEM GW$TSTS$US I(05,28,32); # UNSENT (INTEGER)               # 
        ITEM GW$TSTS$SU I(06,00,32); # SENT UNACKED (INTEGER)         # 
        ITEM GW$TSTS$ST I(07,28,32); # SENT TOTAL (INTEGER)           # 
        ITEM GW$TSTS$UD I(08,00,32); # UNDELIVERED (INTEGER)          # 
        ITEM GW$TSTS$RU I(09,28,32); # RECEIVED UNACKED (INTEGER)     # 
        ITEM GW$TSTS$RT I(10,00,32); # RECEIVED TOTAL (INTEGER)       # 
        ITEM GW$TSTS$RN I(11,28,32); # ROUND TRIP TIME (INTEGER)      # 
        ITEM GW$TSTS$RC I(12,00,32); # RETRANSMIT COUNT (INTEGER)     # 
        END # GW$TCP$STA #
  
  
# 
*     ULP TIMEOUT RECORD PRIMITIVE. 
# 
  
      BASED ARRAY GW$ULP$TO [0:0] S(GW$UTO$SZ); 
        BEGIN # GW$ULP$TO # 
        ITEM GW$UTO$UTO I(00,00,32); # ULP TIMEOUT (INTEGER)          # 
        ITEM GW$UTO$TAB B(00,32,01); # TIMEOUT ABORT (BOOLEAN)        # 
        END  # GW$ULP$TO #
  
  
# 
*     SPECIAL BYTE ARRAY PRIMITIVE. 
# 
  
      BASED ARRAY GW$SPE$BYT [0:0] S(GW$SBYT$SZ); 
        BEGIN # GW$SPE$BYT #
        ITEM GW$SBYT$FW U(00,00,60);  # SPECIAL BYTE ARRAY FIRST WORD # 
        END  # GW$SPE$BYT # 
  
  
# 
*     IP SOURCE ADDRESS RECORD PRIMITIVE. 
# 
  
      BASED ARRAY GW$IP$SAD [0:0] S(GW$IAD$SZ); 
        BEGIN # GW$IP$SAD # 
        ITEM GW$ISAD$FU U(00,00,02); # FIELDS IN USE (0..3)           # 
        ITEM GW$ISAD$NW U(00,08,24); # NETWORK (0..FFFFFF)            # 
        ITEM GW$ISAD$HS U(00,32,24); # HOST (0..FFFFFF)               # 
        END  # GW$IP$SAD #
  
  
# 
*     IP DESTINATION ADDRESS RECORD PRIMITIVE.
# 
  
      BASED ARRAY GW$IP$DAD [0:0] S(GW$IAD$SZ); 
        BEGIN # GW$IP$DAD # 
        ITEM GW$IDAD$FU U(00,00,02); # FIELDS IN USE (0..3)           # 
        ITEM GW$IDAD$NW U(00,08,24); # NETWORK (0..FFFFFF)            # 
        ITEM GW$IDAD$HS U(00,32,24); # HOST (0..FFFFFF)               # 
        END  # GW$IP$DAD #
  
  
# 
*     IP HEADER RECORD PRIMITIVE. 
# 
  
      BASED ARRAY GW$IP$HDR [0:0] S(GW$IPHD$SZ);
        BEGIN # GW$IP$HDR # 
        ITEM GW$IPHD$VR U(00,00,04); # VERSION (0..15)                # 
        ITEM GW$IPHD$HL U(00,04,04); # IHL (0..15)                    # 
        ITEM GW$IPHD$PR U(00,08,03); # PRECEDENCE (0..7)              # 
        ITEM GW$IPHD$DY B(00,11,01); # DELAY (BOOLEAN)                # 
        ITEM GW$IPHD$TP B(00,12,01); # THROUGHPUT (BOOLEAN)           # 
        ITEM GW$IPHD$RE B(00,13,01); # RELIABLILITY (BOOLEAN)         # 
        ITEM GW$IPHD$U1 B(00,14,01); # UNUSED FLAG 1 (BOOLEAN)        # 
        ITEM GW$IPHD$U2 B(00,15,01); # UNUSED FLAG 2 (BOOLEAN)        # 
        ITEM GW$IPHD$TL U(00,16,16); # TOTAL LENGTH (0..FFFF)         # 
        ITEM GW$IPHD$ID U(00,32,16); # IDENTIFICATION (0..FFFF)       # 
        ITEM GW$IPHD$U3 B(00,48,01); # UNUSED FLAG 3 (BOOLEAN)        # 
        ITEM GW$IPHD$DF B(00,49,01); # DON'T FRAGMENT (BOOLEAN)       # 
        ITEM GW$IPHD$MF B(00,50,01); # MORE FRAGMENTS (BOOLEAN)       # 
        ITEM GW$IPHD$FO U(01,04,13); # FRAG OFFSET (0..1FFF)          # 
        ITEM GW$IPHD$TT U(01,17,08); # TIME TO LIVE (0..255)          # 
        ITEM GW$IPHD$PC U(01,25,08); # PROTOCOL (0..255)              # 
        ITEM GW$IPHD$CS U(01,36,16); # CHECKSUM (0..FFFF)             # 
        ITEM GW$IPHD$SR U(02,00,32); # SOURCE (-80000000..7FFFFFFF)   # 
        ITEM GW$IPHD$DS U(03,04,32); # DESTIN.(-80000000..7FFFFFFF)   # 
        END  # GW$IP$HDR #
  
  
# 
*     IP OPTION RECORD PRIMITIVE. 
# 
  
      BASED ARRAY GW$IP$OPT [0:0] S(GW$IPOP$SZ);
        BEGIN # GW$IP$OPT # 
        ITEM GW$IPOP$SE U(00,00,60); # SECURITY (GW$SCURITY)          # 
        ITEM GW$IPOP$SI U(02,00,60); # STREAMID (GW$STREAM)           # 
        ITEM GW$IPOP$RO U(04,00,60); # ROUTING (GW$ROUTE)             # 
        ITEM GW$IPOP$TM U(24,00,60); # TIMING (GW$TIME)               # 
        END  # GW$IP$OPT #
  
# 
*     IP SECURITY RECORD PRIMITIVE. 
# 
  
      BASED ARRAY GW$SCURITY [0:0] S(GW$SCUR$SZ); 
        BEGIN # GW$SCURITY #
        ITEM GW$SCUR$ZR U(00,00,07); # ZERO (0..127)                  # 
        ITEM GW$SCUR$IU B(00,07,01); # INUSE (BOOLEAN)                # 
        ITEM GW$SCUR$S  U(00,08,16); # SECURITY (0..FFFF)             # 
        ITEM GW$SCUR$C  U(00,24,16); # COMPARTMENTS (0..FFFF)         # 
        ITEM GW$SCUR$H  U(00,40,16); # HANDLING (0..FFFF)             # 
        ITEM GW$SCUR$TC U(01,04,24); # TCC (0..FFFFFF)                # 
        END  # GW$SCURITY # 
  
  
# 
*     IP STREAMID RECORD PRIMITIVE. 
# 
  
      BASED ARRAY GW$STREAM [0:0] S(GW$STRE$SZ);
        BEGIN # GW$STREAM # 
        ITEM GW$STRE$ZR U(00,00,07); # ZERO (0..127)                  # 
        ITEM GW$STRE$IU B(00,07,01); # INUSE (BOOLEAN)                # 
        ITEM GW$STRE$ID U(00,08,16); # STREAMID (0..FFFF)             # 
        END  # GW$STREAM #
  
  
# 
*     IP ROUTING RECORD PRIMITIVE.
# 
  
      BASED ARRAY GW$ROUTE [0:0] S(GW$ROUT$SZ); 
        BEGIN # GW$ROUTE #
        ITEM GW$ROUT$ZR U(00,00,07); # ZERO (0..127)                  # 
        ITEM GW$ROUT$IU B(00,07,01); # INUSE (BOOLEAN)                # 
        ITEM GW$ROUT$RT U(00,08,08); # RTYPE (0..255)                 # 
        ITEM GW$ROUT$IN U(00,16,08); # INDEX (0..255)                 # 
        ITEM GW$ROUT$CN U(00,24,08); # COUNT (0..255)                 # 
        ITEM GW$ROUT$LS U(02,00,60); # LIST (GW$LIST)                 # 
        END  # GW$ROUTE # 
  
  
# 
*     LIST ARRAY PRIMITIVE. 
# 
  
      BASED ARRAY GW$LIST [0:8] S(GW$LIST$SZ);
        BEGIN # GW$LIST # 
        ITEM GW$LIST$DA U(00,00,32); # DATA (-80000000..7FFFFFFF)     # 
        END  # GW$LIST #
  
  
# 
*     IP TIMING RECORD PRIMITIVE. 
# 
  
      BASED ARRAY GW$TIMING [0:0] S(GW$TIMG$SZ);
        BEGIN # GW$TIMING # 
        ITEM GW$TIMG$ZR U(00,00,07); # ZERO (0..127)                  # 
        ITEM GW$TIMG$IU B(00,07,01); # INUSE (BOOLEAN)                # 
        ITEM GW$TIMG$TT U(00,08,08); # TTYPE (0..255)                 # 
        ITEM GW$TIMG$IN U(00,16,08); # INDEX (0..255)                 # 
        ITEM GW$TIMG$CN U(00,24,08); # COUNT (0..255)                 # 
        ITEM GW$TIMG$OV U(00,32,08); # OVERFLOW (0..255)              # 
        # CASE 0 #
        ITEM GW$TIMG$SA U(02,00,60); # SMALL ARRAY (GW$SM$ARAY)       # 
        # CASE 1 #
        ITEM GW$TIMG$LA U(02,00,60); # LARGE ARRAY (GW$LG$ARAY)       # 
        END  # GW$TIMING #
  
      END                            # TCP$DGW                        # 
  
  
# 
***   START FTPS/PI LAYER-INTERFACE DECLARATIONS. 
# 
  
# 
**    CTYPE - CONNECTION TYPES. 
* 
*     THIS STATUS LIST DEFINES THE TYPES OF CONNECTIONS TO FTPS.
* 
*     ***** CAUTIONS *****
* 
*     1) IT IS USED AS AN INDEX INTO THE ACN TABLE. 
*     2) FOR SAP, CONTROL AND DATA C/N, IT IS ALSO USED AS THE
*        ABN IN THE ABH FIELD OF THE CON/ACRQ/R, AND THIS VALUE 
*        HAS TO BE NON-ZERO.  HENCE, CONTROL STATEMENT CONNECTION 
*        HAS TO BE THE FIRST (VALUE OF 0) IN THE LIST.  AND ALSO, 
*        THE LIST HAS TO BE IN THIS ORDER FOR THE PURPOSE OF RANGE
*        CHECKING.
# 
      STATUS CTYPE
        CTCS,                          # CONTROL STATEMENT CONNECTION  #
        CTSAP,                         # SAP CONNECTION                #
        CTCTRL,                        # CONTROL CONNECTION            #
        CTDATA;                        # DATA CONNECTION               #
  
# 
**    PTYPE - PROTOCOL TYPES. 
* 
*     THIS STATUS LIST DEFINES THE TYPES OF PROTOCOLS SUPPORTED 
*     BY FTPS.
* 
# 
      STATUS PTYPE
        PTXPARENT,                     # TRANSPARENT FOR C/S C/N       #
        PTSAP,                         # SAP FOR SAP C/N               #
        PTTELNET,                      # TELNET FOR CONTROL C/N        #
        PTTCP;                         # TCP FOR DATA C/N              #
  
# 
**    TRTYPE - TRANSFER TYPES.
* 
*     THIS STATUS LIST DEFINES THE TYPES OF DATA TRANSFER.
* 
# 
      STATUS TRTYPE 
        RETR,                          # RETR                          #
        STOR,                          # STOR                          #
        APPE,                          # APPE                          #
        LIST;                          # LIST                          #
  
# 
**    LAYER - FTPS/FTPI LAYER NAMES.
* 
*     THIS STATUS LIST DEFINES ALL THE LAYERS OF FTPS/FTPI APPLICATION. 
* 
# 
      STATUS LAYER
        LNAM,                          # NAM                           #
        LTCP,                          # TCP                           #
        LCM,                           # CONNECTION MANAGEMENT         #
        LFTP;                          # FTP                           #
  
# 
**    INAM - INDICATIONS GENERATED BY NAM.
* 
*     THIS STATUS LIST DEFINES ALL THE INDICATIONS GENERATED BY NAM 
*     TO THE LAYER ABOVE - THE TCP LAYER. 
# 
  
      STATUS INAM 
        NULL,                      #  0, NULL ENTRY                    #
        ININCON,                   #  1, INBOUND CONNECTION            #
        INCONBKN,                  #  2, CONNECTION BROKEN             #
        INCONCMP,                  #  3, CONNECTION COMPLETE           #
        INFCREL,                   #  4, FLOW CONTROL RELEASE          #
        INDATAV,                   #  5, DATA AVAILABLE                #
        INSHUTDN,                  #  6, SHUTDOWN                      #
        INIDLEDN,                  #  7, IDLE DOWN                     #
        INNODATA,                  #  8, NO OUTSTANDING DATA           #
        INMAX;                     #  9, MAXIMUM NAM INDICATION        #
  
# 
**    ITCP - INDICATIONS GENERATED BY TCP.
* 
*     THIS STATUS LIST DEFINES ALL THE INDICATIONS GENERATED BY TCP 
*     TO THE LAYER ABOVE - THE CONNECTION MANAGEMENT LAYER. 
# 
  
      STATUS ITCP 
        NULL,                      #  0, NULL ENTRY                    #
        ITCONCMP,                  #  1, CONNECTION COMPLETE           #
        ITCONCLSD,                 #  2, CONNECTION CLOSED             #
        ITGWCONCMP,                #  3, GATEWAY CONNECTION COMPLETE   #
        ITPASVCONE,                #  4, PASSIVE CONNECT ESTABLISHED   #
        ITDATAV,                   #  5, DATA AVAILABLE                #
        ITINCON,                   #  6, INBOUND CONNECTION            #
        ITNODATA,                  #  7, NO OUTSTANDING DATA           #
        ITFCREL,                   #  8, FLOW CONTROL RELEASE          #
        ITCONBKN,                  #  9, CONNECTION BROKEN             #
        ITIDLEDN,                  # 10, IDLEDOWN                      #
        ITSHUTDN,                  # 11, SHUTDOWN                      #
        ITACFAIL,                  # 12, ACTIVE CONNECT ATTEMPT FAILURE#
        ITCONABT,                  # 13, CONNECTION ABORTED - UNSOLICTD#
        ITCONABS,                  # 14, CONNECTION ABORTED - SOLICITED#
        ITMAX;                     # 15, MAXIMUM TCP INDICATION        #
  
# 
**    ICM - INDICATIONS GENERATED BY CONNECTION MANAGEMENT. 
* 
*     THIS STATUS LIST DEFINES ALL THE INDICATIONS GENERATED BY THE 
*     CONNECTION MANAGEMENT TO THE LAYER ABOVE - FTP. 
# 
  
      STATUS ICM
        NULL,                      #  0, NULL ENTRY                    #
        ICDATAV,                   #  1, DATA AVAILABLE                #
        ICPASVCONE,                #  2, PASSIVE CONNECT ESTABLISHED   #
        ICCONCMP,                  #  3, CONNECTION COMPLETE           #
        ICFCREL,                   #  4, FLOW CONTROL RELEASED         #
        ICCONCLSD,                 #  5, CONNECTION CLOSED             #
        ICNODATA,                  #  6, NO DATA AVAILABLE             #
        ICUVALID,                  #  7, SET LOCAL USER VALIDATION     #
        ICACFAIL,                  #  8, ACTIVE CONNECT ATTEMPT FAILURE#
        ICCONABT,                  #  9, CN ABORTED - UNSOLICITED      #
        ICCONABS,                  # 10, CN ABORTED - SOLICITED        #
        ICABTXFR,                  # 11, ABORT DATA TRANSFER           #
        ICMAX;                     # 12, MAXIMUM C/M INDICATION        #
  
# 
**    RNAM - REQUESTS PROCESSED BY NAM. 
* 
*     THIS STATUS LIST DEFINES ALL THE REQUESTS RECEIVED BY NAM 
*     FROM THE LAYER ABOVE - THE TCP LAYER. 
# 
  
      STATUS RNAM 
        NULL,                      #  0, NULL ENTRY                    #
        RNINCON,                   #  1, INITIATE CONNECTION           #
        RNENDCON,                  #  2, END CONNECTION                #
        RNSENDAT,                  #  3, SEND DATA                     #
        RNSDATAD,                  #  4, SUSPEND DATA DELIVERY         #
        RNRDATAD,                  #  5, RESUME DATA DELIVERY          #
        RNMAX;                     #  6, MAXIMUM REQUEST TO NAM        #
  
# 
**    RTCP - REQUESTS PROCESSED BY TCP. 
* 
*     THIS STATUS LIST DEFINES ALL THE REQUESTS RECEIVED BY TCP 
*     FROM THE LAYER ABOVE - THE CONNECTION MANAGEMENT LAYER. 
# 
  
      STATUS RTCP 
        NULL,                      #  0, NULL ENTRY                    #
        RTOPENSAP,                 #  1, OPEN SAP                      #
        RTCONGW,                   #  2, CONNECT TO GW - DATA C/N ONLY #
        RTIACON,                   #  3, INITIATE ACTIVE CONNECT (A-A) #
        RTIPCON,                   #  4, INITIATE PASSIVE CONNECT (A-A)#
        RTIPCONO,                  #  5, INTIATE PASV CONNECT (NO A-A) #
        RTSENDAT,                  #  6, SEND DATA                     #
        RTCLSCON,                  #  7, CLOSE CONNECTION              #
        RTSDATAD,                  #  8, SUSPEND DATA DELIVERY         #
        RTRDATAD,                  #  9, RESUME DATA DELIVERY          #
        RTABTDAT,                  # 10, ABORT DATA CONNECTION         #
        RTMAX;                     # 11, MAXIMUM REQUEST TO TCP        #
  
# 
**    RCM - REQUESTS PROCESSED BY CONNECTION MANAGEMENT.
* 
*     THIS STATUS LIST DEFINES ALL THE REQUESTS RECEIVED BY THE 
*     CONNECTION MANAGEMENT FROM THE LAYER ABOVE - FTP. 
# 
  
      STATUS RCM
        NULL,                      #  0, NULL ENTRY                    #
        RCSENDAT,                  #  1, SEND DATA                     #
        RCIPCON,                   #  2, INITIATE PASSIVE CONNECT      #
        RCIACON,                   #  3, INITIATE ACTIVE CONNECT       #
        RCCLSCON,                  #  4, CLOSE CONNECTION              #
        RCINITP,                   #  5, INIT PROCESS(CLIENT/SERVER)   #
        RCABTDAT,                  #  6, ABORT DATA CONNECTION         #
        RCLCNML,                   #  7, SEND CONNECT LOCAL NORMAL RSP #
        RCLCABN,                   #  8, SEND CONNECT LOCAL ABNORMAL   #
        RCRDATAD,                  #  9, RESUME DATA DELIVERY          #
        RCSDATAD,                  # 10, SUSPEND DATA DELIVERY         #
        RCMAX;                     # 11, MAXIMUM REQUEST TO C/M        #
# 
**    INDICAT - COMMON BLOCK FOR INDICATIONS. 
* 
*     THIS COMMON BLOCK CONTAINS THE INDICATIONS: 
*     1) FROM NAM TO TCP. 
*     2) FROM TCP TO CONNECTION MANAGEMENT. 
*     3) FROM CONNECTION MANAGEMENT TO FTP. 
*     IT IS INITIALIZED AT INITIALIZATION TIME BY ROUTINE *FFSIIPV*.
# 
  
      DEF ISIZ$     # 2 #;             # SIZE OF INDICATION (0-2)      #
      DEF RSIZ$     # 2 #;             # SIZE OF REQUEST (0-2)         #
      DEF ESIZ$     # 2 #;             # ENTRY SIZE OF INDICATION/REQT #
  
# 
**    THE FOLLOWING DEFINITIONS DEFINE THE INDEX INTO THE INDICATION
*     TABLE FOR THE VARIOUS LAYERS. 
# 
      DEF INAMTCP$   # 0 #;            # INDEX OF NAM TO TCP           #
      DEF ITCPCM$    # 1 #;            # INDEX OF TCP TO C/N MANAGEMENT#
      DEF ICMFTP$    # 2 #;            # INDEX OF C/N MANAGEMENT TO FTP#
  
      COMMON INDICAT; 
      BEGIN                            # INDICAT                       #
  
      ITEM IND$IDENT  C(10) ; 
  
      ARRAY INDICATION [00:ISIZ$] S(ESIZ$); 
        BEGIN 
        ITEM IND$C20    C(00,00,20);   # THE WHOLE BLOCK               #
        ITEM IND$WD0    U(00,00,60);   # WORD 0                        #
        ITEM IND$ICODE  U(00,00,12);   # INDICATION CODE               #
        ITEM IND$CTYPE S:CTYPE(00,12,12);   # CONNECTION TYPE          #
        ITEM IND$LEN    U(00,48,12);   # DATA LENGTH IN OCTETS         #
        ITEM IND$WD1    U(01,00,60);   # WORD 1                        #
        ITEM IND$Q      B(01,00,01);   # QUALIFY DATA BIT              #
        ITEM IND$M      B(01,03,01);   # MORE DATA BIT                 #
        ITEM IND$ADDR   U(01,42,18);   # BUFFER ADDRESS                #
        END 
  
      END                              # INDICAT                       #
# 
**    REQUEST - COMMON BLOCK FOR REQUESTS.
* 
*     THIS COMMON BLOCK CONTAINS THE REQUESTS:  
*     1) FROM TCP TO NAM OR FROM MAIN LOOP TO NAM.
*     2) FROM CONNECTION MANAGEMENT TO TCP. 
*     3) FROM FTP TO CONNECTION MANAGEMENT. 
*     IT IS INITIALIZED AT INITIALIZATION TIME BY ROUTINE *FFSIIPV*.
# 
  
# 
**    THE FOLLOWING DEFINITIONS DEFINE THE INDEX INTO THE REQUEST 
*     TABLE FOR THE VARIOUS LAYERS. 
# 
      DEF RTCPNAM$   # 0 #;            # INDEX OF TCP TO NAM           #
      DEF RCMTCP$    # 1 #;            # INDEX OF C/N MANAGEMENT TO TCP#
      DEF RFTPCM$    # 2 #;            # INDEX OF FTP TO C/N MANAGEMENT#
  
      COMMON REQUEST; 
      BEGIN                            # REQUEST                       #
  
      ITEM REQ$IDENT  C(10) ; 
  
      ARRAY REQUESTS[00:RSIZ$] S(ESIZ$);
        BEGIN 
        ITEM REQ$C20    C(00,00,20);   # THE WHOLE BLOCK               #
        ITEM REQ$WD0    U(00,00,60);   # WORD 0                        #
        ITEM REQ$RCODE  U(00,00,12);   # REQUEST CODE                  #
        ITEM REQ$CTYPE S:CTYPE(00,12,12);   # CONNECTION TYPE          #
        ITEM REQ$ECODE  U(00,24,12);   # ERROR CODE FOR ENDING C/N     #
        ITEM REQ$LEN    U(00,48,12);   # DATA LENGTH IN OCTETS         #
        ITEM REQ$WD1    U(01,00,60);   # WORD 1                        #
        ITEM REQ$Q      B(01,00,01);   # QUALIFY DATA BIT              #
        ITEM REQ$M      B(01,03,01);   # MORE DATA BIT                 #
        ITEM REQ$ADDR   U(01,42,18);   # BUFFER ADDRESS                #
        END 
  
      END                              # REQUEST                       #
  
# 
**    CTBCOM - CIRCULAR TRACE BUFFER COMMON BLOCK.
* 
*     THIS COMMON BLOCK CONTAINS ALL INFORMATION PERTAINING TO THE
*     CIRCULAR TRACE BUFFER, AND FOLLOWED BY THE BUFFER ITSELF. 
*     THIS BUFFER IS STATIC AND IS CIRCULAR I.E. WHEN THE BUFFER
*     IS FILLED, IT WRITES TO THE BEGINNING OF THE BUFFER.
# 
      DEF IND$      # 0  #;            # BLOCK TYPE IS INDICATION      #
      DEF REQ$      # 1  #;            # BLOCK TYPE IS REQUEST         #
  
      DEF CTBSIZ$   # 50 #;            # SIZE OF CTB = 51 ENTRIES      #
      DEF CTBESIZ$  #  4 #;            # CTB ENTRY SIZE = 4 WORDS      #
  
      COMMON CTBCOM;
      BEGIN                            # CTBCOM                        #
  
      ITEM CTBID   C(10);              # ID OF COMMON BLK FOR DEBUGGING#
      ITEM CTBX      U;                # INDEX OF NEXT AVAIL CTB ENTRY #
      ITEM CTBP      U;                # POINTER TO THE LAST CTB ENTRY #
      ITEM BTYPE     U;                # BLOCK TYPE = IND$/REQ$        #
      ITEM LNAME S:LAYER;              # LAYER NAME                    #
      ITEM CTBNAME C(10);              # MARKS THE BEGINNING OF CTB    #
  
      ARRAY CTB [00:CTBSIZ$] S(CTBESIZ$); 
        BEGIN 
        ITEM CTB$ID     C(00,00,10);   # DC ID = LAYER NAME + BLOCK TYP#
        ITEM CTB$C20    C(01,00,20);   # 2 WORDS IND/REQ BLOCK         #
        END 
  
      END                              # CTBCOM                        #
# 
***   END LAYER-INTERFACE DECLARATIONS. 
# 
  
# 
**    INTERNAL TCP NHP INTERFACE DECLARATIONS.
* 
*     THE FOLLOWING DEFINES THE DECLARATIONS INTERNAL TO THE TCP NHP
*     INTERFACE ROUTINES. 
# 
  
# 
*     NHP INTERFACE/TCP STATE, EVENT, ACTION CODES. 
# 
  
      DEF GWT$TAB$MX   #17#;       # MAXIMUM TABLE INDEX              # 
      DEF GWT$TAB$SZ   #3#;        # SIZE OF TABLE ENTRY IN WORDS     # 
      DEF TCP$MX$EVT   #28#;       # MAXIMUM EVENT CODE VALUE         # 
      DEF TCP$MX$ST    #13#;       # MAXIMUM STATE CODE VALUE         # 
      DEF TN$IAC      #255#;       # TELNET IAC ESCAPE CHARACTER      # 
  
      STATUS TCE$CDS # NHP IF/TCP EVENTS CODES                        # 
        TCE$INCON,   # TCP INDICATION, CONNECTION                   0 # 
        TCE$INDISC,  # TCP INDICATION, DISCONNECT                   1 # 
        TCE$INDCON,  # TCP INDICATION, DISCONNECT CONFIRM           2 # 
        TCE$INABT,   # TCP INDICATION, ABORT CONNECTION             3 # 
        TCE$INFLON,  # TCP INDICATION, FLOW START/STOP              4 # 
        TCE$ININFO,  # TCP INDICATION, DATA AVAILABLE               5 # 
        TCE$INERR,   # TCP INDICATION, ERROR                        6 # 
        TCE$INCSAP,  # TCP INDICATION, CLOSE SAP                    7 # 
        TCE$RQOSAP,  # TCP REQUEST, OPEN SAP                        8 # 
        TCE$RQCSAP,  # TCP REQUEST, CLOSE SAP                       9 # 
        TCE$RQACON,  # TCP REQUEST, ACTIVE CONNECT  - EXISTING A-A 10 # 
        TCE$RQPCON,  # TCP REQUEST, PASSIVE CONNECT WITH NO A-A    11 # 
        TCE$RQPCAA,  # TCP REQUEST, PASSIVE CONNECT - EXISTING A-A 12 # 
        TCE$RQDCON,  # TCP REQUEST, DISCONNECT                     13 # 
        TCE$RQABT,   # TCP REQUEST, ABORT CONNECTION               14 # 
        TCE$RQINFO,  # TCP REQUEST, INFO (ALLOCATE, STATUS)        15 # 
        TCE$RQDATA,  # TCP REQUEST, SEND DATA                      16 # 
        TCE$GWERPY,  # TCP GATEWAY DATA, ERROR REPLY               17 # 
        TCE$GWNRPY,  # TCP GATEWAY DATA, NORMAL REPLY              18 # 
        TCE$ABNRPY,  # TCP GATEWAY DATA, ABORT CN NORMAL REPLY     19 # 
        TCE$CSNRPY,  # TCP GATEWAY DATA, CLOSE SAP NORMAL REPLY    20 # 
        TCE$NSERR,   # TCP NETWORK STATUS, ERROR                   21 # 
        TCE$NSCONN,  # TCP NETWORK STATUS, CONNECTION COMPLETE     22 # 
        TCE$NRGWCC,  # TCP NETWORK REQUEST, CONNECT TO G/W         23 # 
        TCE$NRSDD,   # TCP NETWORK REQUEST, SUSPEND DATA DELIVERY  24 # 
        TCE$NRRDD,   # TCP NETWORK REQUEST, RESUME  DATA DELIVERY  25 # 
        TCE$NSNOD,   # TCP NETWORK STATUS, NO OUTSTANDING DATA     26 # 
        TCE$NSICN,   # TCP NETWORK STATUS, INBOUND CONNECTION      27 # 
        TCE$FCREL,   # NAM STATUS, FLOW CONTROL RELEASE            28 # 
        TCE$END;     # END OF 'TCE$CDS'                               # 
  
      STATUS TCS$CDS # TCP STATE CODES                                # 
        TCS$IDLE,    # TCP ENTRY NOT IN USE                         0 # 
        TCS$SAPAAC,  # TCP SAP A-A CONNECTION PENDING               1 # 
        TCS$SAPREQ,  # TCP SAP REQUEST PENDING                      2 # 
        TCS$SAP,     # TCP SAP ESTABLISHED                          3 # 
        TCS$CONAAC,  # TCP A-A CONNECTION PENDING                   4 # 
        TCS$CONREQ,  # TCP CONNECTION REQUEST PENDING               5 # 
        TCS$COHALF,  # TCP CONNECTION HALF OPEN                     6 # 
        TCS$CONN,    # TCP CONNECTION ESTABLISHED                   7 # 
        TCS$AACP,    # TCP A-A CONNECTION PENDING                   8 # 
        TCS$AACRQ,   # TCP CONNECT REQUEST PENDING, A-A COMPLETE    9 # 
        TCS$CLOSE,   # TCP CLOSE REQUEST PENDING                   10 # 
        TCS$SCLOS,   # TCP SAP CLOSE REQUEST PENDING               11 # 
        TCS$PASS,    # TCP TRANSPARENT CONNECTION                  12 # 
        TCS$ABORT,   # TCP ABORT REQUEST PENDING                   13 # 
        TCS$END;     # END OF 'TCS$CDS'                               # 
  
      STATUS TCA$CDS # NHP IF/TCP ACTIONS CODES                       # 
        TCA$SAPAAC,  # TCP SEND SAP A-A CONNECTION REQUEST          0 # 
        TCA$SAPSET,  # TCP COMPLETE SAP SET-UP                      1 # 
        TCA$CONAAC,  # TCP SEND A-A CONNECTION REQUEST              2 # 
        TCA$CONSET,  # TCP COMPLETE CONNECTION SET-UP               3 # 
        TCA$SENDOS,  # TCP SEND OPEN SAP                            4 # 
        TCA$SENDCS,  # TCP SEND CLOSE SAP                           5 # 
        TCA$SENDAC,  # TCP SEND ACTIVE CONNECT                      6 # 
        TCA$SENDPC,  # TCP SEND PASSIVE CONNECT                     7 # 
        TCA$SENDACC, # TCP SEND ABORT CONNECTION                    8 # 
        TCA$SENDD,   # TCP SEND DISCONNECT                          9 # 
        TCA$SENDA,   # TCP SEND ALLOCATE REQUEST                   10 # 
        TCA$SENDSD,  # TCP SEND DATA REQUEST                       11 # 
        TCA$NREPLY,  # TCP PROCESS NORMAL REPLY                    12 # 
        TCA$EREPLY,  # TCP PROCESS ERROR REPLY                     13 # 
        TCA$INDIC,   # TCP PROCESS INDICATION                      14 # 
        TCA$NOOP,    # TCP NO ACTION                               15 # 
        TCA$ABORT,   # TCP ABORT CURRENT SAPID OR CEPID            16 # 
        TCA$NETERR,  # TCP NAM NETWORK ERROR                       17 # 
        TCA$SINDIC,  # TCP SEND INDICATION TO NEXT LAYER           18 # 
        TCA$LSTOFF,  # TCP SUSPEND DATA DELIVERY                   19 # 
        TCA$LSTON,   # TCP RESUME DATA DELIVERY                    20 # 
        TCA$END;     # END OF 'TCA$CDS'                               # 
  
# 
*     LIST OF PRIMITIVE INDICATION AND REQUEST IDENTIFIERS.  THESE
*     INDEX INTO THE TCP GATEWAY PRIMITIVE TABLE. 
# 
  
      STATUS TCI$ID  # INDEX INTO TCP GATEWAY PRIMITIVE TABLE         # 
        TCI$A,       # TCP ALLOCATE REQUEST                         0 # 
        TCI$AC,      # TCP ACTIVE CONNECT REQUEST                   1 # 
        TCI$ACC,     # TCP ABORT CURRENT CONNECTION REQUEST         2 # 
        TCI$CS,      # TCP CLOSE SAP REQUEST                        3 # 
        TCI$D,       # TCP DISCONNECT REQUEST                       4 # 
        TCI$OS,      # TCP OPEN SAP REQUEST                         5 # 
        TCI$PC,      # TCP PASSIVE CONNECT REQUEST                  6 # 
        TCI$S,       # TCP STATUS REQUEST                           7 # 
        TCI$SD,      # TCP SEND DATA REQUEST                        8 # 
        TCI$ABI,     # TCP ABORT INDICATION                         9 # 
        TCI$CI,      # TCP CONNECTION INDICATION                   10 # 
        TCI$CSI,     # TCP CLOSE SAP INDICATION                    11 # 
        TCI$DC,      # TCP DISCONNECT CONFIRMATION INDICATION      12 # 
        TCI$DI,      # TCP DISCONNECT INDICATION                   13 # 
        TCI$EI,      # TCP ERROR INDICATION                        14 # 
        TCI$FCI,     # TCP FLOW CONTROL INDICATION                 15 # 
        TCI$R,       # TCP RECEIVED DATA INDICATION                16 # 
        TCI$UDI,     # TCP URGENT DATA INDICATION                  17 # 
        TCI$END;     # END OF 'TCI$ID'                                # 
  
      CONTROL EJECT;
# 
**    FTPS NAM LAYER STATE DEFINITIONS
* 
*     THE FOLLOWING STATE DEFINITIONS ARE PROVIDED FOR USE IN DEFINING
*     THE ALLOWABLE STATES THAT BE ASSUMED BY ENTITIES MANAGED BY THE 
*     FTPS NAM CONNECTION STATE TABLE HANDLER.  IT MUST BE
*     ASSIGNED A VALUE THAT IS A POWER OF 2. THIS ENABLES STATE CHECKING
*     TO BE PERFORMED BY CREATING A MASK OF STATE VALUES TO BE CHECKED, 
*     AND FORMING THE LOGICAL PRODUCT OF THE MASK AND THE CURRENTLY 
*     ASSIGNED STATE VALUE. 
# 
      DEF STATE0         #    0 #;     # STATE0  = O"00000000"         #
      DEF STATE1         # 2**0 #;     # STATE1  = O"00000001"         #
      DEF STATE2         # 2**1 #;     # STATE2  = O"00000002"         #
      DEF STATE3         # 2**2 #;     # STATE3  = O"00000004"         #
      DEF STATE4         # 2**3 #;     # STATE4  = O"00000010"         #
      DEF STATE5         # 2**4 #;     # STATE5  = O"00000020"         #
      DEF STATE6         # 2**5 #;     # STATE6  = O"00000040"         #
# 
**    NAM CONNECTION STATES 
* 
*     THE FOLLOWING DEFINITIONS ARE THE ALLOWED STATES FOR A FTPS 
*     CONNECTION ENTRY IN THE NAM LAYER.
* 
# 
      DEF NULL           #STATE0#;     # DUMMY - NO CONNECTION         #
      DEF PCONACRQ       #STATE1#;     # PENDING CON/ACRQ RESPONSE     #
      DEF PENDING        #STATE2#;     # CON/REQ/R SM RECEIVED         #
      DEF ACTIVE         #STATE3#;     # FC/INIT SM RECEIVED           #
      DEF ENDPEND        #STATE4#;     # CON/END/R SM SENT             #
      DEF RETRYPEND      #STATE5#;     # RETRY PENDING                 #
  
# 
* 
**    THE FOLLOWING SECTION CONTAINS THE NECESSARY DECLARATIONS FOR 
*     THE FTP CONNECTION MANAGEMENT LAYER STATE TABLE.
# 
  
# 
*     DEFINITIONS FOR CONNECTION MANAGEMENT STATE TABLE.
# 
  
      DEF FCM$MX$TRG   #42#;       # MAXIMUM TRIGGER TO CM STATE TABLE #
      DEF FCM$MX$ST    #14#;       # MAXIMUM STATE CODE VALUE          #
  
# 
*     FTP CONNECTION MANAGEMENT STATE TABLE EVENT (TRIGGER) CODES 
# 
      STATUS FCE$ 
        FCE$INITCLV,              # INITIALIZE - CLIENT               0#
        FCE$INITSER,              # INITIALIZE - SERVER               1#
        FCE$SAPCMPL,              # SAP CONNECTION COMPLETE           2#
        FCE$CTAACP,               # CONTROL A-A COMPLETE              3#
        FCE$DTAACP,               # DATA A-A COMPLETE                 4#
        FCE$CSCNECT,              # CONNECTED TO CONTROL STATEMENT    5#
        FCE$SAPBRKN,              # SAP CONNECTION BROKEN             6#
        FCE$CNLOCAL,              # CS ID BK "CONNECT LOCAL"          7#
        FCE$CNREMOTE,             # CS ID BK "CONNECT REMOTE"         8#
        FCE$CNRMINVD,             # CS CONNECT REMOTE INVALID         9#
        FCE$CTCNACFL,             # ACTIVE CN ATTEMP FAILED ON CT CN.10#
        FCE$CTCNCP,               # CTRL CONNECTION COMPLETE TCPCI   11#
        FCE$SDREMOTE,             # SEND COMMAND REMOTE              12#
        FCE$SDLOCAL,              # SEND COMMAND LOCAL               13#
        FCE$CSBRKN,               # CONNECTION WITH CS IS BROKEN     14#
        FCE$AACTBRKN,             # A-A FOR THE CTRL CONN. BROKEN    15#
        FCE$AADTBRKN,             # A-A FOR THE DATA CONN. BROKEN    16#
        FCE$SHUTSLOW,             # SHUT DOWN GRACEFULLY             17#
        FCE$SHUTFAST,             # SHUT DOWN IMMEDIATELY            18#
        FCE$ABDTCNRQ,             # ABORT DATA CONNECTION REQUEST    19#
        FCE$CLCTIND,              # CLOSED CTRL CN INDICATION        20#
        FCE$CTPCEST,              # SERVER CONTROL PC ESTABLISHED    21#
        FCE$SDDTRQ,               # SEND DATA REQUEST                22#
        FCE$INITPCRQ,             # INITIATE PASSIVE CONN. REQUEST   23#
        FCE$INITACRQ,             # INITIATE ACTIVE CONN. REQUEST    24#
        FCE$DTCNCMPL,             # DATA CONNECTION COMPLETE, TCPCI  25#
        FCE$DTPCEST,              # DATA PC ESTABLISHED              26#
        FCE$CTDTAVL,              # DATA AVAILABLE ON CTRL CONN.     27#
        FCE$DTDTAVL,              # DATA AVAILABLE ON DATA CONN.     28#
        FCE$FLCTREL,              # FLOW CONTROL RELEASED            29#
        FCE$NODTOUT,              # NO OUTSTANDING DATA              30#
        FCE$CLDTCNRQ,             # CLOSE DATA CONNECTION REQUEST    31#
        FCE$CLCTCNRQ,             # CLOSE CTRL CONNECTION REQUEST    32#
        FCE$CLDTIND,              # CLOSE DATA CONN. INDICATION      33#
        FCE$DTCNACFL,             # ACTIVE CONNECT FAILED ON DATA C/N34#
        FCE$CTCNABID,             # CTRL CN ABORT INDICATION         35#
        FCE$DTCNABID,             # DATA CN ABORT INDICATION         36#
        FCE$DTCNABSO,             # DATA CN ABORT IND (SOLICIT)      37#
        FCE$ABTXFR,               # ABORT DATA TRANSFER              38#
        FCE$CNCLVAL,              # CS "CONNECT LOCAL" NORMAL        39#
        FCE$CNCLBAD,              # CS "CONNECT LOCAL" ABNORMAL      40#
        FCE$RDDDCN,               # RESUME DATA DELIVERY, DATA C/N   41#
        FCE$SDDDCN,               # SUSPEND DATA DELIVERY, DATA C/N  42#
        FCE$END;                  # END OF FCMT                      43#
  
# 
*     STATE CODES FOR  FTP CONNECTION MANAGEMENT STATE TABLE
# 
      STATUS FCS$ 
        FCS$IDLE,                 # IDLE STATE                       0 #
        FCS$C$WTSAP,              # CLIENT, WAITING FOR SAP          1 #
        FCS$C$SAPOK,              # CLIENT, SAP ESTABLISHED          2 #
        FCS$C$SCAA,               # CLIENT, SAP AND CTRL A-A ESTAB   3 #
        FCS$C$SDAA,               # CLIENT, SAP AND DATA A-A BSTAB   4 #
        FCS$C$SCDAA,              # CLIENT, SAP,CTRL,DATA A-A ESTB   5 #
        FCS$C$CSOK,               # CLIENT, LIASON WITH CS DONE      6 #
        FCS$C$WCTRL,              # CLIENT, AWAIT CTRL CON. COMPL    7 #
        FCS$C$CTRLOK,             # CLIENT, CTRL CONN. ESTABLISHED   8 #
        FCS$S$WTSAP,              # SERVER, WAITING FOR SAP          9 #
        FCS$S$SAPOK,              # SERVER, SAP ESTABLISHED         10 #
        FCS$S$SPOK,               # SERVER, SAP AND PC ESTABLISHED  11 #
        FCS$S$SDOK,               # SERVER, SAP AND DATA ESTAB.     12 #
        FCS$S$SPDOK,              # SERVER, SAP, PC, DATA ESTAB.    13 #
        FCS$S$CTRLOK,             # SERVER, CTRL CONN. ESTABLISHED  14 #
        FCS$END;                  # END OF FCMS                     15 #
  
# 
*     FTP CONNECTION MANAGEMENT STATE TABLE ACTION CODES
# 
      STATUS FCA$ 
        FCA$NOOP,                 # NO ACTION                        0 #
        FCA$ABORT,                # ABORT THE APPLICATION            1 #
        FCA$OPSAPRQ,              # ISSUE OPEN SAP REQUEST           2 #
        FCA$INITCDAA,             # INITIATE CTRL AND DATA A-A       3 #
        FCA$INITPDAA,             # INITIATE PC AND DATA A-A         4 #
        FCA$LSTONCS,              # REQUEST LST/ON ON CS CN          5 #
        FCA$LSTONCT,              # REQUEST LST/ON ON CTRL CN        6 #
        FCA$DFINIT,               # DAYFILE FTPS INITIALIZED.          #
        FCA$SPAWN,                # SPAWN A COPY OF ITSELF           7 #
        FCA$SPWLONCS,             # SPAWN AND LST/ON ON CS CN        8 #
        FCA$RESTART,              # NETOFF AND RESTART               9 #
        FCA$NETOFF,               # NETOFF                          10 #
        FCA$CNLCRSP,              # CONNECT LOCAL NORMAL RESPONSE   11 #
        FCA$INITACCT,             # INITIATE AC ON CTRL CN          12 #
        FCA$ABRMCNRP,             # SEND ABNORMAL REMOTE CONN. RESP 13 #
        FCA$NMRMCNRP,             # SEND NORMAL REMOTE CONNECT RSP. 14 #
        FCA$FWDONCT,              # FORWARD ON CTRL CN              15 #
        FCA$FWDTOFTP,             # FORWARD TO FTP LAYER            16 #
        FCA$AACTCNRQ,             # ISSUE A-A REQUEST FOR CTRL CN   17 #
        FCA$PCCTCNRQ,             # ISSUE PC REQUEST FOR CTRL CN    18 #
        FCA$AADTCNRQ,             # ISSUE A-A REQUEST FOR DATA      19 #
        FCA$LOFFCTPC,             # REQUEST LST/OFF ON CTRL PC CN   20 #
        FCA$SDABRQ,               # SEND ABORT REQUEST              21 #
        FCA$INITSDRQ,             # INITIATE SEND REQUEST           22 #
        FCA$INITPCDT,             # INITIATE PC ON DATA CN          23 #
        FCA$INITACDT,             # INITIATE AC ON DATA CN          24 #
        FCA$FWDTOCS,              # FORWARD TO CONTROL STATEMENT    25 #
        FCA$PASSDTUP,             # PASS DATA UP TO FTP LAYER       26 #
        FCA$CLCNRQ,               # ISSUE CLOSE CONNECTION REQUEST  27 #
        FCA$PASSIND,              # PASS UP THE DESIRED INDICATION  28 #           #
        FCA$NOTIFYCS,             # NOTIFY CS OF REMOTE DISCONNECT  29 #           #
        FCA$CNLCBAD,              # CONNECT LOCAL ABNORMAL RESPONSE 30 #
        FCA$LSTOND,               # LST/ON DATA C/N                 31 #
        FCA$LSTOFFD,              # LST/OFF DATA C/N                32 #
        FCA$END;                  # END OF FCMA                     33 #
  
# 
* 
**    THE FOLLOWING SECTION CONTAINS THE NECESSARY DECLARATIONS FOR 
*     THE FTP LAYER STATE TABLE 
# 
  
# 
*     DEFINITIONS FOR FTP STATE TABLE.
# 
  
      DEF FTP$MX$EVT   #49#;       # MAXIMUM TRIGGER TO FTP STATE TABLE#
      DEF FTP$MX$ST    #15#;       # MAXIMUM STATE CODE VALUE          #
  
# 
*     EVENTS (TRIGGERS) FOR FTP STATE TABLE 
# 
  
      STATUS FTE$CDS
            FTE$CCNC,                  # CONTROL CN COMPLETED        0 #
            FTE$USER,                  # USER CMD                    1 #
            FTE$UPVT,                  # USER/PASS VALID, ACCT OK=T  2 #
            FTE$UPVF,                  # USER/PASS VALID, ACCT OK=F  3 #
            FTE$PWVT,                  # PASSWORD  VALID, ACCT OK=T  4 #
            FTE$PWVF,                  # PASSWORD  VALID, ACCT OK=F  5 #
            FTE$PSSI,                  # PASSWORD CMD INVALID        6 #
            FTE$USRI,                  # INVALID USER CMD            7 #
            FTE$ACCV,                  # VALID ACCT CMD              8 #
            FTE$ACCI,                  # INVALID ACCT CMD            9 #
            FTE$SLUV,                  # SET LOCAL USER VALIDATION  10 #
            FTE$LUVF,                  # LOCAL USER VALIDATION FAIL 11 #
            FTE$UCMD,                  # UNRECOGNIZED CMD           12 #
            FTE$BSYN,                  # BAD SYNTAX CMD             13 #
            FTE$UNSC,                  # UNSUPPORTED CMD            14 #
            FTE$NOOP,                  # NOOP CMD                   15 #
            FTE$PORT,                  # PORT CMD                   16 #
            FTE$PASV,                  # PASSIVE CMD                17 #
            FTE$PCNE,                  # PASSIVE CONN. ESTABLISHED  18 #
            FTE$TYPE,                  # TYPE CMD                   19 #
            FTE$STRU,                  # STRUCTURE CMD              20 #
            FTE$MODE,                  # MODE CMD                   21 #
            FTE$RETS,                  # RETR CMD FOR SERVER        22 #
            FTE$STOS,                  # STORE CMD FOR SERVER       23 #
            FTE$APPE,                  # APPEND CMD FOR SERVER      24 #
            FTE$RETC,                  # RETR CMD FOR CLIENT        25 #
            FTE$STOC,                  # STORE CMD FOR CLIENT       26 #
            FTE$FANT,                  # FILE ACTION NOT TAKEN      27 #
            FTE$ABXF,                  # ABORT DATA TRANSFER        28 #
            FTE$CNCD,                  # DATA CONNECTION COMPLETED  29 #
            FTE$DATA,                  # DATA RECD ON DATA CONNECTN 30 #
            FTE$FCRL,                  # FLOW CONTROL RELEASED      31 #
            FTE$CDCL,                  # DATA CN CLOSED (=EOF)      32 #
            FTE$NOOD,                  # NO OUTSTANDING DATA QUEUED 33 #
            FTE$RNFR,                  # RNFR CMD                   34 #
            FTE$RNTO,                  # RNTO CMD                   35 #
            FTE$IRNS,                  # INVALID RENAME SEQUENCE    36 #
            FTE$DELE,                  # DELE CMD                   37 #
            FTE$LNLS,                  # LIST/NO LIST CMD           38 #
            FTE$HELP,                  # HELP CMD                   39 #
            FTE$QUIT,                  # QUIT CMD                   40 #
            FTE$CTAB,                  # CONTROL CN ABORTED         41 #
            FTE$ACAF,                  # AC ATTEMPT FAILURE         42 #
            FTE$CDAB,                  # CONNECTION ABORT - DATA    43 #
            FTE$CTCL,                  # CONTROL CN CLOSED          44 #
            FTE$INCM,                  # INVALID CMD (+ MSG CODE)   45 #
            FTE$CDAS,                  # CN ABORTED,DATA -SOLICITED 46 #
            FTE$SYST,                  # SYST CMD                   47 #
            FTE$ALLO,                  # ALLO CMD                   48 #
            FTE$SITE,                  # SITE CMD                   49 #
            FTE$END ;                  # END OF FTE$CDS                #
  
# 
*     STATES FOR FTP STATE TABLE
# 
  
      STATUS FTS$CDS
            FTS$IDLE,                  # NULL STATE                   0#
            FTS$WTUV,                  # WAIT FOR USER VALIDATION     1#
            FTS$URWP,                  # USER RECVD,WT FOR PASSWORD   2#
            FTS$2UWP,                  # 2ND USER RECVD, WT FOR PW    3#
            FTS$WDNC,                  # WT DATA CLSD/ABTD,NO CTRL CN 4#
            FTS$UVWA,                  # USER VALID, WT FOR ACCT      5#
            FTS$UVWC,                  # USER VALID, WT CTRL CN CMPLT 6#
            FTS$UVWF,                  # USER VALID, WT FOR FTP CMD   7#
            FTS$WPCE,                  # WT FOR PC DATA ESTABLISHED   8#
            FTS$WPCS,                  # WT FOR PC DATA SATISFIED     9#
            FTS$WCCP,                  # WT DATA SAT/COMP,CMD PENDING10#
            FTS$WCCC,                  # WT CTRL CN CLSD,QUIT PENDING11#
            FTS$XFER,                  # DATA XFER                   12#
            FTS$DXQP,                  # DATA XFER, QUIT PENDING     13#
            FTS$WPCP,                  # WT DATA PC EST, CMD PENDING 14#
            FTS$WDCE,                  # WT DATA CLSD/ABTD,CTRL EXIST15#
            FTS$END ;                  # END OF FTS$CDS                #
  
# 
*     ACTION FOR FTP STATE TABLE
# 
  
      STATUS FTA$CDS
            FTA$I220,                  # ISSUE 220 RSP                 #
            FTA$PASS,                  # PROMPT FOR PASSWORD           #
            FTA$I230,                  # ISSUE 230 RSP                 #
            FTA$ACCT,                  # PROMPT FOR ACCOUNTING INFO    #
            FTA$I530,                  # ISSUE 530 RSP                 #
            FTA$USER2,                 # 502 RSP. 2ND USER NOT IMPLMTED#
            FTA$I503,                  # INVALID SEQUENCE OF CMDS      #
            FTA$SUVD,                  # SET LOCAL USER VALIDATION     #
            FTA$SUVF,                  # SET LOCAL USER VALIDN FAILED  #
            FTA$BACC,                  # BAD ACCOUNT ENTRY RESPONSE    #
            FTA$B2AC,                  # BAD 2ND ACCT COMMAND          #
            FTA$B2UR,                  # BAD 2ND USER COMMAND          #
            FTA$BADR,                  # SEND 500 RSP, BAD CMD         #
            FTA$BPRM,                  # SEND 501 RSP, BAD PARAMS      #
            FTA$CUNS,                  # SEND 502 RSP, CMD UNSUPPORTED #
            FTA$CMOK,                  # SEND 200 RSP, CMD O.K.        #
            FTA$PORT,                  # SET PORT ATTRIBUTES           #
            FTA$PASV,                  # PROCESS PASV CMD - INIT PC    #
            FTA$I227,                  # SEND 227 RSP, GOING PASSIVE   #
            FTA$I150,                  # SEND 150 RSP, OPENING DATA..  #
            FTA$TYPE,                  # PROCESS TYPE CMD              #
            FTA$STRU,                  # PROCESS STRU CMD              #
            FTA$MODE,                  # PROCESS MODE CMD              #
            FTA$IADC,                  # INIT. ACTIVE DATA CONNECT     #
            FTA$IPDC,                  # INIT. PASSIVE DATA CONNECT    #
            FTA$ADCN,                  # ABORT DATA CONNECTION         #
            FTA$A226,                  # CLOSE DATA CN, ISSUE 226 MSG  #
            FTA$B226,                  # ABORT DATA CN, ISSUE 226 MSG  #
            FTA$PRTV,                  # PROTOCOL VIOLATION - ABORT    #
            FTA$ADTC,                  # ACTION DATA XFER COMMAND      #
            FTA$DATA,                  # PROCESS DATA                  #
            FTA$C226,                  # COM DATA XFER,226, CLS CTRL CN#
            FTA$I226,                  # SEND 226 MSG, CLS CTRL CN     #
            FTA$S226,                  # SEND 226 MSG                  #
            FTA$ACDC,                  # COM DATA XFER, SEND 226 MSG   #
            FTA$ICDC,                  # ISSUE CLOSE DATA CONNECTION   #
            FTA$RNFR,                  # PROCESS RNFR COMMAND          #
            FTA$RNTO,                  # PROCESS RNTO                  #
            FTA$DELE,                  # PROCESS DELE                  #
            FTA$HELP,                  # PROCESS HELP COMMAND          #
            FTA$ICCC,                  # ISSUE 221 AND CLOSE CONTROL CN#
            FTA$QUIT,                  # PROCESS QUIT COMMAND          #
            FTA$ADNO,                  # ABORT DATA CN, NETOFF, END    #
            FTA$A426,                  # ABORT TRANSFER,ISSUE 426 MSG  #
            FTA$I426,                  # ISSUE 426 MSG                 #
            FTA$PSCF,                  # PRESET SITECOM PARAMETERS     #
            FTA$ABORT,                 # ABORT APPLICATION             #
            FTA$NOOP,                  # NO ACTION                     #
            FTA$IXXX,                  # ISSUE XXX MESSAGE (XXX PRESET)#
            FTA$I550,                  # ISSUE 550 MESSAGE             #
            FTA$A550,                  # ISSUE 550, LST/ON DATA C/N    #
            FTA$SYST,                  # PROCESS SYST COMMAND          #
            FTA$I202,                  # ISSUE 202 MESSAGE             #
            FTA$SITE,                  # PROCESS SITE COMMAND          #
            FTA$END;
  
  
# 
*     THE FOLLOWING COMMON BLOCK CONTAINS THE CURRENT STATE FOR THE 
*     FTP AND FTP MANAGEMENT LAYERS.
# 
      COMMON CURSTATEBUF;              # CURRENT STATE BUFFER          #
      BEGIN 
      ARRAY CUR$STATE[00:00] S(3);
        BEGIN 
        ITEM CUR$ST$LABEL   C      (00,00,10);
        ITEM FTP$WORD       U      (01,00,60);
        ITEM FTP$IDENT      C      (01,00,04);
        ITEM FTP$TRIG       S:FCE$ (01,24,12);
        ITEM FTP$LST$ST     S:FCS$ (01,36,12);
        ITEM FTP$CUR$ST     S:FCS$ (01,48,12);
        ITEM FCM$WORD       U      (02,00,60);
        ITEM FCM$IDENT      C      (02,00,04);
        ITEM FCM$TRIG       S:FCE$ (02,24,12);
        ITEM FCM$LST$ST     S:FCS$ (02,36,12);
        ITEM FCM$CUR$ST     S:FCS$ (02,48,12);
        END 
      END                              # COMMON CURSTATE               #
  
# 
**    TEMPBUFS -  TEMPORARY BUFFERS FOR CONNECTION-MANAGEMENT LAYER.
* 
# 
      DEF FCMBUFLEN      #273#; 
  
      COMMON TEMPBUFS;
      BEGIN 
  
      ARRAY FCM$BUF [00:FCMBUFLEN] S(1);
        BEGIN 
        ITEM FCM$BUFWRD       U(00,00,60);
        END 
  
      END                              # COMMON FCMOUTBUF              #
  
# 
**    PROMPTS - PROMPTS FOR ACCOUNT, FAMILY AND PASSWORD
* 
# 
      DEF ACCOUNT       #O"55010103240055555555"#;    # " ACCT:    "   #
      DEF FAMILY        #O"55060115111431005555"#;    # " FAMILY:  "   #
      DEF PASSWORD      #O"55200123232717220400"#;    # " PASSWORD:"   #
  
  
# 
***   START COMMAND PARSER DECLARATIONS.
* 
*     THIS COMMON BLOCK CONTAINS ALL THE INFORMATION NEEDED BY THE
*     COMMAND PARSER. 
# 
  
# 
**    DEFS REQUIRED FOR DEFINING COMMANDS AND PARAMETERS  ****
# 
  
# 
*     COMMAND NAME DEFS 
# 
      DEF ABOR          #O"01021722000000000000"#;    #ABOR            #
      DEF ACCT          #O"01030324000000000000"#;    #ACCT            #
      DEF ALLO          #O"01141417000000000000"#;    #ALLO            #
      DEF APPE          #O"01202005000000000000"#;    #APPE            #
      DEF CDUP          #O"03042520000000000000"#;    #CDUP            #
  
      DEF CWD           #O"03270400000000000000"#;    #CWD             #
      DEF DELE          #O"04051405000000000000"#;    #DELE            #
      DEF HELP          #O"10051420000000000000"#;    #HELP            #
      DEF LIST          #O"14112324000000000000"#;    #LIST            #
      DEF MODE          #O"15170405000000000000"#;    #MODE            #
  
      DEF MKD           #O"15130400000000000000"#;    #MKD             #
      DEF NLST          #O"16142324000000000000"#;    #NLST            #
      DEF NOOP          #O"16171720000000000000"#;    #NOOP            #
      DEF PASS          #O"20012323000000000000"#;    #PASS            #
      DEF PASV          #O"20012326000000000000"#;    #PASV            #
  
      DEF PORT          #O"20172224000000000000"#;    #PORT            #
      DEF PWD           #O"20270400000000000000"#;    #PWD             #
      DEF QUIT          #O"21251124000000000000"#;    #QUIT            #
      DEF REIN          #O"22051116000000000000"#;    #REIN            #
      DEF REST          #O"22052324000000000000"#;    #REST            #
  
      DEF RETR          #O"22052422000000000000"#;    #RETR            #
      DEF RMD           #O"22150400000000000000"#;    #RMD             #
      DEF RNFR          #O"22160622000000000000"#;    #RNFR            #
      DEF RNTO          #O"22162417000000000000"#;    #RNTO            #
      DEF SITE          #O"23112405000000000000"#;    #SITE            #
  
      DEF SMNT          #O"23151624000000000000"#;    #SMNT            #
      DEF STAT          #O"23240124000000000000"#;    #STAT            #
      DEF STOR          #O"23241722000000000000"#;    #STOR            #
      DEF STOU          #O"23241725000000000000"#;    #STOU            #
      DEF STRU          #O"23242225000000000000"#;    #STRU            #
  
      DEF SYST          #O"23312324000000000000"#;    #SYST            #
      DEF TYPE          #O"24312005000000000000"#;    #TYPE            #
      DEF USER          #O"25230522000000000000"#;    #USER            #
  
# 
*     ERROR CODES 
# 
      DEF ERR$500       #-01#;           # 500 RESPONSE SHOULD BE SENT #
      DEF ERR$501       #-02#;           # 501 RESPONSE SHOULD BE SENT #
  
# 
*     COMMAND NUMBER DEFS 
# 
      DEF ABOR$CMD      #00#; 
      DEF ACCT$CMD      #01#; 
      DEF ALLO$CMD      #02#; 
      DEF APPE$CMD      #03#; 
      DEF CDUP$CMD      #04#; 
  
      DEF CWD$CMD       #05#; 
      DEF DELE$CMD      #06#; 
      DEF HELP$CMD      #07#; 
      DEF LIST$CMD      #08#; 
      DEF MODE$CMD      #09#; 
  
      DEF MKD$CMD       #10#; 
      DEF NLST$CMD      #11#; 
      DEF NOOP$CMD      #12#; 
      DEF PASS$CMD      #13#; 
      DEF PASV$CMD      #14#; 
  
      DEF PORT$CMD      #15#; 
      DEF PWD$CMD       #16#; 
      DEF QUIT$CMD      #17#; 
      DEF REIN$CMD      #18#; 
      DEF REST$CMD      #19#; 
  
      DEF RETR$CMD      #20#; 
      DEF RMD$CMD       #21#; 
      DEF RNFR$CMD      #22#; 
      DEF RNTO$CMD      #23#; 
      DEF SITE$CMD      #24#; 
  
      DEF SMNT$CMD      #25#; 
      DEF STAT$CMD      #26#; 
      DEF STOR$CMD      #27#; 
      DEF STOU$CMD      #28#; 
      DEF STRU$CMD      #29#; 
  
      DEF SYST$CMD      #30#; 
      DEF TYPE$CMD      #31#; 
      DEF USER$CMD      #32#; 
  
# 
*     PARAMETER KEYWORD DEFS
# 
      DEF AC$0          #O"01030000000000000000"#;    #AC, ZERO FILLED #
      DEF AL$0          #O"01140000000000000000"#;    #AL, ZERO FILLED #
      DEF BR$0          #O"02220000000000000000"#;    #BR, ZERO FILLED #
      DEF CE$0          #O"03050000000000000000"#;    #CE, ZERO FILLED #
  
      DEF CP$0          #O"03200000000000000000"#;    #CP, ZERO FILLED #
      DEF CS$0          #O"03230000000000000000"#;    #CS, ZERO FILLED #
      DEF CT$0          #O"03240000000000000000"#;    #CT, ZERO FILLED #
      DEF DA$0          #O"04010000000000000000"#;    #DA, ZERO FILLED #
      DEF DN$0          #O"04160000000000000000"#;    #DN, ZERO FILLED #
  
      DEF FN$0          #O"06160000000000000000"#;    #FN, ZERO FILLED #
      DEF FSC$0         #O"06230300000000000000"#;    #FSC, ZERO FILLED#
      DEF IA$0          #O"11010000000000000000"#;    #IA, ZERO FILLED #
      DEF LO$0          #O"14170000000000000000"#;    #LO, ZERO FILLED #
      DEF M$0           #O"15000000000000000000"#;    #M , ZERO FILLED #
      DEF NONAME        #O"00000000000000000000"#;    #ALL ZERO        #
      DEF PN$0          #O"20160000000000000000"#;    #PN, ZERO FILLED #
      DEF PR$0          #O"20220000000000000000"#;    #PR, ZERO FILLED #
      DEF PW$0          #O"20270000000000000000"#;    #PW, ZERO FILLED #
      DEF R$0           #O"22000000000000000000"#;    #R , ZERO FILLED #
      DEF READEOI$0     #O"22050104051711000000"#;    #READEOI         #
  
      DEF SS$0          #O"23230000000000000000"#;    #SS, ZERO FILLED #
      DEF TRUNC$0       #O"24222516030000000000"#;    #TRUNC           #
      DEF UN$0          #O"25160000000000000000"#;    #UN, ZERO FILLED #
      DEF XD$0          #O"30040000000000000000"#;    #XD, ZERO FILLED #
      DEF XT$0          #O"30240000000000000000"#;    #XT, ZERO FILLED #
  
# 
*     LIST ELEMENT DEFS 
# 
      DEF A$0           #O"01000000000000000000"#;
      DEF CHAR$0$0      #O"33000000000000000000"#;    # CHARACTER "0"  #
      DEF CHAR$8$0      #O"43000000000000000000"#;    # CHARACTER "8"  #
      DEF CHAR$8E$0     #O"43050000000000000000"#;    # CHARACTERS "8E"#
      DEF CHAR$88$0     #O"43430000000000000000"#;    # CHARACTERS "88"#
      DEF APPEND$0      #O"01202005160400000000"#;
      DEF ASCII$0       #O"01230311110000000000"#;
      DEF ASCII8$0      #O"01230311114300000000"#;
      DEF ASCII8E$0     #O"01230311114305000000"#;
      DEF ASCII88$0     #O"01230311114343000000"#;
      DEF B$0           #O"02000000000000000000"#;
      DEF BASIC$0       #O"02012311030000000000"#;
      DEF BATCH$0       #O"02012403100000000000"#;
      DEF C$0           #O"03000000000000000000"#;
      DEF D$0           #O"04000000000000000000"#;
      DEF DIS$0         #O"04112300000000000000"#;
      DEF E$0           #O"05000000000000000000"#;
      DEF EXECUTE$0     #O"05300503252405000000"#;
      DEF F$0           #O"06000000000000000000"#;
      DEF FORTRAN$0     #O"06172224220116000000"#;
      DEF FP$0          #O"06200000000000000000"#;
      DEF FTNTS$0       #O"06241624230000000000"#;
      DEF I$0           #O"11000000000000000000"#;
      DEF L$0           #O"14000000000000000000"#;
      DEF LVL0$0        #O"14261433000000000000"#;
      DEF LVL1$0        #O"14261434000000000000"#;
      DEF LVL2$0        #O"14261435000000000000"#;
      DEF LVL3$0        #O"14261436000000000000"#;
      DEF LVL4$0        #O"14261437000000000000"#;
      DEF LVL5$0        #O"14261440000000000000"#;
      DEF LVL6$0        #O"14261441000000000000"#;
      DEF LVL7$0        #O"14261442000000000000"#;
      DEF MODIFY$0      #O"15170411063100000000"#;
      DEF MSF$0         #O"15230600000000000000"#;
      DEF N$0           #O"16000000000000000000"#;
      DEF NULL$0        #O"16251414000000000000"#;
      DEF P$0           #O"20000000000000000000"#;
      DEF PRIVATE$0     #O"20221126012405000000"#;
      DEF PU$0          #O"20250000000000000000"#;
      DEF PUBLIC$0      #O"20250214110300000000"#;
      DEF RA$0          #O"22010000000000000000"#;
      DEF READ$0        #O"22050104000000000000"#;
      DEF READAP$0      #O"22050104012000000000"#;
      DEF READMD$0      #O"22050104150400000000"#;
      DEF READUP$0      #O"22050104252000000000"#;
      DEF RM$0          #O"22150000000000000000"#;
      DEF RU$0          #O"22250000000000000000"#;
      DEF S$0           #O"23000000000000000000"#;
      DEF SPRIV$0       #O"23202211260000000000"#;
      DEF T$0           #O"24000000000000000000"#;
      DEF U$0           #O"25000000000000000000"#;
      DEF UPDATE$0      #O"25200401240500000000"#;
      DEF W$0           #O"27000000000000000000"#;
      DEF WRITE$0       #O"27221124050000000000"#;
      DEF X$0           #O"30000000000000000000"#;
      DEF Y$0           #O"31000000000000000000"#;
  
# 
*     TABLE SIZE DEFS 
# 
  
      DEF CDT$FIRST      #00#;    # FIRST CDT INDEX                    #
      DEF CDT$LAST       #33#;    # LAST CDT INDEX                     #
      DEF CDT$ESIZ       # 2#;    # COMMAND DISCRIPTOR TABLE ENTRY SIZE#
  
      DEF PDT$FIRST      #00#;    # FIRST PDT INDEX                    #
      DEF PDT$LAST      #100#;    # LAST PDT INDEX                     #
      DEF PDT$ESIZ       #02#;    # PARAM DISCRIPTOR TABLE ENTRY SIZE  #
  
      DEF LET$FIRST      #00#;    # FIRST LET INDEX                    #
      DEF LET$LAST      #100#;    # LAST LET INDEX                     #
      DEF LET$ESIZ       #01#;    # LIST ELEMENT TABLE ENTRY SIZE      #
  
      DEF PAR$FIRST      #01#;    # FIRST PAR INDEX                    #
      DEF PAR$LAST      #100#;    # LAST PAR INDEX                     #
      DEF PAR$ESIZ       #04#;    # PAR ARRAY ENTRY SIZE               #
  
# 
*     PARAMETER TYPE-CODE DEFS. 
# 
      DEF KEYWORD           #00#;      # KEYWORK ONLY PARAMETER TYPE-CD#
      DEF ALPHA             #01#;      # ALPHA TYPE-CODE               #
      DEF NUMERIC           #02#;      # NUMERIC TYPE-CODE             #
      DEF ALPHANUM          #03#;      # ALPHA NUMERIC TYPE-CODE       #
      DEF ALNUMAS           #04#;      # ALPHA NUMERIC AND/OR ASTERISK #
      DEF NUMAS             #05#;      # NUMERIC, OR A SINGLE ASTERISK #
      DEF LISTTYPE          #06#;      # LIST OF KNOWN VALUES          #
  
# 
*     IT IS IMPORTANT TO NOTE THAT THE FOLLOWING TYPE DEFINITIONS 
*     CONSIST OF TWO PARTS, EACH REQUIRES A SIX-BIT FIELD ( 2 OCTAL 
*     WORDS). THE FIRST FIELD IS THE TYPE CODE, WHICH MUST MATCH ONE OF 
*     THE TYPE CODES DEFINED ABOVE. THE SECOND FIELD TELL THE MAXIMUN 
*     NUMBER OF CHARACTERS THE TYPE ALLOWS. 
# 
      DEF ALPHA01      #O"0101"#;              # 1 ALPHA CHARACTER     #
      DEF ALPHA04      #O"0104"#;              # 1-4 ALPHA CHARACTERS  #
      DEF NUM02        #O"0202"#;              #1-2 NUMERIC CHARACTERS #
      DEF NUM03        #O"0203"#;              #1-7 NUMERIC CHARACTERS #
      DEF NUM04        #O"0204"#;              #1-4 NUMERIC CHARACTERS #
      DEF NUM06        #O"0206"#;              #1-6 NUMERIC CHARACTERS #
      DEF NUM07        #O"0207"#;              #1-7 NUMERIC CHARACTERS #
      DEF NUM10        #O"0212"#;              #1-10 NUMERIC CHARACTRS #
      DEF ALNUM03      #O"0303"#;              #1-3 ALPHA NUMERIC CHARS#
      DEF ALNUM07      #O"0307"#;              #1-7 ALPHA NUMERIC CHARS#
      DEF ALNUM10      #O"0312"#;              #1-10 ALPHA NUMERIC CHRS#
      DEF ALNUM20      #O"0324"#;              #1-20 ALPHANUMERIC CHARS#
      DEF ALNUMAS07    #O"0407"#;              #1-7 ALPHANUM/ ASTERISK #
      DEF ALNUMAS10    #O"0412"#;              #1-10 ALPHANUM/ASTERISK #
      DEF ALNUMAS20    #O"0424"#;              #1-20 ALPHANUM/ASTERISK #
      DEF NUMAS04      #O"0504"#;              #1-4 NUMERIC, OR 1 ASTRK#
  
  
# 
**    DECLARATIONS FOR TABLES USED BY THE COMMAND PARSER. 
# 
  
      COMMON COMMAND; 
      BEGIN 
  
      ARRAY CDT[CDT$FIRST:CDT$LAST] S(CDT$ESIZ); #COMMAND DISCRPTR TABL#
        BEGIN 
        ITEM CDT$NAME   C(00,00,10); # COMMAND NAME                    #
        ITEM CDT$NAMEN  U(00,00,60); # COMMAND NAME IN NUMERIC         #
        ITEM CDT$CNUM   U(01,00,09); # COMMAND NUMBER                  #
        ITEM CDT$PPTR   U(01,09,09); # INDEX OF FIRST PARM, THIS CMD   #
        ITEM CDT$PSIZ   U(01,18,09); # NUMBER OF PARMS IN PDT, THIS CMD#
        ITEM CDT$SPPT   B(01,32,01); # COMMAND SUPPORTED               #
        ITEM CDT$NOSPF  B(01,35,01); # COMMAND INVOLVES NOS PERM FILE  #
        END 
  
      ARRAY PDT [PDT$FIRST:PDT$LAST] S(PDT$ESIZ); #PARAM DESCRPTR TABLE#  # 
        BEGIN 
        ITEM PDT$NAME   C(00,00,10); # PARAMETER NAME                  #
        ITEM PDT$NAMEN  U(00,00,60); # PARAMETER NAME AS NUMERIC       #
        ITEM PDT$TYPE   U(01,00,12); # PARAMETER TYPE                  #
        ITEM PDT$TPCODE U(01,00,06); # PARAMETER TYPE CODE             #
        ITEM PDT$TPLEN  U(01,06,06); # MAX CHAR THIS PARA TYPE ALLOWED #
        ITEM PDT$LPTR   U(01,12,09); # INDEX OF FIRST LIST ELEMENT     #
        ITEM PDT$LSIZ   U(01,21,09); # NO. OF LIST ELEMTS IN LET       #
        ITEM PDT$PSONLY B(01,53,01); # THIS PARA IS POSTIONAL ONLY     #
        ITEM PDT$REQD   B(01,56,01); # PARAMETER REQUIRED FLAG         #
        ITEM PDT$SEEN   B(01,59,01); # PARAMETER ENCOUNTERED FLAG      #
        END 
  
      ARRAY LET[LET$FIRST:LET$LAST] S(LET$ESIZ);  # LIST ELEMENT TABLE #
        BEGIN 
        ITEM LET$VALUE  C(00,00,10); # LIST ELEMENT VALUE              #
        ITEM LET$VALUEN U(00,00,60); # LIST ELEMENT VALUE IN NUMERIC   #
        END 
  
# 
*     THE FOLLOWING ARRAYS CONTAIN THE PARSING RESULT OF THE PARAMETER
*     LIST FOR THE CURRENT FTP COMMAND. 
# 
  
      ARRAY PARANUMBUF [00:00] S(1);   # NUMBER OF PARAMETERS PARSED   #
        BEGIN 
        ITEM PARA$LAB   C(00,00,07)=["PAR$BUF"];   # LABEL FOR DEBUG   #
        ITEM PARA$NUM   I(00,42,18);        # NO. OF PARSED PARAMETERS #
        END 
  
      ARRAY PAR[PAR$FIRST:PAR$LAST] S(PAR$ESIZ); #PARSED PARAMETER TABL#
        BEGIN 
        ITEM PAR$NAME   C(00,00,10);   # PARAMETER NAME                #
        ITEM PAR$NAMEN  U(00,00,60);   # PARAMETER NAME IN NUMERIC     #
        ITEM PAR$VALUE  C(01,00,10);   # PARAMETER VALUE (10 CHARS)    #
        ITEM PAR$VALUEN U(01,00,60);   # PARAMETER VALUE IN NUMERIC    #
        ITEM PAR$VAL20  C(01,00,20);   # PARAMETER VALUE (20 CHARS)    #
        ITEM PAR$LEN    U(03,48,12);   # NO. OF CHARS IN THIS PARAM    #
        END 
  
      END                         # COMMON COMMAND                     #
  
# 
***   END COMMAND PARSER DECLARATIONS.
# 
  
  
# 
**    TMRST - TYPES OF TIMER ENTRIES. 
* 
*     THIS STATUS LIST DEFINES THE TIMER ENTRY TYPES. 
* 
# 
      STATUS TMRST
        ROLLOUT;                       # FTP FS ROLLOUT TIMER          #
# 
**    POINTBL - POINTER TABLE.
* 
*     THIS LABELLED COMMON BLOCK IS THE FIRST IN MEMORY AND IS USED TO
*     LOCATE IMPORTANT DATA STRUCTURES OF THE FILE SERVER WHEN A LOAD 
*     MAP IS NOT AVAILABLE. 
* 
# 
      COMMON POINTBL; 
      BEGIN                            # POINTBL                       #
  
      ARRAY PTRTBL[01:PTRLEN] S(1); 
        BEGIN 
        ITEM PTR$NAME    C(00,00,07);  # DISPLAY CODE POINTER NAME     #
        ITEM PTR$ADDR    U(00,42,18);  # ADDRESS OF NAMED STRUCTURE    #
        END 
  
      END                              # POINTBL                       #
# 
**    FSBUILD - FTPS BUILD DATE AND TIME. 
* 
*     THIS LABELLED COMMON BLOCK IS USED TO CONTAIN THE BUILD DATE AND
*     TIME WHICH ARE SUPPLIED BY THE COMPASS ROUTINE *FFSISRP*. 
* 
# 
      COMMON FSBUILD; 
      BEGIN                            # FSBUILD                       #
  
      ARRAY FSBTBL[00:00] S(4); 
        BEGIN 
        ITEM FSB$WORD    U(00,00,60);  # FULL WORD REFERENCE           #
        END 
  
      END                              # FSBUILD                       #
# 
**    NETINIT - *NETON* COMPLETE FLAG.
* 
*     THIS LABELLED COMMON BLOCK IS USED TO COMMUNICATE TO THE
*     REPRIEVE PROCESSOR *FSSISRP* WHETHER THE FS HAS NETTED-ON 
*     SUCCESSFULLY. 
* 
# 
      COMMON NETINIT; 
      BEGIN                            # NETINIT                       #
  
      ITEM NET$INIT      B;            # *NETON* COMPLETE FLAG         #
  
      END                              # NETINIT                       #
  
  
# 
**    BASEDPT - BASED ARRAY POINTERS. 
* 
*     THIS LABELED COMMON BLOCK CONTAINS THE BASED ARRAY POINTERS WHICH 
*     ARE USED DURING FS OPERATION. 
*     THE FIRST BASED ARRAY DEFINITION MUST BE THE APPLICATION BLOCK
*     HEADER. 
* 
# 
      COMMON BASEDPT; 
      BEGIN                            # BASEDPT                       #
  
# 
**    ABH - APPLICATION BLOCK HEADER DECLARATION. 
* 
*     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 DECLARATIONS. 
* 
*     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 
*CALL COMAPDT 
# 
**    TBUFF - DUMMY BASED ARRAY TO OBTAIN THE ADDRESS OF CERTAIN
*             ARRAY ITEMS.
# 
      BASED ARRAY TBUFF [00:00] S(1); 
        BEGIN 
        ITEM TBF$WORD   U(00,00,60);   # FULL WORD REFERENCE           #
        ITEM TBF$TXT  C(00,00,240); 
        END 
# 
**    LDRINFO - MAIN PROGRAM / OVERLAY LOAD INFORMATION.
* 
*     THIS BASED ARRAY IS USED TO DETERMINE THE SOURCE OF THE PROGRAM 
*     LOAD. IT MUST POINT TO LOCATION 64B OF PROGRAM FIELD LENGTH.
* 
# 
      BASED ARRAY LDRINFO [00:00] S(1); 
        BEGIN 
        ITEM LDI$NAME    C(00,00,07);  # CONTROL STATEMENT VERB        #
        ITEM LDI$LB      B(01,41,01);  # LOAD FROM SYSTEM FLAG         #
        END 
# 
**    EACPM - LOADER ABSOLUTE CENTRAL MEMORY TABLE.  (5400 TABLE) 
* 
*     THIS TABLE LOADED AT 100B IS USED TO LOAD THE OVERLAY FROM THE
*     SYSTEM, AND THEN FROM THE OVERLAY FILE AS THE PROGRAM EXECUTES. 
* 
# 
      BASED ARRAY EACPM [00:00] S(8); 
        BEGIN 
        ITEM EAC$NEP     U(00,42,18);  # NUMBER OF ENTRY POINTS        #
        ITEM EAC$WCS     U(01,00,18);  # 0,0 OVERLAY LENGTH            #
        ITEM EAC$MIFL    U(01,42,18);  # 0,0 OVERLAY LAST WORD ADDR + 1#
        ITEM EAC$HHA     U(04,42,18);  # HIGHEST HIGH ADDRESS ALL OVLS #
        ITEM EAC$DL      U(06,42,18);  # FAST OVL DIRECTORY LENGTH     #
        END 
  
      END                              # BASEDPT                       #
  
# 
**    EPTCOM - ENTRY POINT COMMON BLOCK.
* 
*     THIS COMMON BLOCK CONTAINS THE ENTRY POINT VALUE OF THE PROGRAM,
*     FTPS$ FOR FTP SERVER, AND FTPC$ FOR FTP CLIENT. 
*     THE VALUE IS SET BY THE COMPASS MAIN PROGRAM *FTPS* TO INDICATE 
*     IF THE PROGRAM IS RUNNING AS SERVER OR AS CLIENT. 
# 
  
      COMMON EPTCOM;
  
      BEGIN                            # EPTCOM                        #
      ITEM EPTFLAG    U;               # ENTRY POINT VALUE             #
      END                              # ETPCOM                        #
  
# 
**    FFSCOM - FTPS COMMON BLOCK. 
* 
*     THIS COMMON BLOCK CONTAINS THE STATIC DATA STRUCTURES WHICH ARE 
*     MAINTAINED BY THE FTP FS. 
* 
# 
  
      COMMON FFSCOM;
      BEGIN                            # FFSCOM                        #
  
# 
**    NSUP - NAM SUPERVISORY STATUS WORD
* 
*     NSUP IS THE WORD INTO WHICH NAM STORES THE STATE OF 
*     NETWORK COMMUNICATIONS. 
# 
      ARRAY NSUP[00:00] S(1);          # SUPERVISORY STATUS WORD       #
        BEGIN 
        ITEM NSUP$WORD   U(00,00,60);  # FULL WORD REFERNECE           #
        ITEM NSUP$C      B(00,00,01);  # WORKLIST PROCESSING COMPLETION#
        ITEM NSUP$N      B(00,02,01);  # NAM AVAILABLE BIT             #
        ITEM NSUP$I      B(00,03,01);  # INPUT IN QUEUE 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$D      B(00,05,01);  # DATA DELIVERABLE BIT          #
        ITEM NSUP$DU     U(00,05,01);  # DATA DELIVERABLE BIT          #
        ITEM NSUP$MC     U(00,30,30);  # DEBUG LOG FILE MESSAGE COUNT  #
        END 
  
# 
**    IABH - INPUT APPLICATION BLOCK HEADER 
* 
*     IABH IS THE WORD CONTAINING THE APPLICATION BLOCK HEADER WHICH
*     FTPS INTERPRETS AFTER A *NETGETL* OPERATION FOR INCOMING DATA.
# 
      ARRAY IABH[00:00] S(1);          # INPUT APPLICATION BLOCK HDR   #
        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 
  
# 
**    SAVABH - SAVE OUTPUT DATA APPLICATION BLOCK HEADER
* 
*     USE TO SAVE (TEMPORARILY QUEUE) THE APPLICATION BLOCK HEADER
*     FOR THE DATA CONNECTION WHEN THE ABL REACHES ITS LIMIT. 
# 
      ARRAY SAVABH[00:00] S(1); 
        BEGIN 
        ITEM SAVABH$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 
  
# 
**    ACN - APPLICATION CONNECTION NUMBER LIST
* 
*     THE ACN LIST CONTAINS AN ENTRY FOR EACH CONNECTION TO FTPS. 
*     THE ENTRY CONTAINS ALL INFORMATION NEEDED TO SUPPORT THE
*     CONNECTION. 
# 
      ARRAY ACN [00:NCONNECT$] S(ACNSIZ$);
        BEGIN 
        ITEM ACN$WORD        U(00,00,60);  # FULL WORD REFERENCE       #
        ITEM ACN$ACN         U(00,00,12);  # CONNECTION NUMBER         #
        ITEM ACN$ABN         U(00,12,18);  # APPLICATION BLOCK NUMBER  #
        ITEM ACN$DBZ         U(00,30,12);  # DOWNLINE BLOCK SIZE       #
        ITEM ACN$ABL         U(00,42,18);  # APPLICATION BLOCK LIMIT   #
        ITEM ACN$WBC         U(01,00,06);  # WAITING BLOCK COUNT       #
        ITEM ACN$OBC         U(01,06,06);  # OUTSTANDING BLOCK COUNT   #
        ITEM ACN$DATACN      B(01,23,01);  # THIS IS A DATA CONNECTION #
        ITEM ACN$STATE       U(01,24,06);  # CONNECTION STATE - CURRENT#
        ITEM ACN$PSTATE      U(01,30,06);  # CONNECTION STATE -PREVIOUS#
        ITEM ACN$FCBC        U(01,36,12);  # FLOW CONTROL BLOCK COUNT  #
        ITEM ACN$TRIG        U(01,48,06);  # LAST CN STATE TRIGGER     #
        ITEM ACN$WORD2       U(02,00,60);  # FULL WORD REFERENCE       #
        ITEM ACN$SNODR       B(02,00,01);  # SEND NO OUTSTANDG DATA REQ#
        ITEM ACN$NODD        B(02,01,01);  # NO DATA DELIVERY FLAG     #
        ITEM ACN$FCR         B(02,02,01);  # FLOW CONTROL RELEASE      #
        ITEM ACN$PTYPE S:PTYPE(02,03,03);  # PROTOCOL TYPE             #
        ITEM ACN$TSAPID      U(03,00,32);  # SAPID ASSIGNED BY TCP G/W #
        ITEM ACN$CSAPID      U(03,42,18);  # SAPID ASSIGNED BY NAM=ACN #
        ITEM ACN$TCEPID      U(04,00,32);  # CEPID ASSIGNED BY TCP G/W #
        ITEM ACN$CCEPID      U(04,42,18);  # CEPID ASSIGNED BY NAM=ACN #
        ITEM ACN$TSADDR     U(TS$,00,60);  # TCP SOURCE ADDRESS 
                                              (RECORD OF 'T$SADR$REC') #
        ITEM ACN$SIPFIU S:IP$FIUSTAT(05,00,60); # FIELDS IN USE        #
        ITEM ACN$SIPNET      U(06,36,24);  # NETWORK (0..0FFFFFFH)     #
        ITEM ACN$SIPHST      U(07,36,24);  # HOST (0..0FFFFFFH)        #
        ITEM ACN$STCPIU      B(08,00,01);  # PORT IN USE               #
        ITEM ACN$STCPRT      U(09,44,16);  # PORT (0..FFFF)            #
        ITEM ACN$TDADDR     U(TD$,00,60);  # TCP DESTINATION ADDRESS
                                              (RECORD OF 'T$DADR$REC') #
        ITEM ACN$DIPFIU S:IP$FIUSTAT(10,00,60); # FIELDS IN USE        #
        ITEM ACN$DIPNET      U(11,36,24);  # NETWORK (0..0FFFFFFH)     #
        ITEM ACN$DIPHST      U(12,36,24);  # HOST (0..0FFFFFFH)        #
        ITEM ACN$DTCPIU      B(13,00,01);  # PORT IN USE               #
        ITEM ACN$DTCPRT      U(14,44,16);  # PORT (0..FFFF)            #
        ITEM ACN$TCSTAT      U(15,00,12);  # CURRENT TCP STATE         #
        ITEM ACN$TPSTAT      U(15,12,12);  # PREVIOUS TCP STATE        #
        ITEM ACN$TTRIGG      U(15,24,12);  # LAST TCP STATE TRIGGER    #
        ITEM ACN$TULPTO      U(15,36,12);  # ULP TIMEOUT (SECONDS)     #
        ITEM ACN$TVERSN      U(15,48,06);  # TCP VERSION NUMBER        #
        ITEM ACN$TURGNT      B(15,54,01);  # TRUE IF URGENT EXPECTED   #
        ITEM ACN$INCMSG      B(15,55,01);  # PREV MESSAGE INCOMPLETE   #
        ITEM ACN$PUSH        B(15,56,01);  # TRUE IF DATA TO BE PUSHED #
        ITEM ACN$OUT$M       B(15,57,01);  # OUTPUT MESSAGE INCOMPLETE #
        END 
  
#     CTM - CURRENT TIME OF DAY AND NEXT FIRE TIME                     #
  
      ARRAY CTM [00:00] S(2); 
        BEGIN 
        ITEM CTM$RTIME   U(00,00,60);  # RTIME FULL WORD REFERENCE     #
        ITEM CTM$RTSEC   U(00,00,24);  # RTIME IN SECONDS              #
        ITEM CTM$RTMIL   U(00,24,36);  # RTIME IN MILLISECONDS         #
        ITEM CTM$FTSEC   U(01,00,24);  # NEXT FIRE TIME IN SECONDS     #
        END 
  
      ARRAY MAXACN [00:00] S(1);       # MAXACN FOR NETON              #
        BEGIN 
        ITEM MAX$WORD   U(00,00,60);   # FULL WORD REFERENCE           #
        ITEM MAX$NUMRCN U(00,36,12);   # NUMBER OF ORIGINATING C/N     #
        ITEM MAX$MAXACN U(00,48,12);   # MAX NUMBER OF C/N             #
        END 
  
      ARRAY MID [00:00] S(1);          # MACHINE ID                    #
        BEGIN 
        ITEM MID$WORD   U(00,00,60);   # WHOLE WORD REFERENCE          #
        ITEM MID$ID     C(00,48,02);   # MACHINE ID                    #
        END 
  
      ARRAY NAME2 [00:00] S(1);        # NAME2 FIELD IN CON/ACRQ/R     #
        BEGIN 
        ITEM NAM2$WORD  U(00,00,60);   # FULL WORD REFERENCE           #
        ITEM NAM2$NAME2 C(00,00,03);   # NAME2                         #
        ITEM NAM2$ID    C(00,00,01);   # ONE CHARACTER ID              #
        ITEM NAM2$MID   C(00,06,02);   # MACHINE ID                    #
        END 
# 
**    MBT - MANAGED BUFFER TABLE. 
* 
*     THE MANAGED BUFFER TABLE CONTAINS THE 16-WORD FET AND 
*     A 2 PRUS CIO BUFFER FOR FTPS FILE MANIPULATION. 
# 
  
      ARRAY MBT[00:00] S(MBTESIZ$); 
        BEGIN 
        ITEM MBT$WORD        U(00,00,60);  # FULL WORD REFERENCE       #
        ITEM MBT$LFN         C(00,00,07);  # LOCAL FILE NAME           #
        ITEM MBT$LFNU        U(00,00,42);  # LFN AS NUMERIC            #
        ITEM MBT$STAT        U(00,42,18);  # RETURNED STATUS CODE      #
        ITEM MBT$LEVN        U(00,42,04);  # EOR/EOF LEVEL NUMBER      #
        ITEM MBT$AT          U(00,46,05);  # ABNORMAL TERMINATION CODE #
        ITEM MBT$FSTAT       U(00,48,11);  # REPLY FROM *STATUS* MACRO #
        ITEM MBT$CODE        U(00,51,09);  # RETURN CODE               #
        ITEM MBT$COMPB       B(00,59,01);  # COMPLETION BIT            #
        ITEM MBT$MBT1        U(01,00,60);  # FULL WORD REFERENCE       #
        ITEM MBT$DT          C(01,00,02);  # DEVICE TYPE               #
        ITEM MBT$DTU         U(01,00,12);  # DEVICE TYPE INTEGER       #
        ITEM MBT$RANF        B(01,12,01);  # RANDOM ACCESS FLAG        #
        ITEM MBT$UP          B(01,14,01);  # USER PROCESSING FLAG      #
        ITEM MBT$EP          B(01,15,01);  # ERROR PROCESSING          #
        ITEM MBT$RT          B(01,16,01);  # REAL TIME PROCESSING      #
        ITEM MBT$A           B(01,21,01);  # ACCESS LEVEL PROCESSING   #
        ITEM MBT$FB          B(01,23,01);  # FLUSH BIT                 #
        ITEM MBT$LEN         U(01,36,06);  # LENGTH OF MBT-5           #
        ITEM MBT$FIRST       U(01,42,18);  # FIRST POINTER             #
        ITEM MBT$IN          U(02,42,18);  # IN POINTER                #
        ITEM MBT$OUT         U(03,42,18);  # OUT POINTER               #
        ITEM MBT$MBT4        U(04,00,60);  # FULL WORD REFERENCE       #
        ITEM MBT$AL          U(04,22,03);  # FULL WORD REFERENCE       #
        ITEM MBT$LIMIT       U(04,42,18);  # LIMIT POINTER             #
        ITEM MBT$MBT5        U(05,00,60);  # FULL WORD REFERENCE       #
        ITEM MBT$CAT         U(05,30,30);  # SECURITY CATEGORIES       #
        ITEM MBT$MBT6        U(06,00,60);  # FULL WORD REFERENCE       #
        ITEM MBT$PFN         C(08,00,07);  # PERMANNET FILE NAME       #
        ITEM MBT$SR          U(08,42,06);  # SPECIAL REQUEST           #
        ITEM MBT$CT          U(08,48,06);  # FILE CATEGORY             #
        ITEM MBT$M           U(08,54,06);  # FILE ACCESS MODE          #
        ITEM MBT$UN          C(09,00,07);  # ALTERNATE USER NAME       #
        ITEM MBT$UNU         U(09,00,42);  # ALTERNATE USER NAME (NUM) #
        ITEM MBT$DN          U(09,42,06);  # DEVICE NUMBER FOR CATLIST #
        ITEM MBT$S           U(09,36,24);  # NUMBER OF PRUS FOR FILE   #
        ITEM MBT$PW          C(10,00,07);  # FILE PASSWORD             #
        ITEM MBT$PWU         U(10,00,42);  # FILE PASSWORD AS INTEGER  #
        ITEM MBT$ERAD        U(10,42,18);  # ERROR MESSAGE ADDRESS     #
        ITEM MBT$UCW         U(11,00,60);  # USER CONTROL WORD         #
        ITEM MBT$PN          C(12,00,07);  # PACKNAME                  #
        ITEM MBT$PNU         U(12,00,42);  # PACKNAME AS INTEGER       #
        ITEM MBT$UNIT        U(12,48,12);  # NUMBER OF UNITS ON DEVICE #
        ITEM MBT$NFN         C(13,00,07);  # NEW FILE NAME             #
        ITEM MBT$XT          U(13,42,18);  # EXPIRATION TERM           #
        ITEM MBT$PR          U(15,00,03);  # PREFERRED RESIDENCE       #
        ITEM MBT$BR          U(15,03,03);  # BACKUP REQUIREMENT        #
        ITEM MBT$SS          U(15,06,06);  # SUBSYSTEM                 #
        ITEM MBT$AC          U(15,12,02);  # ALTERNATE USER CATLIST    #
        ITEM MBT$BUFFER      U(16,00,60);  # BEGINNING OF BUFFER AREA  #
        END 
# 
*     CIO BUFFER. 
* 
# 
      ARRAY CIO$BUF [0:0] S(FBUFSIZ$) ; 
        BEGIN 
        ITEM CIO$WORD   U(0,0,60) ; 
        END 
  
# 
**    WORKBUF - WORKING BUFFER. 
* 
*     DATA TRANSFER WORKING BUFFER - 1 PRU IN LENGTH. 
# 
      ARRAY WORKBUF [0:WORKSIZ$] S(1);
        BEGIN 
        ITEM WORD$WORD  U(00,00,60);
        END 
# 
**    PARMS - PARAMETER BLOCK FOR HOST NAME FILE. 
* 
*     PARMS[HN$]    = FTPS HARD-CODED HOST NAME = *LOCALHOST_*MID 
*     PARMS[HNF$]   = HOST NAME FROM HOST FILE. 
*     PARMS[IPAA$]  = IP ADDRESS IN ASCII.
*     PARMS[IPADC$] = IP ADDRESS IN DISPLAY CODE. 
*     PARMS[IPAB$]  = IP ADDRESS IN BINARY. 
# 
  
      ARRAY PARMS [01:MAXPARMS$] S(PARSIZ$);  # PARAMETER VALUES       #
        BEGIN 
        ITEM PARAM      U(00,00,60);   # FULL WORD REFERENCE           #
        ITEM PARAMC     C(00,00,40);   # CHARACTER REFERENCE           #
        ITEM PARAMP     C(00,00,80);   # CHARACTER REFERENCE           #
        ITEM PARAMSZ    U(S$,00,60);   # PARAMETER SIZE IN OCTETS      #
        END 
  
      ARRAY SIPA [00:00] S(PARSIZ$);   # SOURCE IP ADDR IN DISPLAY CODE#
        BEGIN                          # = PARMS[IPADC$]               #
        ITEM SIPA$WORD  U(00,00,60);   # FULL WORD REFERENCE           #
        ITEM SIPA$DC    C(00,00,80);   # CHARACTER REFERENCE           #
        END 
  
      END                              # FFSCOM                        #
  
      COMMON INPBUFF; 
      BEGIN 
  
# 
**    INPBUF - INPUT BUFFER.
* 
*     THIS ARRAY CONTAINS THE CURRENT DATA MESSAGE OR SUPERVISORY 
*     MESSAGE RECEIVED FROM THE NETWORK.
# 
      ITEM INPLEN     U;               # INPUT LENGTH IN OCTETS        #
  
      ARRAY INPBUF [00:INPSIZ$] S(1); 
        BEGIN 
        ITEM INP$WORD    U(00,00,60);  # WHOLE WORD REFERENCE          #
        END 
  
      END                              # INPBUFF                       #
  
      COMMON OUTBUFF; 
      BEGIN 
  
# 
**    OUTBUF - OUTPUT BUFFER. 
* 
*     THIS ARRAY CONTAINS THE CURRENT DATA MESSAGE OR SUPERVISORY 
*     MESSAGE BEING DISPATCHED TO THE NETWORK.
# 
      ITEM OUTLEN     U;               # OUTPUT LENGTH IN OCTETS       #
  
      ARRAY OUTBUF [00:OUTSIZ$] S(1); 
        BEGIN 
        ITEM OUT$WORD    U(00,00,60);  # WHOLE WORD REFERENCE          #
        END 
  
      END                              # OUTBUFF                       #
  
      COMMON DATABUF; 
      BEGIN 
# 
**    DATABUF- BUFFER FOR OUTPUTING DATA
* 
*     THIS ARRAY CONTAINS TWO ALTERNATE BUFFERS USED FOR OUTPUTTING 
*     DATA (AND ONLY DATA). 
# 
  
      BASED ARRAY CDTBUF[00:DTBUFSIZ$] S(1);    # CURRENT DATA BUFFER  #
        BEGIN 
        ITEM DTBUF$WRD   U(00,00,60); 
        END 
  
      BASED ARRAY SDTBUF[00:00] S(1);;   # SAVED DATA BUFFER POINTER   #
  
      ITEM DTBUFINDX    I;               # INDEX TO CURRENT DATA BUFFER#
  
      ARRAY DTBUF[00:01] S(DTBUFSIZ$);;  # DATA BUFFER                 #
  
      END                                # END OUTBUF                  #
  
# 
**    SPAWN - SPAWN INDICATION COMMON BLOCK.
* 
*     THIS COMMON BLOCK CONTAINS THE FLAG WHICH IS USED TO
*     INDICATE THE NEED TO SPAWN A COPY OF THE APPLICATION. 
# 
      COMMON SPAWN; 
      BEGIN                            # SPAWN                         #
  
      ITEM NOTYETSPAWN   B;            # TRUE BEFORE THE FIRST SPAWN   #
      ITEM LAST$ACRQ$RC  U;            # LAST CON/ACRQ/A REASON CODE   #
      ITEM PRGM$NAME     C(04);        # PROGRAM NAME, FTPI OR FTPS    #
  
      END                              # SPAWN                         #
# 
**    CURRENT - FTP FS CURRENT INFORMATION COMMON BLOCK.
* 
*     THIS COMMON BLOCK CONTAINS CURRENT INFORMATION CONCERNING 
*     FTP FILE SERVER OPERATION.
*     IT IS INITIALIZED AT INITIALIZATION TIME BY ROUTINE *FFSIIPV*.
* 
# 
      COMMON CURRENT; 
      BEGIN                            # CURRENT                       #
  
      ITEM FSDEBUG       B;            # FTPS DEBUG FLAG, TRUE IF FTPS #
                                       #IS COMPILED WITH SYMPL E OPTION#
      ITEM FSMC          I;            # CTRL CARD - MAX MESSAGE COUNT #
      ITEM FSNIN         I;            # CTRL CARD - NETWORK INVOCTN NO#
  
      ARRAY TCPHF [00:00] S(1);        # CTRL CARD - TCP HOST FILE UN  #
        BEGIN 
        ITEM FSTHFUN    U(00,00,60);   # WHOLE WORD REFERENCE          #
        ITEM FSTHFUNC   C(00,00,07);   # 7 CHARACTERS USER NAME        #
        END 
  
      ITEM ACNX    S:CTYPE;            # CURRENT CONNECTION ENTRY ORD. #
      ITEM CURACN        I;            # CURRENT CONNECTION NUMBER     #
      ITEM FOLFWA        U;            # FWA OF OVERLAY                #
      ITEM MBHX          I;            # CURRENT MBT ENTRY ORDINAL     #
      ITEM MSGOK         B;            # TRUE => O.K. TO SEND 226 MSG  #
      ITEM NUMACN        I;            # NUMBR OF C/N CONNECTED TO FTPS#
      ITEM PAUSE         B;            # TRUE => FLASH MESSAGE ON B-DIS#
      ITEM RNFRFN        U;            # OLD PFN IN RNFR PROTOCOL ELEMT#
      ITEM RNTOFN        U;            # NEW PFN IN RNTO PROTOCOL ELEMT#
      ITEM RSPCT   S:CTYPE;            # RESPONSE CONNECTION TYPE      #
      ITEM READMODE      B;            # TRUE => PRESET MODE TO READ   #
  
      ARRAY CSJSN [00:00] S(1);        # JSN OF CONTROL STATEMENT      #
        BEGIN 
        ITEM CSJSN$WORD U(00,00,60);   # WHOLE WORD REFERENCE          #
        ITEM CSJSN$JSN  U(00,00,24);   # JSN                           #
        END 
  
      END                              # CURRENT                       #
  
# 
**    SITE - SITE PARAMETERS COMMON BLOCK.
* 
*     THIS COMMON BLOCK CONTAINS THE SITE PARAMETERS. 
*     THE PARAMETERS ARE PRESET TO DEFAULTS AT INITIALIZATION TIME
*     BY THE ROUTINE *FFSIIPV*.  DEFAULT CHARACTER SET AND FILE TYPE
*     CAN BE CHANGED WITH THE SITE COMMAND. 
# 
      COMMON SITECOM; 
  
      BEGIN                            # SITECOM                       #
      ITEM DFLTCS       U ;            # DEFAULT CHARACTER SET         #
      ITEM DFLTFT       U ;            # DEFAULT FILE TYPE             #
      ITEM SITECS       U ;            # CHARACTER SET                 #
      ITEM SITEFSC      U ;            # FILE SKIP COUNT               #
      ITEM SITEFT       U ;            # FILE TYPE                     #
      ITEM SITETRUNC    B ;            # TRUNCATION FLAG               #
      ITEM SITERDEOI    B ;            # READ THROUGH EOI FLAG         #
  
# 
*     TRANSFER PARAMETERS ARRAY 
# 
      ARRAY TPT S(3) ;
        BEGIN 
        ITEM TPTMODE    C(0,0,1) ;     # FTP TRANSFER MODE             #
        ITEM TPTSTRU    C(1,0,1) ;     # FTP FILE STRUCTURE            #
        ITEM TPTTYPE    C(2,0,1) ;     # FTP REPRESENTATION TYPE       #
        ITEM TPTTYPE2   C(2,6,1) ;     # SECOND CHARACTER FOR FTP TYPE #
        END 
# 
*     PORT ATTRIBUTES ARRAY 
*     SIX CM WORDS WILL CONTAIN THE FOUR IP ADDRESSES AND 2 PORT ADDRS
*     INDEXING FROM 1 TO 6
# 
      ARRAY PORT$ATTB [1:6] S(1) ;
        BEGIN 
        ITEM PORT$A$C  C(0,0,60) ;     # PORT ADDRESS IN CHARACTERS    #
        ITEM PORT$A$B  U(0,0,60) ;     #                               #
        END 
  
      END                              # SITECOM                       #
  
# 
**    CTRLREC - BINARY TRANSFER CONTROL RECORD COMMON BLOCK 
* 
*     THIS COMMON BLOCK IS USED TO HOLD THE CONTROL RECORD USED IN
*     BINARY TRANSFERS. 
*     NOTE:- IF ANY OF THE FIELDS CHANGES HERE, THE MATCHING
*            DEFINITION IN FFSCFIO MUST BE ALTERED TOO. 
# 
  
      DEF OUCRECSZE       #4#;
  
      COMMON CTRLREC; 
  
      BEGIN                               # CTRLREC                   # 
      ITEM NXTBWRD                  I;    # NEXT WORD IN BUFFER       # 
      ITEM BUFFAD                   U;    # INPUT BUFFER ADDRESS      # 
      ITEM WDCNT                    U;    # TOTAL WORDS IN BUFFER     # 
      ITEM WHCNT                    U;    # TOTAL WHOLE WORDS         # 
      ITEM BYTESIN                  U;    # TOTAL BYTES ON INPUT FILE # 
      ITEM BYTESOUT                 U;    # TOTAL BYTES ON OUTPUT FILE# 
      ITEM CURRIN                   U;    # CURRENT INPUT BYTE COUNT  # 
      ITEM CURROUT                  U;    # CURRENT OUTPUT BYTE COUNT # 
      ITEM OUTFCR                   B;    # COMMON FLOW CONTROL FLAG  # 
      ITEM STATMSG                  U;    # MSG NUMBER RTND TO CALLER # 
      ITEM CLHEAD                   B;    # TRUE IF CATLIST HEADER    # 
      ITEM CLFULL                   B;    # TRUE IF FULL CATLIST      # 
      ARRAY OUCREC[ 0 : 0 ]S(OUCRECSZE);  # BINARY TRANSFERS C/RECORD # 
        BEGIN 
        ITEM OUCHDDR    C(00, 00, 07);    # IDENTIFIER *FTPCTRL*      # 
        ITEM OUCHDRU    U(00, 00, 60);    # FULL WORD REFERENCE       # 
        ITEM OUCRLEN    U(00, 42, 18);    # LENGTH OF CONTROL RECORD  # 
        ITEM OUCVERS    U(01, 00, 06);    # VERSION NUMBER            # 
        ITEM OUCFLAG    B(01, 07, 01);    # CHECKSUM-IN-USE FLAG      # 
        ITEM OUCBCNT    U(01, 12, 48);    # BYTE COUNT OF FILE        # 
        ITEM OUCKSUM    U(02, 00, 60);    # FILE CHECKSUM             # 
        ITEM OUCPSUM    U(03, 00, 60);    # CHECKSUM TO LAST FULL WD  # 
        END 
  
      END                                 # CTRLREC                   # 
  
# 
**    FRMSG - FTP REPLY MESSAGE.
* 
*     THIS COMMON BLOCK CONTAINS THE FTP REPLY MESSAGE. 
*     IT IS INITIALIZED AT INITIALIZATION TIME BY *FFSIIPV*.
# 
      DEF FTPNMSG$   # 43 # ;          # NUMBER OF RESPONSE MESSAGES-1 #
      DEF FMSGSIZ$   #  6 # ;          # MESSAGE SIZE IN CM WORDS      #
      DEF FTPMSGL$   # 58 # ;          # MESSAGE LENGTH IN CHARACTERS  #
      DEF MMSG$      #  4 # ;          # MORE MESSAGE SIZE IN CM WORDS #
      DEF PFMMSG$    #  3 # ;          # PFM MESSAGE SIZE IN CM WORDS  #
  
# 
**    *****CAUTION***** 
* 
*     THE FOLLOWING DEFS ARE USED AS INDICES INTO THE *FTPRMSG*, ANY
*     CHANGES TO THESE DEFS REQUIRES THE APPROPRIATE CHANGES IN 
*     *FTPNMSG$*, AND ALSO IN THE INITIALIZATION ROUTINE *FFSIIPV*. 
# 
  
      DEF MSG$110    # 0# ; 
      DEF MSG$120    # 1# ; 
      DEF MSG$125    # 2# ; 
      DEF MSG$150    # 3# ; 
      DEF MSG$200    # 4# ; 
      DEF MSG$202    # 5# ; 
      DEF MSG$211    # 6# ; 
      DEF MSG$212    # 7# ; 
      DEF MSG$213    # 8# ; 
      DEF MSG$214    # 9# ; 
      DEF MSG$215    #10# ; 
      DEF MSG$220    #11# ; 
      DEF MSG$221    #12# ; 
      DEF MSG$225    #13# ; 
      DEF MSG$226    #14# ; 
      DEF MSG$227    #15# ; 
      DEF MSG$230    #16# ; 
      DEF MSG$250    #17# ; 
      DEF MSG$257    #18# ; 
      DEF MSG$331    #19# ; 
      DEF MSG$332    #20# ; 
      DEF MSG$350    #21# ; 
      DEF MSG$421    #22# ; 
      DEF MSG$425    #23# ; 
      DEF MSG$426    #24# ; 
      DEF MSG$450    #25# ; 
      DEF MSG$451    #26# ; 
      DEF MSG$452    #27# ; 
      DEF MSG$500    #28# ; 
      DEF MSG$501    #29# ; 
      DEF MSG$501A   #30# ; 
      DEF MSG$502    #31# ; 
      DEF MSG$503    #32# ; 
      DEF MSG$504    #33# ; 
      DEF MSG$504A   #34# ; 
      DEF MSG$504B   #35# ; 
      DEF MSG$504C   #36# ; 
      DEF MSG$504D   #37# ; 
      DEF MSG$530    #38# ; 
      DEF MSG$532    #39# ; 
      DEF MSG$550    #40# ; 
      DEF MSG$551    #41# ; 
      DEF MSG$552    #42# ; 
      DEF MSG$553    #43# ; 
  
      COMMON FRMSG; 
      BEGIN                            # FRMSG                         #
  
      ARRAY FTPRMSG[0:FTPNMSG$] S(FMSGSIZ$);
        BEGIN 
        ITEM FTP$MNO    C(00,00,04);     # MESSAGE NUMBER              #
        ITEM FTP$MSG    C(00,00,58);     # MESSAGE TEXT                #
        ITEM FTP$HYPHEN C(00,18,01);     # HYPHEN FOR CONTINUED MESSAGE#
        ITEM FTP$MINUTE U(02,06,18);     # NO OF MINUTE FOR MSG$120    #
        ITEM FTP$215NVR C(02,00,11);     # MSG$215 NOS VERSION         #
        ITEM FTP$215NPL C(03,18,03);     # MSG$215 NOS PSR LEVEL       #
        ITEM FTP$215PPL C(03,42,03);     # MSG$215 PRODUCT SET PSR LVL #
        ITEM FTP$215FVR C(04,30,05);     # MSG$215 FTP VERSION         #
        ITEM FTP$215FPL C(05,06,04);     # MSG$215 FTP PSR LEVEL       #
        ITEM FTP$ZBYE   U(05,48,12);     # ZERO BYTE                   #
        END 
  
      ARRAY MORE$MSG [0:0] S(MMSG$);
        BEGIN 
        ITEM MORE$T     U(00, 00, 60);
        ITEM MORE$ERNM  C(00, 00, 04);
        ITEM MORE$TEXT  C(00, 24, 30);
        ITEM MORE$END   U(03, 24, 36);
        END 
  
      ARRAY PFM$MSG [0:0] S(PFMMSG$); 
        BEGIN 
        ITEM PFM$T       U(00, 00, 60); 
        ITEM PFM$TEXT    C(00, 00, 30); 
        END 
  
      ARRAY SENDBUF [00:00] S(100); 
        BEGIN 
        ITEM SBF$WORD   U(00,00,60);   # FULL WORD REFERENCE           #
        END 
  
      END                              # FRMSG                         #
  
# 
**    MANAGER - DYNAMIC TABLE MANAGER COMMON BLOCK
* 
*     THIS COMMON BLOCK CONTAINS ALL THE INFORMATION NEEDED BY THE
*     TABLE MANAGEMENT ROUTINES.
# 
  
      COMMON MANAGER; 
      BEGIN                            # MANAGER                       #
  
      ITEM LOADBASE      I;            # FWA + 1 OF (0,0) OVERLAY      #
      ITEM MEMWORD       I;            # MEMORY REQUEST WORD           #
      ITEM MAXFL         I;            # MAXIMUM FIELD LENGTH ALLOWED  #
      ITEM FL            I;            # CURRENT TOTAL FIELD LENGTH    #
      ITEM NTAB          I;            # NUMBER OF MANAGED TABLES      #
      ITEM AVAIL         I;            # AVAILABLE WORDS FOR EXPANSION #
# 
**    MREQ - MEMORY REQUEST WORD. 
# 
      BASED ARRAY MREQ[00:00] S(1); 
        BEGIN 
        ITEM MREQ$FL     I(00,00,30);  # FIELD LENGTH                  #
        ITEM MREQ$COMPB  B(00,59,01);  # COMPLETION BIT                #
        END 
# 
**    MTABLE - MANAGED TABLE POINTER ARRAY
# 
      BASED ARRAY MTABLE[00:00] S(2); 
        BEGIN 
        ITEM TABA        U(00,00,30);  # NEW FWA                       #
        ITEM TABB        U(00,42,18);  # OLD FWA                       #
        ITEM TABF        U(00,00,60);  # CURRENT FWA                   #
        ITEM TABL        U(01,00,60);  # TABLE LENGTH                  #
        END 
  
      END                              # MANAGER                       #
  
# 
**    TABLES - MEMORY MANAGEMENT COMMON BLOCK.
* 
*     A COMMON BLOCK OF BASED-ARRAY POINTER WORDS AND LENGTHS FOR 
*     TABLES AND QUEUES MAINTAINED BY THE TABLE-MANAGER.
* 
# 
      COMMON TABLES;
      BEGIN                            # TABLES                        #
  
# 
**    TSTART - DUMMY FIRST TABLE
* 
*     THIS TABLE MUST BE THE FIRST IN THE LIST OF MANAGED TABLES. 
# 
  
      ITEM TSTART        I;            # START OF MANAGED TABLE AREA   #
      ITEM TSTARTL       I;            # DUMMY LENGTH                  #
  
# 
**    TMR - TIMER LIST
* 
*     THE TIMER LIST CONTAINS AN ENTRY FOR EACH ACTIVE TIMER FUNCTION.
*     EACH TIMER ENTRY CONSISTS OF THE TIMER EXPIRATION TIME , THE TYPE 
*     OF TIMER , AND THE ASSOCIATED CONNECTION NUMBER.
# 
      BASED ARRAY TMR[00:00] S(TMRSIZ$);
        BEGIN 
        ITEM TMR$WORD        U(00,00,60);  # FULL WORD REFERENCE       #
        ITEM TMR$FTSEC       U(00,00,24);  # EXPIRATION TIME IN SECONDS#
        ITEM TMR$TYPE  S:TMRST(00,24,06);  # TIMER TYPE                #
        ITEM TMR$ACN         U(00,30,12);  # CONNECTION NUMBER         #
        END 
  
      ITEM TMRL          I;            # LENGTH OF TIMER LIST          #
  
# 
**    WBQ - WAITING BLOCK QUEUE 
* 
*     THE WBQ QUEUE CONTAINS BLOCKS WHICH CANNOT BE SENT OVER THE 
*     CONNECTION BECAUSE THE OUTSTANDING BLOCK COUNT FOR THE CONNECTION 
*     HAS BEEN REACHED. 
*     EACH ENTRY HAS THE FOLLOWING FORMAT - THE FIRST WORD CONTAINS 
*     THE ENTRY SIZE , THE SECOND WORD CONTAINS THE APPLICATION BLOCK 
*     HEADER , AND THE REMAINING WORDS CONTAIN THE BLOCK ITSELF.
# 
      BASED ARRAY WBQ[00:00] S(1);
        BEGIN 
        ITEM WBQ$WORD   U(00,00,60);   # FULL WORD REFERENCE           #
        ITEM WBQ$SIZE U(SIZ$,00,60);   # ENTRY SIZE                    #
        ITEM WBQ$ABH  U(ABH$,00,60);   # APPLICATION BLOCK HEADER      #
        ITEM WBQ$ADR  U(ABH$,06,12);   # ADDRESSING INFORMATION        #
        ITEM WBQ$TXT  U(TXT$,00,60);   # WORD REFERENCE FOR TEXT       #
        END 
  
      ITEM WBQL          I;            # LENGTH OF WAITING BLOCK QUEUE #
  
# 
**    CSPW - NOS CONTROL STATEMENT POINTER WORD.
* 
*     'CSPW' CONSISTS OF INFORMATION RELATING TO CONTROL STATEMENT
*     PROCESSING FOR THE JOB.  ONLY THE INFORMATION RELEVANT TO DDN 
*     ARE DEFINED HERE.  THE CONTENTS OF 'CSPW' ARE SPECIFIED IN THE
*     NOS DECK 'PPCOM'. 
# 
  
      ARRAY CSPW  [0:0] S(1); 
        BEGIN 
        ITEM CSP$CCR B (00,09,01);   # CHARGE COMMAND REQUIRED        # 
        ITEM CSP$PUP B (00,10,01);   # PRIMARY USER COMMAND PROCESSED # 
        END 
  
# 
**    TEND - DUMMY LAST TABLE 
* 
*     THIS TABLE MUST BE THE LAST MANAGED TABLE.
# 
      ITEM TEND          I;            # END OF MANAGED TABLE AREA     #
      ITEM TENDL         I;            # DUMMY LENGTH                  #
  
      END                              # TABLES                        #
  
#     COMVVAL - USER/CHARGE VALIDATION DEFINITIONS.                    #
      BEGIN  # COMVVAL #
  
# 
***   COMVVAL - USER/CHARGE VALIDATION DEFINITIONS. 
* 
*     'COMVVAL' CONTAINS DEFINITIONS FOR USER AND CHARGE
*     VALIDATION DATA STRUCTURES. 
* 
*     THE VALIDATION INTERFACE IS CONTROLLED BY THE ROUTINES
*     'FFSUVAL' ( VALIDATE USER/PASSWORD) AND "FFSUCHG' (SETS ACCOUNT)
*     THESE ROUTINES ASSUME THAT THE CALLING PROGRAM WILL ONLY
*     PROCESS ONE 'REAL' USER.  THAT IS, ALL SUBSEQUENT 'FFSUVAL' 
*     CALLS AFTER THE FIRST ONE WILL BE TREATED AS SECONDARY USER 
*     COMMANDS AND ALL SUBSEQUENT 'FFSUCHG' CALLS AFTER THE FIRST 
*     ONE WILL BE TREATED AS SECONDARY CHARGES.  ONCE THE 
*     USER HAS BEEN DECLARED INVALID (DUE TO PASSWORD RETRY LIMIT,
*     EXHAUSTED SECURITY COUNT, ETC.), THE VALIDATION ROUTINES
*     CANNOT BE USED AGAIN - THE PROGRAM SHOULD INFORM THE USER AND 
*     TERMINATE.
* 
# 
  
        DEF DEF$CHARGE #"*"#;        # DEFAULT CHARGE DESIGNATOR      # 
        DEF PFP$LEN    #3#;          # LENGTH OF PFP PARAMETER BLOCK  # 
        DEF SSJ$LEN    #5#;          # LENGTH OF SSJ= PARAMETER BLOCK # 
        DEF VAL$LEN    #11#;         # LENGTH OF VAL PARAMETER BLOCK  # 
        DEF PWRETRY    #3# ;         # MAXIMUN NUMBER USER CAN RETRY  # 
  
# 
**    VRS$STATUS - VALIDATION RETURN STATUS LIST. 
* 
*     'VRS$STATUS' DEFINES THE POSSIBLE RETURN VALUES FROM 'VALIDIF'
*     AND 'CHARGE'.  ANY ERROR LARGER THAN 'VRS$ERROR' INDICATES THAT 
*     THE USER HAS BEEN DECLARED INVALID AND 'VALIDIF'/'CHARGE' CANNOT
*     BE CALLED AGAIN.
# 
  
        STATUS VRS$STATUS            # VALIDATION RETURN STATUS LIST  # 
          VRS$VALID,                 # USER/CHARGE VALIDATED          # 
          VRS$CHGREQ,                # USER VALID, CHARGE REQUIRED    # 
          VRS$NOTVAL,                # USER/FAMILY/PASS INCORRECT     # 
          VRS$USER2,                 # SECONDARY USER NOT ALLOWED     # 
          VRS$NOUSER,                # CHARGE INVALID W/O USER ACTIVE # 
          VRS$CHGFAIL,               # CHARGE VALIDATION FAILED       # 
          VRS$ERROR,                 # TERMINATE USER FOR NEXT ERRORS # 
          VRS$COUNT,                 # SECURITY COUNT EXHAUSTED       # 
          VRS$RETRY,                 # 1ST USER PASSWORD RETRY LIMIT  # 
          VRS$NOPASS,                # USER W/O PASSWORD FAILED       # 
          VRS$FAIL,                  # INTERNAL ERROR                 # 
          VRS$END;                   # END OF VRS$STATUS              # 
  
# 
**    VST$STATE - VALIDATION STATE LIST.
* 
*     'VST$STATE' DEFINES THE POSSIBLE VALIDATION STATES FOR THE
*     PROGRAM.  WHEN THE INVALID USER STATE IS ENTERED, THE USER MUST 
*     BE TERMINATED.
# 
  
        STATUS VST$STATE             # VALIDATION STATE LIST          # 
          VST$BEGIN,                 # WAITING FOR PRIMARY USER       # 
          VST$CHARGE,                # USER VALID, CHARGE REQUIRED    # 
          VST$USER,                  # PRIMARY USER ESTABLISHED       # 
          VST$ERROR,                 # INVALID USER                   # 
          VST$END;                   # END OF VST$STATE               # 
  
# 
**    AACW - NOS ACCOUNT ACCESS CONTROL WORD. 
* 
*     'AACW' CONSISTS OF BITS THAT INDICATE WHICH NOS SERVICES A USER 
*     IS ALLOWED TO ACCESS.  ONLY THE BITS RELEVANT TO DDN ARE
*     DEFINED.  THE CONTENTS OF 'AACW' ARE SPECIFIED IN THE NOS DECK
*     'MODVAL'. 
# 
  
        BASED ARRAY AACW  [0:0] S(1); 
          BEGIN 
          ITEM AAC$CNRD   B (00,37,01);  # ALLOW NON-DEFAULT CHARGE   # 
          ITEM AAC$CSAF   B (00,38,01);  #MAY SPECIFY ALTERNATE FAMILY# 
          ITEM AAC$CQLK   B (00,43,01);  # ALLOW INTR-HOST QUEUE XFER # 
          ITEM AAC$CPLK   B (00,44,01);  # ALLOW INTER-HOST FILE XFER # 
          ITEM AAC$CCNR   B (00,52,01);  # CHARGE NOT REQUIRED        # 
          ITEM AAC$CSPF   B (00,56,01);  # ALLOW IA FILES             # 
          ITEM AAC$CLPF   B (00,57,01);  # ALLOW DA FILES             # 
          END 
  
# 
**    PFP$FMT - NOS 'SETPFP'/'GETPFP' INTERFACE TEMPLATE. 
* 
*     PFP$FMT DEFINES THE FIELDS WITHIN AN INTERFACE BLOCK TO THE 
*     'SETPFP' AND 'GETPFP' MACROS. 
# 
  
        BASED ARRAY PFB$FMT  [0:0] S(PFP$LEN);
          BEGIN 
          ITEM PFB$FAMILY  C (00,00,07); # FAMILY NAME                # 
          ITEM PFB$ILLFAM  B (00,47,01); # INVALID FAMILY (SETPFP)
                                             (RETURN PARAMETER)       # 
          ITEM PFB$USEFAM  B (00,56,01); # FAMILY SUPPLIED (SETPFP)   # 
          ITEM PFB$USEPAK  B (00,57,01); # PACKNAME SUPPLIED (SETPFP) # 
          ITEM PFB$USEUSR  B (00,58,01); # USER SUPPLIED (SETPFP)     # 
          ITEM PFB$USEIDX  B (00,59,01); # INDEX SUPPLIED (SETPFP)    # 
          ITEM PFB$WORD0   U (00,00,60);
          ITEM PFB$PACK    C (01,00,07); # PACK NAME                  # 
          ITEM PFB$DEVICE  C (01,48,02); # PACK DEVICE TYPE           # 
          ITEM PFB$WORD1   U (01,00,60);
          ITEM PFB$USER    C (02,00,07); # USER NAME                  # 
          ITEM PFB$INDEX   U (02,43,17); # USER INDEX                 # 
          ITEM PFB$WORD2   U (02,00,60);
          END 
  
# 
**    SSJ$BLK - NOS SSJ= PARAMETER BLOCK. 
* 
*     THE SSJ= PARAMETER BLOCK PROVIDES VALIDATION INFORMATION ABOUT
*     THE CURRENT USER.  THE ACTUAL ALLOCATION OF SSJ= IS DONE IN THE 
*     SSJ$BLK COMPASS ROUTINE BECAUSE OF THE SPECIAL SYNTAX.  THE 
*     CONTENTS OF 'SSJ=' ARE SPECIFIED IN THE NOS DECK 'COMSSSJ'. 
*     THE COMMON BLOCK IS DEFINED ONLY FOR PROGRAMS (THE 'PROGRAM'
*     DEFINITION IS 'TRUE') AND NOT FOR RUNTIME LIBRARIES.
# 
  
        COMMON SSJ$COM;              # SSJ= COMMON BLOCK              # 
          BEGIN 
          ARRAY SSJ$BLK  [0:0] S(SSJ$LEN);
            ITEM SSJ$ENTRY U (00,00,60); # ENTRY IN SSJ= BLOCK        # 
          END 
  
# 
**    SSJ$FMT - NOS SSJ= PARAMETER BLOCK TEMPLATE.
* 
*     SSJ$FMT DEFINES THE FIELDS WITHIN AN 'SSJ=' PARAMETER BLOCK.  THE 
*     TEMPLATE IS DEFINED SEPARATELY FROM THE ALLOCATION (SSJ$COM)
*     BECAUSE SOME ROUTINES THAT USE 'COMVSSJ' CANNOT ENSURE ALLOCATION 
*     OF THE PARAMETER BLOCK WITHIN SSJ$COM.
# 
  
        BASED ARRAY SSJ$FMT  [0:0] S(SSJ$LEN);
          BEGIN 
          ITEM SSJ$INIT   U (00,00,60);  # SSJ INITIALIZATION VALUES  # 
          ITEM SSJ$PROLOG B (00,09,01);  # SYS/USER PROLOG PROCESSED  # 
          ITEM SSJ$PRUSER B (00,10,01);  # PRIMARY USER CMD PROCESSED # 
          ITEM SSJ$TIME   U (00,12,24);  # SSJ= JOB TIME LIMIT        # 
          ITEM SSJ$CPU    U (00,36,12);  # SSJ= JOB CPU PRIORITY      # 
          ITEM SSJ$SSID   U (00,48,12);  # SSJ= SUBSYSTEM ID          # 
          ITEM SSJ$WORD0  U (00,00,60); 
          ITEM SSJ$UIDW   U (01,00,60);  # USER IDENTIFICATION (UIDW) # 
          ITEM SSJ$USER   C (01,00,07);  # USER NAME                  # 
          ITEM SSJ$CHGRQD B (01,42,01);  # CHARGE REQUIRED            # 
          ITEM SSJ$INDEX  U (01,43,17);  # USER INDEX                 # 
          ITEM SSJ$WORD1  U (01,00,60); 
          ITEM SSJ$ALMW   U (02,00,60);  # ACCOUNT LIMIT INDEX (ALMW) # 
          ITEM SSJ$ACLS   U (03,00,60);  # ACT. COUNTING LIMIT (ACLS) # 
          ITEM SSJ$AACW   U (04,00,60);  # ACT. ACCESS CONTROL (AACW) # 
          ITEM SSJ$WORD2  U (02,00,60); 
          END 
  
# 
**    SSTL - NOS SYSTEM STATUS WORD.
* 
*     'SSTL' CONSISTS OF BITS THAT IDENTIFY WHETHER CERTAIN NOS 
*     OPTIONS AND SUBSYSTEMS ARE ENABLED OR DISABLED.  ONLY THE BITS
*     RELEVANT TO DDN ARE DEFINED HERE.  THE CONTENTS OF 'SSTL' ARE 
*     SPECIFIED IN THE NOS DECK 'PPCOM'.
# 
  
        ARRAY SSTL  [0:0] S(1); 
          BEGIN 
          ITEM SST$DSUSER B (00,19,01);  # DISABLE SECONDARY USER     # 
          END 
  
# 
**    VAL$BLOCK - NOS ACCOUNT VALIDATION BLOCK. 
* 
*     'VAL$BLOCK' DEFINES THE PARAMETER BLOCK INTERFACE TO THE 'VALID'
*     FUNCTION (CPM 40).  THE INTERFACE TO 'VALID' IS SPECIFIED IN THE
*     NOS DECK 'CPM'. 
# 
  
        BASED ARRAY VAL$BLOCK  [0:0] S(VAL$LEN);
          BEGIN 
          ITEM VAL$UIDW    U (00,00,60); # USER IDENTIFICATIONS WORD  # 
          ITEM VAL$USER    C (00,00,07); # USER NAME (IN)             # 
          ITEM VAL$INDEX   U (00,43,17); # USER INDEX (OUT)           # 
          ITEM VAL$PASS    C (01,00,07); # PASSWORD (IN)              # 
          ITEM VAL$AUIMX   B (01,56,01); # ALLOW UI.GT.AUIMX (IN)     # 
          ITEM VAL$NOABT   B (01,57,01); # DO NOT ABORT JOB (IN)      # 
          ITEM VAL$NOPASS  B (01,59,01); # PASSWORD NOT REQUIRED (IN) # 
          ITEM VAL$FAMILY  C (02,00,07); # FAMILY NAME (IN)           # 
                                         #   PREVIOUS FAMILY (OUT)    # 
          ITEM VAL$CLASS   U (02,42,06); # SERVICE CLASS (OUT)        # 
          ITEM VAL$EXAUST  B (02,58,01); # SECURITY COUNT ZERO (OUT)  # 
          ITEM VAL$SECOND  B (02,59,01); # SECONDARY USER (OUT)       # 
          ITEM VAL$ACCESS  U (03,00,60); # BEGIN ACCESS WORDS (LEN=3) # 
          ITEM VAL$ALMW    U (03,00,60); # ACCOUNT LIMIT INDEX (ALMW) # 
                                         #   CURRENT (IN), NEW (OUT)  # 
          ITEM VAL$ACLS    U (04,00,60); # ACT. COUNTING LIMIT (ACLS) # 
                                         #   CURRENT (IN), NEW (OUT)  # 
          ITEM VAL$AACW    U (05,00,60); # ACT. ACCESS CONTROL (AACW) # 
                                         #   CURRENT (IN), NEW (OUT)  # 
          ITEM VAL$APRN    U (06,00,60); # PROLOG FILES (OUT)         # 
          ITEM VAL$PROJCT  C (07,00,20); # DEFAULT PROJECT (OUT)      # 
          ITEM VAL$PROJC2  C (08,00,10); #   (1-20 CHARACTERS)        # 
          ITEM VAL$CHARGE  C (09,00,10); # DEFAULT CHARGE (OUT)       # 
          ITEM VAL$TMNAME  U (10,00,42); # TERMINAL NAME (OUT)        # 
          ITEM VAL$TMNUM   U (10,42,18); # TERMINAL NUMBER (OUT)      # 
          END 
  
# 
**    VAL$BLK - VALIDATION BLOCK. 
* 
*     'VAL$BLK' CONTAINS DATA THAT DESCRIBES THE PROGRAM'S CURRENT
*     NOS VALIDATION STATE. 
# 
  
      COMMON VAL$BLK; 
        BEGIN                # VAL$BLK #
  
# 
**    JOB$CHG - CURRENT JOB CHARGE PARAMETERS.
* 
*     'JOB$CHG' CONTAINS THE CURRENT CHARGE/PROJECT PARAMETERS FOR
*     THE JOB.
# 
  
        ARRAY JOB$CHG  [0:0] S(4);
          BEGIN 
          ITEM JBC$CHARGE C (00,00,10);  # PRELIMINARY CHARGE NUMBER  # 
          ITEM JBC$PROJCT C (01,00,20);  # PRELIMINARY PROJECT NUMBER # 
          ITEM JBC$PROJC2 C (02,00,10);  #  PROJECT NUMBER (2ND HALF) # 
          ITEM JBC$VALID  B (03,00,01);  # CHARGE/PROJECT IS VALID    # 
          END 
  
# 
**    JOB$PFP - CURRENT JOB PERMANENT FILE PARAMETERS.
* 
*     'JOB$PFP' CONTAINS THE CURRENT PERMANENT FILE PARAMETERS OF 
*     THE JOB.
# 
  
        ARRAY JOB$PFP  [0:0] S(PFP$LEN);
          BEGIN 
          ITEM JBP$ENTRY  U (00,00,60);  # ENTRY IN PARAMETER BLOCK   # 
          END 
  
# 
**    JOB$VAL - JOB VALIDATION BLOCK. 
* 
*     'JOB$VAL' CONTAINS THE CURRENT JOB VALIDATION PARAMETERS. 
# 
  
        ARRAY JOB$VAL  [0:0] S(VAL$LEN);
          BEGIN 
          ITEM JBV$ENTRY  U (00,00,60);  # JOB VALIDATION BLOCK ENTRY # 
          END 
  
# 
**    VAL$RETRY - NUMBER OF PASSWORD RETRIES PERMITTED. 
* 
*     'VAL$RETRY' DEFINES THE CURRENT NUMBER OF PASSWORD RETRIES
*     PERMITTED.  THIS VARIABLE IS DECREMENTED EACH TIME A PRIMARY
*     USER REQUEST FAILS.  WHEN IT REACHES ZERO, THE USER IS DECLARED 
*     INVALID IN VAL$STATE.  THE VALUE OF 'PWRETRY' IS AN INSTALLATION
*     PARAMETER DEFINED PRIOR TO THIS COMMON DECK.
# 
  
          ITEM VAL$RETRY I ;
  
# 
**    VAL$STATE - CURRENT VALIDATION STATE. 
* 
*     'VAL$STATE' DEFINES THE CURRENT VALIDATION STATE FOR THE
*     PROGRAM.  WHEN THE INVALID USER STATE IS ENTERED, THE USER MUST 
*     BE TERMINATED.
# 
  
          ITEM VAL$STATE S:VST$STATE ;
  
        END  # VAL$BLK #
  
      END  # COMVVAL #
  
      END                              # TEXTFFS                       #
  
      TERM
