*DECK TEXTFCS 
      PROC TEXTFCS; 
*CALL COPYRITE          CDCNET - COPYRIGHT CONTROL DATA. 1985.
*CALL COPYRITE
  
      CONTROL STEXT;
  
      BEGIN                            # TEXTFCS                       #
  
# 
**    TEXTFCS  SYMPL TEXT FOR THE FTP CONTROL STATEMENT.
* 
*     C. J. RAMSAY                     87/11/03 
* 
*     THIS PROCEDURE GENERATES A SYMPL TEXT FOR COMPILING THE 
*     FTP CONTROL STATEMENT.
*     IT CONTAINS DEFINITIONS OF SYMBOLS, PARAMETERS, COMMON BLOCKS ETC 
*     USED THROUGHOUT THE PROGRAM.
* 
# 
*CALL COPYRITC
*CALL COMPSRL 
      CONTROL EJECT;
# 
**    STATE DEFINITIONS 
* 
*     THE FOLLOWING STATE DEFINITIONS ARE PROVIDED FOR USE IN DEFINING
*     THE ALLOWABLE STATES THAT BE ASSUMED BY ENTITIES MANAGED BY THE 
*     FTP CONTROL STATEMENT PROCESSOR. EACH STATE 
*     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         # 2**0 #;     # STATE0  = O"00000001"         #
      DEF STATE1         # 2**1 #;     # STATE1  = O"00000002"         #
      DEF STATE2         # 2**2 #;     # STATE2  = O"00000004"         #
      DEF STATE3         # 2**3 #;     # STATE3  = O"00000010"         #
      DEF STATE4         # 2**4 #;     # STATE4  = O"00000020"         #
      DEF STATE5         # 2**5 #;     # STATE5  = O"00000040"         #
      DEF STATE6         # 2**6 #;     # STATE6  = O"00000100"         #
      DEF STATE7         # 2**7 #;     # STATE7  = O"00000200"         #
      DEF STATE8         # 2**8 #;     # STATE8  = O"00000400"         #
      DEF STATE9         # 2**9 #;     # STATE9  = O"00001000"         #
      DEF STATE10        # 2**10#;     # STATE10 = O"00002000"         #
      DEF STATE11        # 2**11#;     # STATE11 = O"00004000"         #
      DEF STATE12        # 2**12#;     # STATE12 = O"00010000"         #
      DEF STATE13        # 2**13#;     # STATE13 = O"00020000"         #
      DEF STATE14        # 2**14#;     # STATE14 = O"00040000"         #
      DEF STATE15        # 2**15#;     # STATE15 = O"00100000"         #
      DEF STATE16        # 2**16#;     # STATE16 = O"00200000"         #
      DEF STATE17        # 2**17#;     # STATE17 = O"00400000"         #
# 
*     FTP USER STATES 
# 
      DEF FTPUINIT       # STATE0 #;   # INITIAL STATE                 #
      DEF FTPUPARSED     # STATE1 #;   # CONTROL STATEMENT PARSED OK   #
      DEF FTPUIOPSET     # STATE2 #;   # INPUT/OUTPUT/PROMPT SET UP OK #
      DEF FTPUIDLE       # STATE3 #;   # NO REMOTE HOST CONNECTION     #
      DEF FTPUOPEN       # STATE4 #;   # REMOTE HOST CONNECTED         #
      DEF FTPUFILE       # STATE5 #;   # FILE TRANSFER STARTED         #
      DEF FTPULENT       # STATE6 #;   # FILE TRANSFER IN PROGRESS     #
      DEF FTPUQUIT       # STATE7 #;   # QUIT STATE                    #
      CONTROL EJECT;
# 
                      FTP STATE TABLE (PART 1 OF 2) 
  
------------------------------------------------------------------------
!              !   0  !   1  !   2  !   3  !   4  !   5  !   6  !   7  !
!              ! INIT !PARSED!IOPSET! IDLE ! OPEN ! FILE ! LENT ! QUIT !
!              !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
! CONTROL      !      !      !      !      !      !      !      !      !
! STATEMENT    ! -> 1 !      !      !      !      !      !      !      !
! PARSED OK    !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
! INPUT, OUTPUT!      !      !      !      !      !      !      !      !
! AND PROMPT   !      ! -> 2 !      !      !      !      !      !      !
! FILES SET UP !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
!INITIALIZATION!      !      !      !      !      !      !      !      !
!COMPLETE.     !      !      ! -> 3 !      !      !      !      !      !
!PROCESS PROLOG!      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
! CONNECTED    !      !      !      !      !      !      !      !      !
! TO REMOTE    !      !      !      ! -> 4 !      !      !      !      !
! HOST         !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
! DISCONNECTED !      !      !      !      !      ! SET  ! SET  !      !
! FROM REMOTE  !      !      !      !      ! -> 3 !CLOSED!CLOSED!      !
! HOST         !      !      !      !      !      ! FLAG ! FLAG !      !
!--------------!------!------!------!------!------!------!------!------!
! QUIT         !      !      !      !      !      !      !      !      !
! COMMAND      !      !      !      ! -> 7 ! -> 7 !      !      !      !
! RECEIVED     !      !      !      !      !      !      !      !      !
------------------------------------------------------------------------
# 
      CONTROL EJECT;
# 
                      FTP STATE TABLE (PART 2 OF 2) 
  
------------------------------------------------------------------------
!              !   0  !   1  !   2  !   3  !   4  !   5  !   6  !   7  !
!              ! INIT !PARSED!IOPSET! IDLE ! OPEN ! FILE ! LENT ! QUIT !
!              !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
! START        !      !      !      !      ! -> 5 !      !      !      !
! FILE         !      !      !      !      ! FNT/ !      !      !      !
! TRANSFER     !      !      !      !      ! IFL/R!      !      !      !
!--------------!------!------!------!------!------!------!------!------!
!              !      !      !      !      !      !      !      !      !
! FNT/IFL/N    !      !      !      !      !      ! -> 6 !      !      !
!              !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
!              !      !      !      !      !      ! -> 4 !      !      !
! FNT/IFL/A    !      !      !      !      !      ! ABORT!      !      !
!              !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
! END          !      !      !      !      !      !      ! FNT/ !      !
! FILE         !      !      !      !      !      !      ! IFR/ !      !
! TRANSFER     !      !      !      !      !      !      ! R    !      !
!--------------!------!------!------!------!------!------!------!------!
!              !      !      !      !      !      !      !      !      !
! FNT/IFR/N    !      !      !      !      !      !      ! -> 4 !      !
!              !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
!              !      !      !      !      !      !      ! -> 4 !      !
! FNT/IFR/A    !      !      !      !      !      !      ! ABORT!      !
!              !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
! REPRIEVE     !      !      !      !      !      ! FNT/ ! FNT/ !      !
! PROCESSING   !      !      !      !      !      ! IAR/ ! IAR/ !      !
!              !      !      !      !      !      ! R    ! R    !      !
!--------------!------!------!------!------!------!------!------!------!
!              !      !      !      !      !      !      !      !      !
! FNT/IAR/N    !      !      !      !      !      ! -> 4 ! -> 4 !      !
!              !      !      !      !      !      !      !      !      !
!--------------!------!------!------!------!------!------!------!------!
!              !      !      !      !      !      !      !      !      !
! FNT/IAR/A    !      !      !      !      !      ! -> 4 ! -> 4 !      !
!              !      !      !      !      !      !      !      !      !
------------------------------------------------------------------------
# 
      CONTROL EJECT;
# 
**    ABORT CODES 
# 
      DEF ENORMAL        #    0 #;     # NORMAL EXIT                   #
      DEF ECONNECT       #    1 #;     # CANNOT CONNECT TO TCP/IP      #
      DEF EDISCON        #    2 #;     # DISCONNECTED FROM TCP/IP      #
      DEF EMAXFL         #    3 #;     # MAXIMUM FIELD LENGTH EXCEEDED #
      DEF EUNEXDB        #    4 #;     # UNEXPECTED DATA BLOCK RECEIVED#
      DEF EUNEXSM        #    5 #;     # UNEXPECTED SM RECEIVED        #
      DEF EINVDB         #    6 #;     # INVALID DATA BLOCK FORMAT     #
      DEF EINVRPY        #    7 #;     # INVALID FTP RESPONSE          #
      DEF EUNLEND        #    8 #;     # UNABLE TO LEND FNT ENTRY      #
      DEF EUNRETR        #    9 #;     # UNABLE TO RETRIEVE FNT ENTRY  #
      DEF ELAST          #    9 #;     # LAST EXIT CONDITION           #
# 
**    CODES FOR USER COMMANDS 
# 
      DEF CMDERROR       #   -1 #;     # BAD COMMAND SYNTAX            #
      DEF CMDNULL        #    0 #;     # NULL INPUT                    #
      DEF CMDAPPF        #    1 #;     # APPEND_FILE                   #
      DEF CMDCHAALM      #    2 #;     # CHANGE_AUTO_LOGIN_MODE        #
      DEF CMDCHABM       #    3 #;     # CHANGE_BELL_MODE              #
      DEF CMDCHACS       #    4 #;     # CHANGE_CODE_SET               #
      DEF CMDCHADM       #    5 #;     # CHANGE_DEBUG_MODE             #
      DEF CMDCHAEE       #    6 #;     # CHANGE_EXPRESSION_EVALUATION  #
      DEF CMDCHAFN       #    7 #;     # CHANGE_FILE_NAME              #
      DEF CMDCHAIF       #    8 #;     # CHANGE_INPUT_FILE             #
      DEF CMDCHAOF       #    9 #;     # CHANGE_OUTPUT_FILE            #
      DEF CMDCHAPCM      #   10 #;     # CHANGE_PORT_COMMAND_MODE      #
      DEF CMDCHATT       #   11 #;     # CHANGE_TRANSFER_TYPE          #
      DEF CMDCHAVM       #   12 #;     # CHANGE_VERBOSE_MODE           #
      DEF CMDCHAWD       #   13 #;     # CHANGE_WORKING_DIRECTORY      #
      DEF CMDCRED        #   14 #;     # CREATE_DIRECTORY              #
      DEF CMDCREHC       #   15 #;     # CREATE_HOST_CONNECTION        #
      DEF CMDDEFAL       #   16 #;     # DEFINE_AUTO_LOGIN             #
      DEF CMDDELD        #   17 #;     # DELETE_DIRECTORY              #
      DEF CMDDELF        #   18 #;     # DELETE_FILE                   #
      DEF CMDDELHC       #   19 #;     # DELETE_HOST_CONNECTION        #
      DEF CMDDISCI       #   20 #;     # DISPLAY_COMMAND_INFORMATION   #
      DEF CMDDISCLE      #   21 #;     # DISPLAY_COMMAND_LIST_ENTRY    #
      DEF CMDDISD        #   22 #;     # DISPLAY_DIRECTORY             #
      DEF CMDDISFN       #   23 #;     # DISPLAY_FILE_NAMES            #
      DEF CMDDISFO       #   24 #;     # DISPLAY_FTP_OPTIONS           #
      DEF CMDDISLH       #   25 #;     # DISPLAY_LOCAL_HELP            #
      DEF CMDDISRH       #   26 #;     # DISPLAY_REMOTE_HELP           #
      DEF CMDDISWD       #   27 #;     # DISPLAY_WORKING_DIRECTORY     #
      DEF CMDELEWD       #   28 #;     # ELEVATE_WORKING_DIRECTORY     #
      DEF CMDGETF        #   29 #;     # GET_FILE                      #
      DEF CMDLOGU        #   30 #;     # LOGIN_USER                    #
      DEF CMDQUIT        #   31 #;     # QUIT                          #
      DEF CMDREPF        #   32 #;     # REPLACE_FILE                  #
      DEF CMDSENFC       #   33 #;     # SEND_FTP_COMMAND              #
  
# 
*     PARAMETER TYPES 
# 
      DEF PTFIRST        #    0 #;     # FIRST PARAMETER TYPE          #
      DEF PTNAME         #    0 #;     # 1 - 60 CASE SENSITIVE CHARS   #
      DEF PTUNAME        #    1 #;     # 1 - 60 CASE INSENSITIVE CHARS #
      DEF PTFILE         #    2 #;     # VALID NOS FILE NAME           #
      DEF PTBOOLEAN      #    3 #;     # BOOLEAN CONSTANT              #
      DEF PTKEYWORD      #    4 #;     # 1 - 10 CASE INSENSITIVE CHARS #
      DEF PTLAST         #    4 #;     # LAST PARAMETER TYPE           #
# 
*     PARAMETER REQUIRED TYPES
# 
      DEF RQFIRST        #    0 #;     # FIRST PARAMETER REQUIRED      #
      DEF RQNO           #    0 #;     # OPTIONAL PARAMETER            #
      DEF RQYES          #    1 #;     # REQUIRED PARAMETER            #
      DEF RQLAST         #    1 #;     # LAST PARAMETER REQUIRED       #
# 
*     PARAMETER BLOCK INDICIES. 
# 
      DEF B$             #    8 #;     # INDEX OF LFN NAME BLANK FILLED#
      DEF Z$             #    9 #;     # INDEX OF LFN NAME ZERO FILLED #
      DEF L$             #   10 #;     # INDEX OF LFN NAME LENGTH      #
      DEF S$             #   11 #;     # INDEX OF PARAMETER LENGTH     #
# 
*     PROMPT TYPES
# 
      DEF PRFIRST        #    0 #;     # FIRST PROMPT TYPE             #
      DEF PRFTP          #    0 #;     # FTP/                          #
      DEF PRFTPBELL      #    1 #;     # FTP/ + BELL                   #
      DEF PRCONT         #    2 #;     # ../                           #
      DEF PRUSER         #    3 #;     # USER?                         #
      DEF PRPASS         #    4 #;     # PASSWORD?                     #
      DEF PRACCT         #    5 #;     # ACCOUNT?                      #
      DEF PRLAST         #    5 #;     # LAST PROMPT TYPE              #
# 
**    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 ASCIFIVE       # X"35" #;    # NUMBER FIVE                   #
      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 ASCIONE        # X"31" #;    # NUMBER ONE                    #
      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 ASCISLASH      # X"2F" #;    # SLASH                         #
      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                   #
# 
**    FTP OPTIONS DEFINITIONS 
# 
      DEF OPTA$          # "A         " #;
      DEF OPTASCII$      # "ASCII     " #;
      DEF OPTB$          # "B         " #;
      DEF OPTBLOCK$      # "BLOCK     " #;
      DEF OPTBINARY$     # "BINARY    " #;
      DEF OPTCOMP$       # "COMPRESSED" #;
      DEF OPTE$          # "E         " #;
      DEF OPTEBCDIC$     # "EBCDIC    " #;
      DEF OPTFILE$       # "FILE      " #;
      DEF OPTFORTRAN$    # "FORTRAN   " #;
      DEF OPTI$          # "I         " #;
      DEF OPTIMAGE$      # "IMAGE     " #;
      DEF OPTINPUT$      # "INPUT     " #;
      DEF OPTLOCAL$      # "LOCAL     " #;
      DEF OPTNONPR$      # "NON_PRINT " #;
      DEF OPTNULL$       # "          " #;
      DEF OPTOFF$        # "OFF       " #;
      DEF OPTON$         # "ON        " #;
      DEF OPTOUTPUT$     # "OUTPUT    " #;
      DEF OPTPAGE$       # "PAGE      " #;
      DEF OPTRECORD$     # "RECORD    " #;
      DEF OPTSTREAM$     # "STREAM    " #;
      DEF OPTTELNET$     # "TELNET    " #;
      DEF OPT60$         # "60        " #;
# 
*     FTP PARAMETER VALUES
# 
      DEF PARA$          # X"410000000000000" #;  # A                  #
      DEF PARFALSE$      # X"46414C534500000" #;  # FALSE              #
      DEF PARI$          # X"490000000000000" #;  # I                  #
      DEF PAROFF$        # X"4F4646000000000" #;  # OFF                #
      DEF PARON$         # X"4F4E00000000000" #;  # ON                 #
      DEF PARNO$         # X"4E4F00000000000" #;  # NO                 #
      DEF PARTRUE$       # X"545255450000000" #;  # TRUE               #
      DEF PARYES$        # X"594553000000000" #;  # YES                #
# 
**    FTP COMMANDS
* 
*     EACH ENTRY CONTAINS THE FTP COMMAND WITH THE BOTTOM 8 BITS
*     SPECIFYING THE COMMAND LENGTH.
# 
      DEF FTPCABOR       # X"41424F520000004" #;  # ABOR               #
      DEF FTPCACCT       # X"414343540000004" #;  # ACCT               #
      DEF FTPCALLO       # X"414C4C4F0000004" #;  # ALLO               #
      DEF FTPCAPPE       # X"415050450000004" #;  # APPE               #
      DEF FTPCCDUP       # X"434455500000004" #;  # CDUP               #
      DEF FTPCCWD        # X"435744000000003" #;  # CWD                #
      DEF FTPCDELE       # X"44454C450000004" #;  # DELE               #
      DEF FTPCHELP       # X"48454C500000004" #;  # HELP               #
      DEF FTPCLIST       # X"4C4953540000004" #;  # LIST               #
      DEF FTPCMKD        # X"4D4B44000000003" #;  # MKD                #
      DEF FTPCMODE       # X"4D4F44450000004" #;  # MODE               #
      DEF FTPCNLST       # X"4E4C53540000004" #;  # NLST               #
      DEF FTPCNOOP       # X"4E4F4F500000004" #;  # NOOP               #
      DEF FTPCPASS       # X"504153530000004" #;  # PASS               #
      DEF FTPCPASV       # X"504153560000004" #;  # PASV               #
      DEF FTPCPORT       # X"504F52540000004" #;  # PORT               #
      DEF FTPCPWD        # X"505744000000003" #;  # PWD                #
      DEF FTPCQUIT       # X"515549540000004" #;  # QUIT               #
      DEF FTPCREIN       # X"5245494E0000004" #;  # REIN               #
      DEF FTPCREST       # X"524553540000004" #;  # REST               #
      DEF FTPCRETR       # X"524554520000004" #;  # RETR               #
      DEF FTPCRMD        # X"524D44000000003" #;  # RMD                #
      DEF FTPCRNFR       # X"524E46520000004" #;  # RNFR               #
      DEF FTPCRNTO       # X"524E544F0000004" #;  # RNTO               #
      DEF FTPCSITE       # X"534954450000004" #;  # SITE               #
      DEF FTPCSMNT       # X"534D4E540000004" #;  # SMNT               #
      DEF FTPCSTAT       # X"535441540000004" #;  # STAT               #
      DEF FTPCSTOR       # X"53544F520000004" #;  # STOR               #
      DEF FTPCSTOU       # X"53544F550000004" #;  # STOU               #
      DEF FTPCSTRU       # X"535452550000004" #;  # STRU               #
      DEF FTPCSYST       # X"535953540000004" #;  # SYST               #
      DEF FTPCTYPE       # X"545950450000004" #;  # TYPE               #
      DEF FTPCUSER       # X"555345520000004" #;  # USER               #
# 
*     INTERNAL FILE TYPES 
# 
      DEF FTINPUT        #    1 #;     # INPUT FILE                    #
      DEF FTOUTPUT       #    2 #;     # OUTPUT FILE                   #
      DEF FTPROMPT       #    3 #;     # PROMPT FILE                   #
      DEF FTXFER         #    4 #;     # TRANSFER FILE                 #
      DEF FTPROLOG       #    5 #;     # PROLOG FILE                   #
# 
*     NETWORK INTERFACE DEFINITIONS 
# 
      DEF MINACN$        #    1 #;     # MININUM CONNECTION NUMBER     #
      DEF MAXACN$        #    1 #;     # MAXIMUM CONNECTION NUMBER     #
      DEF NETTIMER$      #    2 #;     # NETWAIT SHORT TIMER           #
      DEF NETLOOP$       #    2 #;     # NETWAIT SHORT TIMER LOOPS     #
      DEF NETDELAY$      # 4095 #;     # NETWAIT LONG TIMER            #
*CALL COMAIPI 
# 
*     INTERNAL LENGTH PARAMETER TO *FCSOWOF*. 
# 
      DEF INTERNAL$      #   -1 #;     # INTERNAL MESSAGE TO WRITE     #
# 
**    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        #
# 
**    FIELD LENGTH MULTIPLE FOR MEMORY MANAGEMENT.
# 
      DEF FLMUL          #O"1000"#;    # FIELD LENGTH MULTIPLE         #
# 
**    MISCELLANEOUS SIZE DEFINITIONS
# 
      DEF ACNSIZ$        #    2 #;     # SIZE OF CONNECTION TABLE      #
      DEF INPSIZ$        #  273 #;     # SIZE OF INPUT BUFFER          #
      DEF OUTSIZ$        #  273 #;     # SIZE OF OUTPUT BUFFER         #
      DEF WORKSIZ$       #   63 #;     # SIZE OF WORKING BUFFER        #
      DEF PARSIZ$        #   12 #;     # SIZE OF PARAMETER BLOCK       #
      DEF PARMAX$        #   60 #;     # MAX OCTETS IN PARAMETER BLOCK #
      DEF ALISIZ$        #   72 #;     # SIZE OF AUTO LOGIN TABLE ENTRY#
                                       # MUST BE (PARSIZ$ * 6)         #
      DEF FETSIZ$        #   16 #;     # SIZE OF FET IN MBT            #
      DEF FBUFSIZ$       #  128 #;     # MBT BUFFER SIZE = 2 PRUS      #
      DEF MBTESIZ$       #  146 #;     # SIZE OF MBT ENTRY ...         #
                                       # ... (FETSIZ$ + FBUFSIZ$ + 2)  #
      DEF USCSIZ$        #   40 #;     # COMMAND MULTIPLE SIZE         #
      DEF RPYSIZ$        #   40 #;     # COMMAND REPLY MULTIPLE SIZE   #
      DEF ERBSIZ$        #   40 #;     # ERROR REPLY MULTIPLE SIZE     #
# 
*     POINTER TABLE INDICES.
# 
      DEF PRPV           #   01 #;     # REPRIEVE PARAMETER BLOCK      #
      DEF PBAP           #   02 #;     # BASED ARRAY POINTERS          #
      DEF PNSUP          #   03 #;     # NAM NSUP WORD                 #
      DEF PINPB          #   04 #;     # INCOMING DATA OR SM BUFFER    #
      DEF POUTB          #   05 #;     # OUTGOING DATA OR SM BUFFER    #
      DEF PCUR           #   06 #;     # CURRENT COMMON VARIABLES      #
      DEF PCMD           #   07 #;     # COMMAND PARAMETER BLOCKS      #
      DEF PMAN           #   08 #;     # TABLE MANAGER VARIABLES       #
      DEF PTBL           #   09 #;     # MANAGED TABLES AREA           #
      DEF PTRLEN         #   09 #;     # LENGTH OF POINTER TABLE       #
# 
**    NETWORK SUPERVISORY MESSAGE DEFINITIONS 
* 
*     SUPERVISORY MESSAGE DEFINITIONS ARE SUPPLIED BY THE COMMON
*     DECKS: SMAPPFC, SMAPDEF, MISCOM.
# 
*CALL SMAPPFC 
*CALL SMAPDEF 
*CALL MISCOM
# 
**    POINTBL - POINTER TABLE.
* 
*     THIS LABELLED COMMON BLOCK IS USED TO LOCATE IMPORTANT DATA 
*     STRUCTURES OF THE FTP CONTROL STATEMENT 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                       #
# 
**    CSBUILD - CONTROL STATEMENT BUILD DATE AND TIME.
* 
*     THIS LABELLED COMMON BLOCK IS USED TO CONTAIN THE BUILD DATE AND
*     TIME WHICH IS SUPPLIED BY THE COMPASS ROUTINE *FCSISRP*.
* 
# 
      COMMON CSBUILD; 
      BEGIN                            # CSBUILD                       #
  
      ARRAY CSBTBL [00:00] S(4);
        BEGIN 
        ITEM
        CSB$WORD         U(00,00,60);  # FULL WORD REFERENCE           #
        END 
  
      END                              # CSBUILD                       #
# 
**    BASEDPT - BASED ARRAY POINTERS. 
* 
*     THIS LABELLED COMMON BLOCK CONTAINS THE BASED ARRAY POINTERS
*     WHICH ARE USED DURING OPERATOR SERVER OPERATION.
*     THE FIRST BASED ARRAY DEFINITION MUST BE THE APPLICATION BLOCK
*     HEADER. 
* 
# 
      COMMON BASEDPT; 
      BEGIN                            # BASEDPT                       #
# 
**    ABH - APPLICATION BLOCK HEADER DEFINITION.
* 
*     THE ABH FIELD DECLARATIONS ARE SUPPLIED BY THE COMMON DECK
*     *HEADER*. 
# 
      BASED ARRAY ABH [00:00] S(1); 
        BEGIN 
*CALL HEADER
        END 
# 
**    APSM - SUPERVISORY MESSAGES DEFINITION. 
* 
*     THE SUPERVISORY MESSAGE FIELD DECLARATIONS ARE SUPPLIED 
*     BY THE COMMON DECKS *SUPMSG* AND *SMAPPL*.
# 
  
      BASED ARRAY APSM [00:00] S(19); 
        BEGIN 
*CALL SUPMSG
*CALL SMAPPL
        END 
*CALL COMAPDT 
# 
**    TBUF - TEXT BUFFER. 
* 
*     THIS BASED ARRAY IS USED FOR COPYING DATA WITHIN A TABLE
*     DEFINITION. 
* 
# 
      BASED ARRAY TBUF [00:00] S(1);
        BEGIN 
        ITEM TBUF$WORD   U(00,00,60);  # FULL WORD REFERENCE           #
        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 OPER 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                       #
  
# 
**    DEFINE 'FTP' CS INTERFACE COMMON AREA.
# 
  
      COMMON FCSCOM;                   # 'FTP' CS COMMNON BLOCK        #
  
      BEGIN 
      ITEM FTPSTATE      U;            # FTP USER STATE                #
      ITEM FTPCLOSED     B;            # CLOSED DURING FILE TRANSFER   #
      ITEM FTPINTER      B;            # INTERACTIVE MODE              #
      ITEM FTPABORT      I;            # ABORT CODE                    #
      ITEM FTPCOMMAND    I;            # CURRENT USER COMMAND          #
  
      ITEM FTPAUTOM      C(10);        # AUTO LOGIN MODE               #
      ITEM FTPBELLM      C(10);        # BELL MODE                     #
      ITEM FTPDBUGM      C(10);        # DEBUG MODE                    #
      ITEM FTPDCSET      C(10);        # DEFAULT CODE SET              #
      ITEM FTPDCSAS      U;            # DEFAULT CODE SET (ASCII)      #
      ITEM FTPDCSSZ      U;            # LENGTH OF CODE SET NAME       #
      ITEM FTPEXPEM      C(10);        # EXPRESSION EVALUATION MODE    #
      ITEM FTPPORTM      C(10);        # PORT COMMAND MODE             #
      ITEM FTPVERBM      C(10);        # VERBOSE MODE                  #
      ITEM FTPTYPE       C(10);        # CURRENT FTP TYPE              #
      ITEM FTPMODE       C(10);        # CURRENT FTP MODE              #
      ITEM FTPSTRU       C(10);        # CURRENT FTP STRUCTURE         #
      ITEM FTPFORM       C(10);        # CURRENT FTP FORMAT            #
      ITEM FTPBYTE       C(10);        # CURRENT FTP LOCAL BYTE SIZE   #
      ITEM FTPINPUT      C(10);        # CURRENT FTP INPUT FILE NAME   #
      ITEM FTPOUTPUT     C(10);        # CURRENT FTP OUTPUT FILE NAME  #
      ITEM FTPPROLOG     C(10);        # CURRENT FTP PROLOG FILE NAME  #
  
      ITEM FTPUSERE      B;            # FTP USER ERROR                #
      ITEM FTPERROR      B;            # FTP PROTOCOL ERROR            #
      ITEM FTPFAIL       B;            # FTP COMMAND FAILURE           #
  
      ITEM FTPID         I;            # CONNECTION IDENTIFIER         #
      ITEM FTPFC         I;            # FUNCTION CODE                 #
      ITEM FTPREPLY      I;            # FTP REPLY NUMBER              #
      ITEM FTPRPYC1      I;            # FIRST DIGIT OF FTP REPLY      #
  
      ITEM MBTX          I;            # MANAGED BUFFER TABLE INDEX    #
      ITEM MBIX          I;            # MANAGED INPUT BUFFER INDEX    #
      ITEM MBOX          I;            # MANAGED OUTPUT BUFFER INDEX   #
      ITEM MBMX          I;            # MANAGED PROMPT BUFFER INDEX   #
      ITEM MBXX          I;            # MANAGED XFER FILE BUFFER INDEX#
      ITEM MBPX          I;            # MANAGED PROLOG BUFFER INDEX   #
      ITEM ALIX          I;            # AUTO LOGIN INFORMATION INDEX  #
  
      ITEM USCLEN        I;            # COMMAND LENGTH IN OCTETS      #
      ITEM LRBLEN        I;            # LOCAL REPLY LENGTH IN OCTETS  #
      ITEM RRBLEN        I;            # REMOTE REPLY LENGTH IN OCTETS #
      ITEM ERBLEN        I;            # ERROR REPLY LENGTH IN OCTETS  #
      ITEM RPYLEN        I;            # COMMAND REPLY LENGTH IN OCTETS#
# 
**    XFERBLK - INTERNAL TRANSFER FILE PARAMETER BLOCK. 
* 
*     XFERBLK IS THE PARAMETER BLOCK FOR THE INTERNAL TRANSFER FILE 
*     WHICH IS USED FOR THE DISPLAY_DIRECTORY AND DISPLAY_FILE_NAMES
*     COMMAND.
* 
# 
      ARRAY XFERBLK [00:00] S(PARSIZ$); 
        BEGIN 
        ITEM XFERWORD    U(00,00,60);  # FULL WORD REFERENCE           #
        ITEM XFERNB      C(B$,00,10);  # NOS NAME BLANK FILLED         #
        ITEM XFERNZ      C(Z$,00,10);  # NOS NAME ZERO FILLED          #
        ITEM XFERLFN     C(Z$,00,07);  # NOS NAME ZERO FILLED 7 CHARS  #
        ITEM XFERLZ      U(L$,00,60);  # NOS NAME LENGTH               #
        ITEM XFERSZ      U(S$,00,60);  # PARAMETER SIZE IN OCTETS      #
        END 
# 
**    FTPHOST - REMOTE HOST PARAMETER BLOCK.
* 
*     FTPHOST IS THE PARAMETER BLOCK CONTAINING THE NAME OF THE 
*     REMOTE HOST THAT THE USER IS CURRENTLY CONNECTED TO.
* 
# 
      ARRAY FTPHOST [00:00] S(PARSIZ$); 
        BEGIN 
        ITEM FTPHWORD    U(00,00,60);  # FULL WORD REFERENCE           #
        ITEM FTPHSIZE    U(S$,00,60);  # SIZE OF HOST NAME IN OCTETS   #
        END 
# 
**    NSUP - NAM SUPERVISORY STATUS WORD
* 
*     NSUP IS THE WORD INTO WHICH NAM STORES THE STATE OF 
*     NETWORK COMMUNICATIONS. 
* 
# 
      ARRAY NSUP [00:00] S(1);
        BEGIN 
        ITEM NSUP$WORD   U(00,00,60);  # FULL WORD REFERNECE           #
        ITEM NSUP$COMP   B(00,00,01);  # COMPLETION BIT                #
        ITEM NSUP$NAMA   B(00,02,01);  # NAM AVAILABLE BIT             #
        ITEM NSUP$DTIN   B(00,03,01);  # DATA MESSAGE AVAILABLE BIT    #
        ITEM NSUP$SMIN   B(00,04,01);  # SUPERVISORY MESSAGE AVAIL BIT #
        ITEM NSUP$MC     U(00,30,30);  # DEBUG LOG OPER MESSAGE COUNT  #
        END 
# 
**    IABH - INPUT APPLICATION BLOCK HEADER 
* 
*     IABH IS THE WORD INTO WHICH NAM STORES THE APPLICATION BLOCK
*     HEADER FOLLOWING A *NETGETL* OPERATION. 
* 
# 
      ARRAY IABH [00:00] S(1);
        BEGIN 
        ITEM IABH$WRD    U(00,00,60);  # FULL WORD REFERENCE           #
        END 
# 
**    DABH - OUTPUT DATA APPLICATION BLOCK HEADER 
* 
*     DABH IS THE WORD CONTAINING THE APPLICATION BLOCK HEADER WHICH
*     NAM INTERPRETS AFTER A *NETPUT* OPERATION FOR OUTGOING DATA TO
*     A MDI OR A REMOTE OPERATOR. 
*     FIXED FIELDS IN THE ABH ARE SET UP AT INITIALIZATION TIME.
* 
# 
      ARRAY DABH [00:00] S(1);
        BEGIN 
        ITEM DABH$WRD    U(00,00,60);  # FULL WORD REFERENCE           #
        END 
# 
**    SABH - OUTPUT SUPERVISORY MESSAGE APPLICATION BLOCK HEADER
* 
*     SABH IS THE WORD CONTAINING THE APPLICATION BLOCK HEADER WHICH
*     NAM INTERPRETS AFTER A *NETPUT* OPERATION OF AN OUTGOING
*     ASYNCHRONOUS SUPERVISORY MESSAGE. 
*     FIXED FIELDS IN THE ABH ARE SET UP AT INITIALIZATION TIME.
* 
# 
      ARRAY SABH [00:00] S(1);
        BEGIN 
        ITEM SABH$WRD    U(00,00,60);  # FULL WORD REFERENCE           #
        END 
  
# 
**    ACNT - APPLICATION CONNECTION TABLE.
* 
*     ACNT IS THE TABLE USED IN THE CONNECTION WITH FTPI. 
* 
# 
      ARRAY ACNT [00:00] 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$OBC     U(01,00,12);  # OUTSTANDING BLOCK COUNT       #
        ITEM ACN$WBC     U(01,12,12);  # WAITING BLOCK COUNT           #
        END 
# 
**    INPUT BUFFER. 
* 
*     THE INPUT BUFFER IS USED FOR READING FROM A FILE AND RECEIVING
*     DATA FROM THE NETWORK.
* 
# 
      ITEM INPLEN        I;            # INPUT LENGTH IN OCTETS        #
  
      ARRAY INPBUF [00:INPSIZ$] S(1);  # INPUT BUFFER                  #
        BEGIN 
        ITEM INP$WORD    U(00,00,60); 
        END 
# 
**    OUTPUT BUFFER.
* 
*     THE OUTPUT BUFFER IS USED FOR WRITING TO A FILE AND SENDING 
*     DATA TO THE NETWORK.
* 
# 
      ITEM OUTLEN        I;            # OUTPUT LENGTH IN OCTETS       #
  
      ARRAY OUTBUF [00:OUTSIZ$] S(1);  # OUTPUT BUFFER                 #
        BEGIN 
        ITEM OUT$WORD    U(00,00,60); 
        END 
# 
**    WORK BUFFER.
* 
*     THE WORK BUFFER IS USED FOR THE DATA TRANSFER MACROS. 
* 
# 
      ARRAY WORKBUF [00:WORKSIZ$] S(1); 
        BEGIN 
        ITEM WORK$WORD   U(00,00,60); 
        END 
  
      END                              # FCSCOM                        #
# 
**    COMMAND - COMMAND PROCESSOR COMMON BLOCK. 
* 
*     THIS COMMON BLOCK CONTAINS ALL THE INFORMATION NEEDED BY THE
*     COMMAND PARSER. 
* 
# 
  
      DEF CDTSIZ$        #   72 #;     # NUM OF FTP COMMAND ABBREVS    #
      DEF CNTSIZ$        #   33 #;     # NUM OF LONG COMMAND NAMES     #
      DEF DTSIZ$         #    3 #;     # SIZE OF DESCRIPTOR TABLE ENTRY#
      DEF MAXPARMS$      #   10 #;     # MAXIMUM NO. PARMS PER COMMAND #
      DEF NTSIZ$         #    5 #;     # SIZE OF NAME TABLE ENTRY      #
      DEF PDTSIZ$        #   78 #;     # NUM OF PARAMETER NAMES IN PDT #
      DEF PNTSIZ$        #   78 #;     # NUM OF PARAMETER NAMES IN PNT #
  
      COMMON COMMAND; 
      BEGIN 
  
# 
**    PARMS - PARAMETER VALUES. 
* 
*     THIS ARRAY CONTAINS THE PARAMETER BLOCKS ASSOCIATED WITH
*     THE PARAMETERS FOR THE CURRENT COMMAND. 
* 
# 
      ARRAY PARMS [01:MAXPARMS$] S(PARSIZ$);
        BEGIN 
        ITEM PARAM       U(00,00,60);  # FULL WORD REFERENCE           #
        ITEM PARAMD      C(00,00,20);  # CHARACTER REFERENCE           #
        ITEM PARAMN      C(00,00,40);  # CHARACTER REFERENCE           #
        ITEM PARAMP      C(00,00,80);  # CHARACTER REFERENCE           #
        ITEM PARAMNB     C(B$,00,10);  # NOS NAME BLANK FILLED         #
        ITEM PARAMNZ     C(Z$,00,10);  # NOS NAME ZERO FILLED          #
        ITEM PARAMLZ     U(L$,00,60);  # NOS NAME LENGTH               #
        ITEM PARAMSZ     U(S$,00,60);  # PARAMETER SIZE IN OCTETS      #
        END 
# 
**    FCS$CDT - COMMAND DESCRIPTOR TABLE. 
* 
*     THIS ARRAY CONTAINS AN ENTRY FOR EACH COMMAND ALIAS.
* 
# 
      ARRAY FCS$CDT [01:CDTSIZ$] S(DTSIZ$); 
        BEGIN 
        ITEM CDT$NAME    C(00,00,20);  # COMMAND ABBREVIATION 15 OCTETS#
        ITEM CDT$NAMEN   U(00,00,60);  # COMMAND ABBREV. AS A NUMERIC  #
        ITEM CDT$SIZE    U(02,00,15);  # SIZE OF COMMAND ABBREVIATION  #
        ITEM CDT$PPTR    U(02,15,15);  # INDEX OF FIRST PARM, THIS CMD #
        ITEM CDT$PSIZ    U(02,30,15);  # NUMBER OF PARMS IN PDTFOR CMD #
        ITEM CDT$CNUM    U(02,45,15);  # COMMAND NUMBER                #
        END 
# 
**    FCS$CNT - COMMAND NAME TABLE. 
* 
*     THIS ARRAY CONTAINS AN ENTRY FOR EACH COMMAND.
* 
# 
      ARRAY FCS$CNT [01:CNTSIZ$] S(NTSIZ$); 
        BEGIN 
        ITEM CNT$NAME    C(00,00,40);  # COMMAND NAME (30 OCTETS)      #
        ITEM CNT$NAMEN   U(00,00,60);  # COMMAND NAME AS A NUMERIC     #
        ITEM CNT$SIZE    U(04,00,60);  # SIZE OF LONG COMMAND NAME     #
        END 
# 
**    FCS$PDT - PARAMETER DESCRIPTOR TABLE. 
* 
*     THIS ARRAY CONTAINS AN ENTRY FOR EACH PARAMETER ALIAS.
* 
# 
      ARRAY FCS$PDT [01:PDTSIZ$] S(DTSIZ$); 
        BEGIN 
        ITEM PDT$NAME    C(00,00,20);  # PARAMETER ABBREVIATION 15 OCTS#
        ITEM PDT$NAMEN   U(00,00,60);  # PARAMETER ABBREV. AS NUMERIC  #
        ITEM PDT$SIZE    U(02,00,15);  # SIZE OF PARAMETER ABBREVIATION#
        ITEM PDT$TYPE    U(02,15,15);  # PARAMETER TYPE                #
        ITEM PDT$REQD    U(02,30,01);  # PARAMETER REQUIRED FLAG       #
        ITEM PDT$SEEN    B(02,31,01);  # PARAMETER SPECIFIED FLAG      #
        END 
# 
**    FCS$PNT - PARAMETER NAME TABLE. 
* 
*     THIS ARRAY CONTAINS AN ENTRY FOR EACH PARAMETER.
* 
# 
      ARRAY FCS$PNT [01:PNTSIZ$] S(NTSIZ$); 
        BEGIN 
        ITEM PNT$NAME    C(00,00,40);  # PARAMETER NAME (30 OCTETS)    #
        ITEM PNT$NAMEN   U(00,00,60);  # PARAMETER NAME AS NUMERIC     #
        ITEM PNT$SIZE    U(04,00,60);  # SIZE OF PARAMETER NAME        #
        END 
  
      END                              # COMMAND                       #
  
# 
* 
**    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                  #
# 
**    MBT - MANAGED BUFFER TABLE
* 
*     THE MANAGED BUFFER TABLE CONTAINS FETS AND BUFFERS FOR INPUT, 
*     OUTPUT, PROLOG, COMMAND, AND LIST FILES.  EACH TABLE ENTRY
*     CONSISTS OF A 8-WORD FET, FOLLOWED BY A 2 PRU WORD BUFFER.
* 
*     ****CAUTION**** 
* 
*     MBT MUST BE THE FIRST MANAGED TABLE.
* 
# 
      BASED ARRAY MBT [00:00] S(MBTESIZ$);
        BEGIN 
# 
*       CIO FET ITEMS 
# 
        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$FET1    U(01,00,60);  # FULL WORD REFERENCE           #
        ITEM MBT$DT      C(01,00,02);  # DEVICE TYPE                   #
        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$FB      B(01,23,01);  # FLUSH BIT                     #
        ITEM MBT$LEN     U(01,36,06);  # LENGTH OF FET-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$FET4    U(04,00,60);  # FULL WORD REFERENCE           #
        ITEM MBT$FNTO    U(04,00,12);  # FNT ORDINAL                   #
        ITEM MBT$LIMIT   U(04,42,18);  # LIMIT POINTER                 #
        ITEM MBT$FET5    U(05,00,60);  # FULL WORD REFERENCE           #
        ITEM MBT$FET6    U(06,00,60);  # FULL WORD REFERENCE           #
        ITEM MBT$NFN     C(06,00,10);  # NEW FILE NAME                 #
        ITEM MBT$PFN     C(08,00,07);  # PERMANENT FILE NAME           #
        ITEM MBT$UN      U(09,00,60);  # USER NAME                     #
        ITEM MBT$FTYPE   U(16,00,60);  # FILE TYPE                     #
        ITEM MBT$BUFFER  U(17,00,60);  # BEGINNING OF BUFFER AREA      #
        END 
  
      ITEM MBTL          I;            # LENGTH OF TIMER LIST          #
# 
**    ALI - AUTO LOGIN INFORMATION TABLE
* 
*     THE AUTO LOGIN INFORMATION TABLE CONTAINS AN ENTRY FOR EACH HOST
*     DEFINED BY A DEFINE_AUTO_LOGIN COMMAND. EACH ENTRY CONSISTS OF
*     *ALISIZ$* WORDS CONTAINING THE SIX PARAMETER BLOCKS SHOWN BELOW:  
*     HOST NAME + USER NAME + PASSWORD + FAMILY + ACCOUNT + PROJECT.
* 
# 
      BASED ARRAY ALI [00:00] S(1); 
        BEGIN 
        ITEM ALI$HOSTP   C(00,00,80);  # HOST NAME CHARACTER REFERENCE #
        END 
  
      ITEM ALIL          I;            # LENGTH OF AUTO LOGIN TABLE    #
# 
**    USC - USER COMMAND BUFFER.
* 
*     THE USER COMMAND BUFFER CONTAINS THE CURRENT USER COMMAND.
*     THE NUMBER OF OCTETS IN THE BUFFER IS DEFINED BY *USCLEN*.
*     THE LENGTH OF THE BUFFER IN WORDS IS NORMALLY *USCSIZ$* 
*     BUT MAY BE INCREASED IN MULTIPLES OF *USCSIZ$* WORDS TO 
*     ACCOMODATE LARGER USER COMMANDS.
* 
# 
      BASED ARRAY USC [00:00] S(1); 
        BEGIN 
        ITEM USC$WORD    U(00,00,60);  # FULL WORD REFERENCE           #
        END 
  
      ITEM USCL          I;            # LENGTH OF RESPONSE BUFFER     #
  
# 
**    LRB - LOCAL REPLY BUFFER. 
* 
*     THE LOCAL REPLY BUFFER CONTAINS THE LAST FTP REPLY RECEIVED 
*     FROM THE LOCAL HOST. THE NUMBER OF OCTETS IN THE
*     BUFFER IS DEFINED BY *RPYLEN*. THE LENGTH OF THE BUFFER IN
*     WORDS IS NORMALLY *RPYSIZ$* BUT MAY BE INCREASED IN MULTIPLES 
*     OF *RPYSIZ$* WORDS TO ACCOMODATE LARGER RESPONSES.
* 
# 
      BASED ARRAY LRB [00:00] S(1); 
        BEGIN 
        ITEM LRB$WORD    U(00,00,60);  # FULL WORD REFERENCE           #
        END 
  
      ITEM LRBL          I;            # LENGTH OF LOCAL REPLY BUFFER  #
  
# 
**    RRB - REMOTE REPLY BUFFER.
* 
*     THE REMOTE REPLY BUFFER CONTAINS THE LAST FTP REPLY RECEIVED
*     FROM THE REMOTE HOST. THE NUMBER OF OCTETS IN THE 
*     BUFFER IS DEFINED BY *RPYLEN*. THE LENGTH OF THE BUFFER IN
*     WORDS IS NORMALLY *RPYSIZ$* BUT MAY BE INCREASED IN MULTIPLES 
*     OF *RPYSIZ$* WORDS TO ACCOMODATE LARGER RESPONSES.
* 
# 
      BASED ARRAY RRB [00:00] S(1); 
        BEGIN 
        ITEM RRB$WORD    U(00,00,60);  # FULL WORD REFERENCE           #
        END 
  
      ITEM RRBL          I;            # LENGTH OF REMOTE REPLY BUFFER #
  
# 
**    ERB - ERROR REPLY BUFFER. 
* 
*     THE ERROR REPLY BUFFER CONTAINS THE FTP REPLIES RECEIVED WHICH
*     INDICATE AN ERROR OR FAILURE IN THE LAST USER COMMAND.
*     THE NUMBER OF OCTETS IN THE BUFFER IS DEFINED BY *ERBLEN*.
*     THE LENGTH OF THE BUFFER IN WORDS IS NORMALLY *RPYSIZ$* BUT MAY 
*     BE INCREASED IN MULTIPLES OF *RPYSIZ$* WORDS TO ACCOMODATE
*     LARGER RESPONSES. 
* 
# 
      BASED ARRAY ERB [00:00] S(1); 
        BEGIN 
        ITEM ERB$WORD    U(00,00,60);  # FULL WORD REFERENCE           #
        END 
  
      ITEM ERBL          I;            # LENGTH OF ERROR REPLY BUFFER  #
  
# 
**    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. 
* 
# 
      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 #
  
# 
**    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                        #
  
      END                              # TEXTFCS                       #
  
      TERM
