CLDT
          IDENT  CLDT,FWA,CLDT
          ABS 
          SST    CLET,CLTE,CLTF,CPET
          ENTRY  CLDT 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SYSCOM B1 
CLDT      TITLE  CLDT - CREATE LID TABLE. 
*COMMENT  CLDT - CREATE LID TABLE.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       CLDT - CREATE LID MANAGEMENT TABLE. 
* 
*         M. M. CHEN         83/01/01.
          SPACE  4,10 
***       *CLDT* CREATES A LID TABLE (LDT) ACCORDING TO THE CONTENTS OF 
*         A LID CONFIGURATION FILE.  *CLDT* IS INITIALLY EXECUTED BY
*         *MSM* DURING A LEVEL ZERO DEADSTART BUT MAY ALSO BE EXECUTED
*         ONLINE TO REBUILD THE LDT.  NON-SYSTEM ORIGIN JOBS MAY CALL 
*         *CLDT* TO CHECK FOR FATAL ERRORS IN A LID CONFIGURATION FILE
*         BUT NO LDT WILL BE CREATED/UPDATED IN CENTRAL MEMORY. 
          SPACE  4,10 
***       COMMAND FORMAT. 
* 
*         CLDT,I=LFN. 
* 
*         I=LFN      SPECIFIES THE LOCAL FILE NAME WHICH CONTAINS THE 
*                    DIRECTIVES TO BUILD THE LDT.  IF YOU SPECIFY ONLY
*                    PARAMETER *I* OR *I=0* OR IF YOU OMIT THE
*                    PARAMETER, FILE *LIDCMXX* (WHERE XX = HOST PID 
*                    MACHINE ID) BECOMES LFN.  IF LFN IS NOT LOCAL TO 
*                    THE JOB, THE FILE IS OBTAINED FROM THE JOB-S USER
*                    NAME ON THE SYSTEM DEFAULT FAMILY.  THIS PARAMETER 
*                    IS OPTIONAL. 
          SPACE  4,10 
***       LIDCMID FILE. 
* 
*LIDCMID
*KEYWORD(1),P1,P2, ,,  .
*   . 
*   . 
*   . 
*KEYWORD(N),P1,P2, ,,  .
* 
*         WHERE 
*         LIDCMID IS THE RECORD HEADER.  ID IS THE
*         MACHINE ID. 
* 
* 
*         KEYWORDS INCLUDE -
* 
*         NPID - NAME OF PID. 
* 
*         NLID - NAME OF LID. 
* 
*         *    - COMMENT. 
* 
*         COMMENT - COMMENT.
* 
*         PARAMETERS FOR THE *NPID* KEYWORD - 
* 
*         PID=XXX.
*                WHERE XXX IS A UNIQUE 3 ALPHANUMERIC CHARACTER 
*                PHYSICAL IDENTIFIER OF THE REMOTE MAINFRAME. 
*                (NOS MAINFRAMES ARE REQUIRED TO HAVE PIDS IN 
*                THE FORMAT MXX, WHERE XX IS THE MACHINE ID.) 
*                THE FIRST CHARACTER MUST BE ALPHABETIC.
*                THIS PARAMETER IS REQUIRED.
* 
*         ENABLED=YES OR NO.
*                INDICATES WHETHER THE MAINFRAME SPECIFIED BY XXX 
*                IS AVAILABLE OR NOT.  DEFAULT IS YES IF THE ENABLED
*                KEYWORD IS NOT SPECIFIED.
* 
*         MFTYPE=XXXXXXX. 
*                WHERE XXXXXXX IS A 1-7 CHARACTER STRING INDICATING 
*                THE MAINFRAME TYPE.  AN EXAMPLE OF MAINFRAME TYPE
*                IS NOS/BE OR NOS OR NS2 OR CY700 OR IBM. 
*                THIS PARAMETER IS REQUIRED.
* 
*         AT=VALID/NVALID/NLIST.
*                INDICATES THE ATTRIBUTES ASSOCIATED WITH THE 
*                MAINFRAME IDENTIFIED BY PID.  DEFAULT IS 
*                VALID AND LIST ENABLED.  EITHER VALID OR 
*                NVALID MAYBE SPECIFIED BUT NOT BOTH. 
* 
*         NETDIS=SSF/RHF/NAM. 
*                INDICATES WHICH NETWORK ACCESSES TO THE
*                MAINFRAME IDENTIFIED BY XXX ARE DISABLED.  DEFAULTS IS 
*                ALL NETWORK ACCESSES ENABLED.
*                NETDIS IS INCORRECT FOR A PID WITH HOST ATTRIBUTE. 
*                ANY COMBINATION OF NETWORK ACCESSES MAY BE SPECIFIED.
* 
*         PARAMETERS FOR THE *NLID* KEYWORD - 
* 
*         LID=XXX.
*                WHERE XXX IS A 3 CHARACTER LOGICAL IDENTIFIER
*                FOR THE MAINFRAME IDENTIFIED BY THE LAST PID 
*                DEFINITION.  THE LID MAY BE THE SAME AS THE LAST 
*                PID DEFINED.  THIS PARAMETER IS REQUIRED.
* 
*         ENABLED=YES OR NO.
*                INDICATES WHETHER OR NOT THE MAINFRAME IDENTIFIED
*                BY THE LID IS AVAILABLE.  DEFAULT IS YES IF THE
*                ENABLED KEYWORD IS NOT SPECIFIED.
* 
*         AT=LOOPB/STOREF/VALID/NVALID/NLIST. 
*                INDICATES THE ATTRIBUTES ASSOCIATED WITH THE LID.
*                ATTRIBUTES OF LOOPB AND VALID ARE ONLY FOR 
*                LID-S DEFINED FOR THE HOST MAINFRAMES.  DEFAULT IS 
*                *NVALID*.
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
* 
*         THE FOLLOWING MESSAGES ARE ISSUED WHEN FATAL ERRORS 
*         ARE ENCOUNTERED.
* 
* 
*         CLDT ABORTED.  SEE -A- DISPLAY. 
*         SIGNIFICANCE - A FLASHING INFORMATIVE MESSAGE ISSUED TO 
*                     NOTIFY THE OPERATOR THAT A FATAL ERROR WAS
*                     DETECTED AND NO LDT CAN BE CREATED. 
*         ACTION - CORRECT THE ERROR BASED UPON THE MESSAGE(S) IN THE 
*                     SYSTEM DAYFILE AND EITHER PERFORM A LEVEL ZERO
*                     DEADSTART OR RERUN *CLDT*.
* 
*         CLDT - BUFFER TOO SMALL.
*         CLDT - UNABLE TO GENERATE LID TABLE.* 
*                NUMBER OF WORDS AVAILABLE FOR LID - XXX.*
*                NUMBER OF WORDS NEEDED FOR LID - XXX.* 
*         SIGNIFICANCE - EITHER THE LENGTH OF THE LID TABLE 
*                     SPECIFIED IN IPRDECK IS TOO SMALL OR
*                     NUMBER OF PID-S OF LID-S EXCEEDED THE 
*                     BUFFER SET IN CLDT. 
*         ACTION - INCREASE THE LENGTH OF LID TABLE AT DEADSTART
*                     TIME OR INCREASE THE BUFFER SIZE IN CLDT. 
* 
*         CLDT ABORT. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - TAKE NECESSARY ACTIONS BASED ON THE PRECEDING
*                     DAYFILE MESSAGES. 
* 
*         CLDT - COMMAND ERROR. 
*         SIGNIFICANCE - AN INCORRECT PARAMETER WAS SPECIFIED ON THE
*                     *CLDT* STATEMENT. 
*         ACTION - SPECIFY ONLY ACCEPTABLE PARAMETERS ON THE STATEMENT. 
* 
*         CLDT - DUPLICATE PID ON NPID STATEMENT. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - DELETE THE DUPLICATE *NPID* ENTRIES. 
* 
*         CLDT - EXCEEDED MAXIMUM NUMBER OF PID-S - XXX.
*         SIGNIFICANCE - THE MAXIMUM NUMBER OF THE PID-S IN THE 
*                     LID TABLE IS DEFINED BY THE NAME *MAXPID-S* 
*                     IN NOSTEXT.  TOO MANY PID-S ARE SPECIFIED 
*                     ON THE *LIDCMID* FILE.
*         ACTION - REDUCE THE NUMBER OF PID-S ON THE *LIDCMID* FILE.
* 
*         CLDT - EXCEEDED MAXIMUM NUMBER OF LIDS/PID - XXX. 
*         SIGNIFICANCE - THE MAXIMUM NUMBER OF THE LID-S PER PID IN THE 
*                     LID TABLE IS DEFINED BY THE NAME *MXLID* IN 
*                     NOSTEXT.  TOO MANY LIDS ARE SPECIFIED FOR A PID 
*                     ON THE *LIDCMID* FILE.
*         ACTION - REDUCE NUMBER OF LIDS FOR THIS PID.
* 
*         CLDT - FIRST STATEMENT NOT LIDCMXX. 
*         SIGNIFICANCE - THE FIRST STATEMENT ON THE LIDCMID FILE
*                     MUST BE *LIDCMXX* WHERE XX IS THE MACHINE ID. 
*         ACTION - CORRECT THE FIRST STATEMENT ON THE LIDCMID FILE. 
* 
*         CLDT - NETDIS IS INCORRECT FOR HOST PID.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - DELETE *NETDIS* KEYWORD. 
*         NOTE - WHEN YOU ARE ON MAINFRAME A AND ARE CHECKING FOR 
*                SYNTAX ERRORS OF A LID CONFIGURATION FILE INTENDED 
*                FOR MAINFRAME B, THIS MESSAGE MAY NOT APPLY. 
* 
*         CLDT - NO PID SPECIFIED ON NPID STATEMENT.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - SPECIFY *PID=XXX* ON THE *NPID* STATEMENT. 
*                     XXX IS THE PHYSICAL ID. 
* 
*         CLDT - SPECIFY EXACTLY 3 ALPHANUMERIC CHARACTERS IN PID.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - MAKE SURE EXACTLY 3 ALPHANUMERIC CHARACTERS ARE
*                  SPECIFIED FOR THE PID. 
* 
*         CLDT - MAXIMUM OF 7 CHARACTERS ALLOWED ON MFTYPE. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - MAKE SURE ONLY SEVEN CHARACTERS SPECIFIED ON 
*                     THE MFTYPE KEYWORD. 
* 
*         CLDT - VALID KEYWORDS FOR NPID ARE
*                PID,MFTYPE,ENABLED,AT AND NETDIS.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - TAKE NECESSARY ACTIONS BASED ON THE PRECEDING
*                     DAYFILE MESSAGES. 
* 
*         CLDT - VALID OPTIONS FOR *AT* ARE VALID OR NVALID OR NLIST. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - TAKE NECESSARY ACTIONS BASED ON THE PRECEDING
*                     DAYFILE MESSAGES. 
* 
*         CLDT - VALID OPTIONS FOR NETDIS ARE SSF, RHF AND NAM. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - TAKE NECESSARY ACTIONS BASED ON THE PRECEDING
*                     DAYFILE MESSAGES. 
* 
*         CLDT - FILE XXXXXXX NOT FOUND.
*         SIGNIFICANCE - FILE XXXXXXX IS NOT LOCAL AND CANNOT BE
*                     LOCATED UNDER THE JOB-S USER NAME.
*         ACTION - CREATE FILE XXXXXXX UNDER THE JOB-S USER NAME
*                     OR HAVE THE FILE LOCAL TO THE JOB.
* 
*         CLDT - NO LID TABLE CREATED - 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - TAKE NECESSARY ACTIONS BASED ON THE PRECEDING
*                     DAYFILE MESSAGES.  NO ACTION IS REQUIRED IF NO
*                     LDT WAS INTENDED TO BE BUILT OR IF ONLY SYNTAX
*                     CHECKING WAS BEING DONE ON THE LID FILE.
* 
*         CLDT - UNRECOGNIZABLE DIRECTIVE.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - CORRECT OR DELETE THE UNRECOGNIZABLE DIRECTIVE.
* 
*         CLDT - NO MFTYPE SPECIFIED ON NPID STATEMENT. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - SPECIFY *MFTYPE=XXXXXXX* ON THE *NPID* STATEMENT.
*                  XXXXXXX IS A 1-7 CHARACTER STRING INDICATING THE 
*                  MAINFRAME TYPE.
* 
*         CLDT - IDLE SUBSYSTEMS, RHF, NAM, AND SSF 
*                BEFORE ATTEMPTING CLDT.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - IDLE ANY OF THE THREE SUBSYSTEMS THAT MAYBE
*         AT A CONTROL POINT.  EITHER RHF OR NAM OR SSF.
* 
*         CLDT - INCORRECT CHARACTER IN DIRECTIVE.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - CORRECT THE WRONG CHARACTER IN THE DIRECTIVE.
*                  THE INCORRECT CHARACTER IS A COLON.
* 
*         CLDT - NPID DIRECTIVE MUST BE PROCESSED BEFORE A NLID 
*                DIRECTIVE. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - PUT A *NPID* DIRECTIVE BEFORE THE FIRST *NLID* 
*                  DIRECTIVE. 
* 
*         CLDT - A SEPARATOR MUST FOLLOW NLID OR NPID.
*         SIGNIFICANCE - A DIRECTIVE WAS ENCOUNTERED THAT DID NOT 
*                HAVE A SEPARATOR.
*                EXAMPLE ( NPID PID=XXX,MFTYPE=XXXXXXX.)
*         ACTION - PUT A SEPARATOR IN THE NPID OR NLID DIRECTIVE. 
*                  EXAMPLE( NPID,PID=XXX,MFTYPE=XXXXXXX.) 
* 
* 
*         THE FOLLOWING MESSAGES ARE INFORMATIVE MESSAGES AND ARE 
*         NOT FATAL.
* 
*         CLDT COMPLETE.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - NONE.
* 
*         CLDT - DUPLICATE LID ON NLID STATEMENT. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - DELETE THE DUPLICATE *NPID* ENTRIES. 
* 
*         CLDT - ERROR IN THE FOLLOWING STATEMENT.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - TAKE NECESSARY ACTIONS BASED ON THE PRECEDING
*                     DAYFILE MESSAGES. 
* 
*         CLDT - LID KEYWORD NOT SPECIFIED. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - SPECIFY *LID=XXX* ON THE *NLID* STATEMENT. 
* 
*         CLDT - SPECIFY EXACTLY 3 ALPHANUMERIC CHARACTERS IN LID.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - MAKE SURE EXACTLY THREE CHARACTERS ARE SPECIFIED 
*                  FOR THE LID.  THE THREE CHARACTERS MUST BE 
*                  ALPHANUMERIC.
* 
*         CLDT - VALID OPTIONS FOR *AT* ARE LOOPB/STOREF/VALID
*                NVALID/NLIST.
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - MAKE SURE ONLY LOOPB OR STOREF OR VALID OR 
*                     NVALID OR NLIST ARE SPECIFIED FOR THE 
*                     *AT* KEYWORD. 
* 
*         CLDT - ONLY YES OR NO ALLOWED ON ENABLED KEYWORD. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - MAKE SURE EITHER YES OR NO ARE SPECIFIED ON
*                     THE ENABLED KEYWORD.
*         QUALIFICATION - THIS MESSAGE IS A FATAL MESSAGE 
*                         IF ISSUED IN REFERENCE TO A NPID
*                         STATEMENT.
* 
*         CLDT - VALID KEYWORDS FOR NLID ARE LID, ENABLED AND AT. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - TAKE NECESSARY ACTIONS BASED ON THE PRECEDING
*                     DAYFILE MESSAGES. 
* 
*         CLDT - STATEMENT IGNORED. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - TAKE NECESSARY ACTIONS BASED ON THE PRECEDING
*                            DAYFILE MESSAGES.
* 
*         CLDT - INCORRECT HOST LID ATTRIBUTE.
*         SIGNIFICANCE - LID ATTRIBUTES OF STOREF AND LOOPB WERE BOTH 
*                        SPECIFIED FOR A LID UNDER A HOST PID.
*         ACTION - DELETE AT LEAST ONE OF THESE ATTRIBUTES FROM THE 
*                  NLID STATEMENT.
*         NOTE - WHEN YOU ARE ON MAINFRAME A AND ARE CHECKING FOR 
*                SYNTAX ERRORS OF A LID CONFIGURATION FILE INTENDED FOR 
*                MAINFRAME B, THIS MESSAGE MAY NOT APPLY. 
* 
*         CLDT - INCORRECT LINKED LID ATTRIBUTE.
*         SIGNIFICANCE - A LID ATTRIBUTE OF LOOPB WAS SPECIFIED 
*                        FOR A LID UNDER A LINKED PID.
*         ACTION - DELETE THE LOOPB ATTRIBUTE FROM THE NLID 
*                  STATEMENT. 
*         NOTE - WHEN YOU ARE ON MAINFRAME A AND ARE CHECKING FOR 
*                SYNTAX ERRORS OF A LID CONFIGURATION FILE INTENDED 
*                FOR MAINFRAME B, THIS MESSAGE MAY NOT APPLY. 
* 
*         CLDT - = MUST FOLLOW KEYWORD. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - CORRECT THE ERROR AND RETRY. 
*         QUALIFICATION - THIS MESSAGE IS A FATAL MESSAGE 
*                         IF ISSUED IN REFERENCE TO A NPID
*                         STATEMENT.
* 
*         CLDT - VALID OPTION CAN ONLY BE SPECIFIED IF THE STOREF 
*                OPTION IS SPECIFIED. 
*         SIGNIFICANCE - SELF-EXPLANATORY.
*         ACTION - CORRECT THE NLID STATEMENT TO INCLUDE ATTRIBUTES 
*                VALID AND STOREF.
* 
  
  
*CASC     DATA   C* CLDT - IDLE SUBSYSTEMS RHF, NAM, AND SSF* 
*CASD     DATA   C*        BEFORE ATTEMPTING CLDT.* 
*CLDA     DATA   C* CLDT COMPLETE.* 
*CLDB     DATA   C* CLDT ABORT.*
*CLDC     DATA   C* CLDT ABORTED.  SEE -A- DISPLAY.*
*CLDD     DATA   C* CLDT - NO LID TABLE CREATED.* 
*CLEC     DATA   C* CLDT - SPECIFY EXACTLY 3 ALPHANUMERIC CHARACTERS* 
*CLED     DATA   C*        IN LID.* 
*CLEE     DATA   C* CLDT - VALID KEYWORDS FOR NLID ARE *
*CLEF     DATA   C*        LID, ENABLED AND AT.*
*CLEG     DATA   C* CLDT - VALID OPTIONS FOR *AT* ARE LOOPB/STOREF/*
*CLEH     DATA   C*        VALID/NVALID/NLIST.* 
*CLEI     DATA   C* CLDT - INCORRECT HOST LID ATTRIBUTE.* 
*CLEJ     DATA   C* CLDT - INCORRECT LINKED LID ATTRIBUTE.* 
*CLEK     DATA   C* CLDT - STATEMENT IGNORED.*
*CLEL     DATA   C* CLDT - LID KEYWORD NOT SPECIFIED.*
*CLEM     DATA   C* CLDT - DUPLICATE LID ON NLID STATEMENT.*
*CLEN     DATA   C* CLDT - VALID OPTION CAN ONLY BE SPECIFIED*
*CLEO     DATA   C*        IF THE STOREF OPTION IS SPECIFIED.*
*CLEU     DATA   C* CLDT - EXCEEDED MAXIMUM NUMBER OF LIDS/PID - XXX.*
*CLTL     DATA   C* CLDT - NPID DIRECTIVE MUST BE PROCESSED BEFORE* 
*CLTM     DATA   C*        A NLID DIRECTIVE.* 
*CFSF     DATA   C* CLDT - UNABLE TO GENERATE LID TABLE * 
*CFSG     DATA   C*        NUMBER OF WORDS AVAILABLE FOR LID - XXX.*
*CFSH     DATA   C*        NUMBER OF WORDS NEEDED FOR LID - XXX.* 
*CFSI     DATA   C* CLDT - EXCEEDED MAXIMUM NUMBER OF PID-S - XXX.* 
*CFSJ     DATA   C* CLDT - UNRECOGNIZABLE DIRECTIVE.* 
*CPEE     DATA   C* CLDT - VALID KEYWORDS FOR NPID ARE *
*CPEF     DATA   C*        PID,MFTYPE,ENABLED,AT AND NETDIS.* 
*CPEG     DATA   C* CLDT - ERROR IN THE FOLLOWING STATEMENT.* 
*CPEH     DATA   C* CLDT - SPECIFY EXACTLY 3 ALPHANUMERIC CHARACTERS *
*                          IN PID.* 
*CPEJ     DATA   C+ CLDT - VALID OPTIONS FOR *AT* ARE VALID/NVALID/+
*CPEK     DATA   C*        NLIST.*
*CPEL     DATA   C* CLDT - NETDIS IS INCORRECT FOR HOST PID.* 
*CPEM     DATA   C* CLDT - VALID OPTIONS FOR NETDIS ARE * 
*CPEN     DATA   C*        SSF, RHF AND NAM.* 
*CPEO     DATA   C* CLDT - = MUST FOLLOW KEYWORD.*
*CPEP     DATA   C* CLDT - NO PID SPECIFIED ON NPID STATEMENT.* 
*CPEQ     DATA   C* CLDT - DUPLICATE PID ON NPID STATEMENT.*
*CPER     DATA   C* CLDT - MAXIMUM OF 7 CHARACTERS ALLOWED ON MFTYPE.*
*CPES     DATA   C* CLDT - NO MFTYPE SPECIFIED ON NPID STATEMENT.*
*CPEZ     DATA   C* CLDT - ONLY YES OR NO ALLOWED ON ENABLED KEYWORD.*
*PRSA     DATA   C* CLDT - FIRST STATEMENT NOT LIDCMXX.*
*PRSB     DATA   C* CLDT - COMMAND ERROR.*
*PRSC     DATA   C* CLDT - BUFFER TOO SMALL.* 
*PRSD     DATA   C* CLDT - FILE XXXXXXX NOT FOUND.* 
*PTLD     DATA   C* CLDT - INCORRECT CHARACTER IN DIRECTIVE.* 
*PTLE     DATA   C* CLDT - A SEPARATOR MUST FOLLOW NLID OR NPID.* 
          SPACE  4,10 
**        LID TABLE.
* 
*T,       LTW0   12/LENH,36/RFU,12/NO-PID 
*T,1      LTW1   18/PID,1/H,1/E,1/V,1/N,4/RFU,10/RFI,12/RFU,4/SF, 
*                4/RH,4/NP
*T,2      LTW2   42/MF,6/RFU,12/NEXT-PID
*T,3      LTW3   12/RFI,36/RFU,12/NO-LID
*T,4      LTW4   18/LID,6/0,1/E,1/S,1/V,1/B,1/N,7/RFU,6/RFI,18/RFU
*         . 
*         . 
*         . 
*T,I      LTWI   REPEAT LTW4 FOR ADDITIONAL LID-S.
* 
*T,N+1    LTWN+1 REPEAT      LTW1 - LTWI FOR NEXT PID 
*         . 
*         . 
*         . 
* 
* 
*         WORD 0. 
* 
*         LENH   59-48       LENGTH OF LID TABLE IN CM WORDS. 
*         RFU    47-12       RESERVED FOR CDC.
*         NO-PID 11-0        NUMBER OF PID-S. 
* 
*         WORD 1. 
* 
*         PID    59-42       PHYSICAL ID. 
*         H      41          HOST = 1, LINK = 0.
*         E      40          ENABLED. 
*         V      39          PRE-VALIDATION.
*         N      38          NO-LIST. 
*         RFU    37-34       RESERVED FOR CDC.
*         RFI    33-24       RESERVED FOR INSTALLATION. 
*         RFU    23-12       RESERVED FOR CDC.
*         SF     11-8        SSF - SCOPE 2 STATION FACILITY.
*         RH     7-4         RHF - REMOTE HOST STATUS.
*         NP     3-0         NHP - NETWORK HOST PRODUCTS STATUS.
* 
*         (1)    NETWORK STATUS CODES.
*                0 - NETWORK NOT AVAILABLE. 
*                1 - PATHS TO PID IN SERVICE. 
*                2 - ALL PATHS TO PID OUT OF SERVICE. 
*                3-7 - RESERVED FOR CDC.
*                10 - PATHS TO PID DISABLED BY OPERATOR.
*                     NETWORK NOT AVAILABLE.
*                11 - PATHS TO PID DISABLED BY OPERATOR.
*                     PATHS TO PID IN SERVICE 
*                12 - PATHS TO PID DISABLED BY OPERATOR.
*                     ALL PATHS TO PID OUT OF SERVICE.
* 
*         WORD 2. 
* 
*         MF        59-18       MAINFRAME DESCRIPTION.
*         RFU       17-12       RESERVED OF CDC.
*         NEXT-PID  11-0        NEXT PID OFFSET ADDRESS.
* 
*         WORD 3. 
* 
*         RFI    59-48       RESERVED FOR INSTALLATION. 
*         RFU    47-12       RESERVED FOR CDC.
*         NO-LID 11-0        NUMBER OF LID SLOTS FOR THIS PID.
* 
*         WORD 4. 
* 
*         LID    59-42       FIRST - LID. 
*         ZERO   41-36       RESERVED FOR CDC.
*         E      35          ENABLED FLAG FOR LID.
*         S      34          STORE AND FORWARD MAINFRAME FOR LID. 
*         V      33          LID VALIDATION ATTRIBUTE.
*         B      32          LOOP BACK FLAG FOR LID.
*         N      31          LID NOLIST ATTRIBUTE.
*         RFU    30-24       RESERVED FOR CDC.
*         RFI    23-18       RESERVED FOR INSTALLATION. 
*         RFU    17-0        RESERVED FOR CDC.
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMSPFM 
*CALL     COMSSCD 
*CALL     COMSSFM 
*CALL     COMSSSD 
*CALL     COMSSSJ 
          BASE   D
          SPACE  4,10 
*         MACRO DEFINITIONS.
  
**        FIELD - DEFINE FIELDS.
*         TAGS ARE GENERATED TO GIVE THE WORD LOCATION, BIT 
*         LOCATION, AND NUMBER OF BITS IN FIELD.
* 
*         ENTRY  TAG FIELD WP,LB,RB 
*         TAG =  NAME OF FIELD (1-6 LEGAL COMPASS CHARACTERS) 
*             =  *, USE CURRENT VALUE OF PSEUDO ORG COUNTER ORLOC1$ 
*         WP  =  RELATIVE WORD POSITION IN A TABLE. 
*         LB  =  LEFT-MOST BIT POSITION WITHIN A WORD (BIT 59 BEING 
*                SIGN BIT). 
*         RB  =  RIGHT-MOST BIT POSITION WITHIN A WORD. 
* 
*         EXIT   TAGW = WORD LOCATION OF FIELD. 
*                TAGS = LEFT BIT POSITION OF FIELD. 
*                TAGN = NUMBER OF BITS IN FIELD.
  
  
          PURGMAC  FIELD
  
          MACRO  FIELD,TAG,WP,LB,RB 
          IFC    NE,/WP//,4 
          IFC    EQ,/WP/*/,2
 _TAG_W   EQU    ORLOC1$
          SKIP   1
 _TAG_W   EQU    WP 
 _TAG_S   EQU    LB 
 _TAG_N   EQU    LB-RB+1
          ENDM
          SPACE  4,10 
*         LID TABLE (LDT) FIELD DEFINITIONS.
  
  
 LNTH     FIELD  0,59,48     LID TABLE LENGTH 
 LRF0     FIELD  0,47,12     RESERVED FOR CDC 
 LILK     FIELD  0,11,0      NUMBER OF PID-S
  
 LPID     FIELD  1,59,42     PID
 LHST     FIELD  1,41,41     1 IF HOST, 0 IF LINK 
 LENA     FIELD  1,40,40     1 IF ENABLED 
 LVAD     FIELD  1,39,39     1 IF PRE-VALIDATION REQUIRED 
 LNST     FIELD  1,38,38     1 IF NOT TO LIST PID 
 LRF1     FIELD  1,37,34     RESERVED FOR CDC 
 LRFI     FIELD  1,33,24     RESERVED FOR INSTALLATION
 LRF2     FIELD  1,23,12     RESERVED FOR CDC 
 LSFS     FIELD  1,11,8      SSF - SCOPE 2 STATION FACILITY STATUS
 LRHS     FIELD  1,7,4       RHF - REMOTE HOST FACILITY STATUS
 LNPS     FIELD  1,3,0       NHP - NETWORK HOST PRODUCTS STATUS 
  
 LMFD     FIELD  2,59,18     MAINFRAME DESCRIPTION
 LRF3     FIELD  2,17,12     RESERVED FOR CDC 
 LNPD     FIELD  2,11,0      NEXT PID OFFSET ADDRESS
  
 LRI3     FIELD  3,59,48     RESERVED FOR INSTALLATION
 LRF4     FIELD  3,47,12     RESERVED FOR CDC 
 LNLD     FIELD  3,11,0      NUMBER OF LID SLOTS FOR THIS PID 
  
 LLD1     FIELD  4,59,42     FIRST LID
 LRF5     FIELD  4,41,36     RESERVED FOR CDC 
 LLEN     FIELD  4,35,35     1 IF ENABLED LID 
 LSTF     FIELD  4,34,34     1 IF STORE AND FORWARD 
 LLVA     FIELD  4,33,33     1 IF PRE-VALIDATION REQUIRED 
 LLBK     FIELD  4,32,32     1 IF LOOP BACK 
 LNLS     FIELD  4,31,31     1 IF NOLIST ATTRIBUTE
 LRF6     FIELD  4,30,24     RESERVED FOR CDC 
 LRI4     FIELD  4,23,18     RESERVED FOR INSTALLATION
 LRF7     FIELD  4,17,0      RESERVED FOR CDC 
          SPACE  4
 QUAL$    EQU    0
          BASE   D
          TITLE  DEFINITIONS. 
****      ASSEMBLY CONSTANTS. 
  
 IBUFL    EQU    400         BUFFER LENGTH
 SSJ=     EQU    400000B     SSJ= ENTRY POINT 
 UBUFL    EQU    220         UNPACK BUFFER LENGTH 
 WBUFL    EQU    22          WORKING BUFFER LENGTH
****
          SPACE  4,10 
          ORG    200B 
 FWA      BSS    0
          SPACE  4,10 
*         FET DEFINITIONS.
  
 I        BSS    0           LID CONFIGURATION FILE 
 LIDCM    FILEC  IBUF,IBUFL,(FET=13D) 
          SPACE  4
*         GLOBAL VARIABLES. 
  
 DSSQ     CON    0           DEADSTART SEQUENCE FLAG (0 IF DEADSTART) 
 FERF     CON    0           FATAL ERROR FLAG 
 FS       CON    0           FREE SPACE FOR EACH PID
 FSR      CON    0           REMAINDER OF FREE SPACE
 HOST     CON    0           ZERO IF NO HOST PID SPECIFIED
 HOSTFLG  VFD    60/1        ZERO IF HOST MAINFRAME 
 HOSTPID  VFD    60/0LM      HOST MAINFRAME PID 
 JORG     CON    0           JOB ORIGIN FLAG (0 IF SYSTEM ORIGIN) 
 LIDD     VFD    24/0,1/1,35/0  LID DEFAULT VALUE (ENABLED) 
 LIDL     CON    0           LID TABLE LENGTH 
 PIDD     VFD    18/0,1/0,1/1,28/0,4/0,4/0,4/0
*                            (ENABLED AND NOT VALIDATE) 
          TITLE  MAIN PROGRAM.
**        CLDT - CREATE LID TABLE.
* 
*         EXIT   LID TABLE GENERATED IF NO FATAL ERRORS ENCOUNTERED 
*                IN THE FILE AND CALLED BY A SYSTEM ORIGIN JOB. 
*                IF CALLED BY A NON-SYSTEM ORIGIN JOB, THE LID
*                CONFIGURATION FILE IS VERIFIED AND NO LID TABLE
*                IS CREATED.
* 
*         USES   X - 2. 
*                A - 2. 
* 
*         CALLS  CAS, CFS, CLT, PRS, PSE. 
* 
*         MACROS ABORT, ENDRUN, FLASH, MESSAGE, RETURN, SETPIDI.
* 
*         NOTE   FATAL *CLDT* ERRORS ENCOUNTERED DURING A LEVEL ZERO
*                DEADSTART WILL NOT CAUSE *CLDT* TO ABORT.  THIS ERROR
*                EXIT PROCESSING IS TO ENSURE THAT SUBSEQUENT *ISF* 
*                PROCESSING (INITIATED BY *MSM*) WILL OCCUR REGARDLESS
*                *CLDT* ERRORS.  NO LID TABLE IS CREATED IF FATAL 
*                ERRORS ARE ENCOUNTERED.
  
 CLDT     BSS    0           ENTRY
          RJ     PRS         PRESET 
          RJ     CFS         CALCULATE FREE SPACE 
          RJ     CLT         CREATE LID TABLE 
          SA2    FERF 
          NZ     X2,CLD3     IF FATAL ERROR ENCOUNTERED 
          SA2    JORG 
          NZ     X2,CLD1     IF NON-SYSTEM ORIGIN USER
          RJ     CAS         CHECK ACTIVE SUBSYSTEMS
          SETPIDI  LIDT      GENERATE LID TABLE 
          EQ     CLD2        * CLDT COMPLETE.*
  
 CLD1     MESSAGE  CLDD      * CLDT - NO LID TABLE CREATED.*
 CLD2     MESSAGE  CLDA      * CLDT COMPLETE.*
          EQ     CLD5        EXIT 
  
 CLD3     MESSAGE  CLDB      * CLDT ABORT.* 
          SA2    DSSQ 
          ZR     X2,CLD4     IF DEADSTART SEQUENCE
          RETURN I,R         RETURN LID CONFIGURATION FILE
          ABORT 
  
 CLD4     MESSAGE  CLDC,1    * CLDT ABORTED.  SEE -A- DISPLAY.* 
          FLASH              INTENSIFY MESSAGE ON CONSOLE 
          RJ     PSE         PAUSE FOR OPERATOR GO/DROP 
 CLD5     RETURN I,R         RETURN LID CONFIGURATION FILE
          ENDRUN  CLDT
  
  
 CLDA     DATA   C* CLDT COMPLETE.* 
 CLDB     DATA   C* CLDT ABORT.*
 CLDC     DATA   C* CLDT ABORTED.  SEE -A- DISPLAY.*
 CLDD     DATA   C* CLDT - NO LID TABLE CREATED.* 
 CAS      TITLE  SUBROUTINES. 
**        CAS - CHECK ACTIVE SUBSYSTEMS.
* 
*         EXIT   AN ERROR MESSAGE IS ISSUED IF ANY OF THREE SUBSYSTEMS
*                ARE ACTIVE AT A CONTROL POINT (RHF, NAM, OR SSF).
*                TO *CLD3* IF ANY OR ALL OF THE ABOVE SUBSYSTEMS ARE
*                CURRENTLY ACTIVE.
* 
*         USES   X - 0, 1, 2, 6.
*                A - 1, 2, 6. 
*                B - 2, 3, 4. 
* 
*         MACROS MESSAGE, SYSTEM. 
  
  
 CAS      SUBR               ENTRY/EXIT 
  
*         GET *SSCP* TABLE POINTER. 
  
          SYSTEM RSB,R,CASA  GET *SSCP* 
  
          SA1    CASA+1      *SSC* POINTER
          MX0    24 
          LX0    -24
          BX1    X0*X1       *SSC*
          LX1    6
          SX2    SSCTL
          LX2    18 
          IX1    X2+X1       TO GET WORD FOR RHF SSC
          SA2    CASB 
          BX6    X2+X1       ADD ADDRESS OF SSC FOR RSB CALL
          SA6    CASB 
  
*         GET *SSC* SUBSYSTEM CONTROL POINT TABLE.
  
          SYSTEM RSB,R,CASB  GET *SSC*
  
          SB4    3-1         SET NUMBER OF SUBSYSTEMS TO CHECK -1 
          SB2    MXSI-RFSI   SET RHF ID 
 CAS1     MX0    12 
          SX2    CASB+1 
          SB3    5           SET NUMBER OF BYTES IN WORD
 CAS2     ZR     B2,CAS3     IF SUBSYSTEM ASSIGNMENT FOUND
          SB2    B2-B1
          LX0    -12
          SB3    B3-B1
          NZ     B3,CAS2     IF MORE BYTES IN WORD TO CHECK 
          SX2    X2+B1       CHECK NEXT WORD
          SB3    5           SET NUMBER OF BYTES IN WORD
          EQ     CAS2        CONTINUE SUBSYSTEM SEARCH
  
 CAS3     SA1    X2 
          BX1    X0*X1       GET EJT ORDINAL ASSIGNED TO SUBSYSTEM
          NZ     X1,CAS4     IF SUBSYSTEM IS ASSIGNED 
          ZR     B4,CASX     IF DONE CHECKING SUBSYSTEMS
          SB4    B4-B1
          SB2    MXSI-NMSI   SET NAM ID 
          EQ     B4,B1,CAS1  IF CHECKING NAM ACTIVITY 
          SB2    MXSI-SSSI
          EQ     CAS1        CHECK FOR SSF ACTIVITY 
  
  
 CAS4     MESSAGE  CASC      * CLDT - IDLE SUBSYSTEMS RHF, NAM AND SSF* 
          MESSAGE  CASD      *        BEFORE ATTEMPTING CLDT.*
          EQ     CLD3        * CLDT ABORT.* 
  
 CASA     VFD    12/0,12/1,18/SSCP,18/CASA+1
          CON    -1 
 CASB     VFD    12/0,12/SSCTL,18/0,18/CASB+1 
          CON    -1 
          BSSZ   SSCTL-1
 CASC     DATA   C* CLDT - IDLE SUBSYSTEMS RHF, NAM, AND SSF* 
 CASD     DATA   C*        BEFORE ATTEMPTING CLDT.* 
 CLE      SPACE  4,15 
**        CLE - CREATE LID ENTRY. 
* 
*         ENTRY  (CLTB) = CURRENT LID POINTER.
*                (CLTD) = CURRENT FWA OF PID. 
* 
*         EXIT   (CLTB) = CURRENT LID POINTER.
*                (CLTE) = NUMBER OF LID FOR PID.
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.
*                A - 1, 2, 6, 7.
*                B - 1, 2, 3. 
* 
*         MACRO  MESSAGE. 
  
  
 CLE      SUBR               ENTRY/EXIT 
          SA1    UBUF        GET UNPACK BUFFER
          BX7    X7-X7       INITIAL LID ENTRY
          SA2    LIDD        LID DEFAULT VALUE, ENABLED 
          BX6    X2 
          SA7    CLEQ        CLEAR *LID* SPECIFIED FLAG 
          SA7    CLER        CLEAR LOOPB SPECIFIED FLAG 
          SA7    CLES        CLEAR STOREF SPECIFIED FLAG
          SA7    CLEP        CLEAR VALID SPECIFIED FLAG 
 CLE1     MX0    42 
          SA1    A1+B1       GET KEYWORD
          SA2    CLEA        GET KEYWORD TABLE
          ZR     X1,CLE18    IF DONE PROCESSING 
 CLE2     ZR     X2,CLE23    IF NO MATCH FOUND
          BX3    X1-X2
          BX4    X0*X3
          ZR     X4,CLE3     IF KEYWORD MATCH 
          SA2    A2+1 
          EQ     CLE2        TRY NEXT WORD
  
 CLE3     SB3    X2          GET ADDRESS OF PROCESSOR 
          SX3    1R=
          BX2    X1-X3
          BX4    -X0*X2 
          NZ     X4,CLE21    IF SEPARATOR NOT *=* 
          SA1    A1+B1
          JP     B3          PROCESS RESPECTIVE KEYWORD 
  
*         PROCESS *LID* KEYWORD.
  
 CLE4     MX0    18 
          SA2    CLEQ        GET *LID* KEYWORD FLAG 
          BX3    X0*X1
          ZR     X3,CLE22    IF NO *LID* SPECIFIED
          NZ     X2,CLE20    IF *LID* ALREADY SPECIFIED 
          LX0    -18
          BX7    X0*X1
          NZ     X7,CLE22    IF LID HAS MORE THAN 3 CHARACTERS
          LX0    6
          BX7    X0*X1
          ZR     X7,CLE22    IF LID HAS LESS THAN 3 CHARACTERS
          BX7    X3 
          MX0    6
          SB2    3
 CLE5     BX2    X7*X0
          LX2    6
          ZR     X2,CLE22    IF CHARACTER EQUALS A COLON
          NG     X2,CLE22    IF CHARACTER IS NOT ALPHANUMERIC 
          SX2    X2-1R9-1 
          PL     X2,CLE22    IF CHARACTER IS NOT ALPHANUMERIC 
          LX7    6
          SB2    B2-B1
          NZ     B2,CLE5     IF THERE ARE MORE CHARACTERS TO CHECK
          SA2    CLTE        GET NUMBER OF LID-S
          SB3    X2+
 CLE6     SA4    B3+CLET-1   CHECK FOR DUPLICATE LID-S
          BX7    X3-X4
          SB3    B3-B1
          ZR     X7,CLE20    IF DUPLICATE LID 
          GT     B3,CLE6     IF MORE LID-S TO CHECK 
          BX7    X3 
          BX6    X3+X6
          SA7    X2+CLET     ADD NEW LID
          SA6    CLEQ        INDICATE *LID* SPECIFIED 
          EQ     CLE1        PROCESS NEXT KEYWORD 
  
*         PROCESS *ENABLED* KEYWORD.
  
 CLE7     SX3    3RYES
          LX3    -18
          BX7    X1-X3
          BX7    X0*X7
          ZR     X7,CLE1     IF *YES* 
          SX3    2RNO 
          LX3    -12
          BX7    X1-X3
          BX7    X0*X7
          NZ     X7,CLE24    IF INCORRECT KEYWORD 
          SX3    B1 
          LX3    LLENS-0
          BX6    -X3*X6 
          EQ     CLE1        PROCESS NEXT KEYWORD 
  
*         PROCESS *AT* KEYWORD. 
  
 CLE8     SA2    CLEB        GET *AT* KEYWORD TABLE 
 CLE9     BX3    X1-X2
          BX4    X0*X3
          ZR     X4,CLE10    IF AT KEYWORD MATCH
          SA2    A2+1 
          NZ     X2,CLE9     IF NOT END OF TABLE
          EQ     CLE25       UNRECOGNIZED KEYWORD 
  
 CLE10    SX7    B1 
          SB3    X2 
          JP     B3          PROCESS RESPECTIVE KEYWORD 
  
*         PROCESS *LOOPB* KEYWORD.
  
 CLE11    SA2    HOSTFLG     CHECK FOR HOST 
          NZ     X2,CLE28    IF LINKED, ISSUE ERROR MESSAGE 
          SA2    CLES        CHECK FOR STOREF 
          NZ     X2,CLE29    IF STOREF ALREADY SET
          BX5    X6          SAVE X6 VALUE
          SX6    B1 
          SA6    CLER        SET LOOPB
          LX7    LLBKS-0     ADD LOOP BACK FLAG 
          BX6    X5          RESTORE X6 VALUE 
          BX6    X6+X7
          EQ     CLE17       CONTINUE WITH NEXT KEYWORD 
  
*         PROCESS *STOREF* KEYWORD. 
  
 CLE12    SA2    HOSTFLG     CHECK FOR HOST 
          NZ     X2,CLE13    IF LINKED CONTINUE 
          SA2    CLER        CHECK FOR LOOPB
          NZ     X2,CLE29    IF LOOPB ALREADY SET 
 CLE13    BX5    X6          SAVE X6 VALUE
          SX6    B1 
          SA6    CLES        SET STOREF OPTION
          LX7    LSTFS-0     ADD STORE FORWARD FLAG 
          BX6    X5          RESTORE X6 VALUE 
          BX6    X6+X7
          EQ     CLE17       CONTINUE WITH NEXT KEYWORD 
  
*         PROCESS *VALID* KEYWORD.
  
 CLE14    LX7    LLVAS-0     ADD VALIDATION FLAG
          BX6    X6+X7
          SA6    CLEP        SET VALID OPTION SPECIFIED 
          EQ     CLE17       CONTINUE WITH NEXT KEYWORD 
  
*         PROCESS *NVALID* KEYWORD. 
  
 CLE15    LX7    LLVAS-0     DELETE VALIDATION FLAG 
          BX6    -X7*X6 
          BX7    X7-X7
          SA7    CLEP        CLEAR VALID OPTION SPECIFIED 
          EQ     CLE17       CONTINUE WITH NEXT KEYWORD 
  
*         PROCESS *NLIST* KEYWORD.
  
 CLE16    LX7    LNLSS-0     ADD NO LIST FLAG 
          BX6    X6+X7
          EQ     CLE17       CONTINUE WITH NEXT KEYWORD 
  
*         *AT* KEYWORD POST-PROCESSOR.
  
 CLE17    SX5    1R/
          SX4    X1 
          BX7    X5-X4
          NZ     X7,CLE1     IF NOT */* 
          SA1    A1+B1
          MX0    42 
          EQ     CLE8        PROCESS NEXT *AT* KEYWORD
  
*         DONE PROCESSING KEYWORDS. 
  
 CLE18    SA2    CLEQ        *LID* KEYWORD SPECIFIED FLAG 
          SA3    CLTB 
          ZR     X2,CLE27    IF *LID* KEYWORD NOT SPECIFIED 
          SA2    CLEP        *VALID* OPTION SPECIFIED 
          ZR     X2,CLE19    IF *VALID* OPTION NOT SPECIFIED
          SA2    CLES        *STOREF* OPTION SPECIFIED
          ZR     X2,CLE30    IF *STOREF* OPTION NOT SPECIFIED 
 CLE19    SX7    X3+B1       INCREMENT LID POINTER BY 1 
          SA2    CLTE        CHECK NUMBER OF LID-S IN THIS PID SO FAR 
          SB3    X2-MXLID 
          ZR     B3,CLE31    IF TOO MANY LIDS FOR THIS PID
          SA7    A3 
          SA6    X3          ADD NEW LID
          SX7    X2+B1       INCREMENT NUMBER OF LID-S
          SA7    A2 
          EQ     CLEX        RETURN 
  
*         DUPLICATE LID-S.
  
 CLE20    MESSAGE  CLEM      *DUPLICATE LID ON THE NLID STATEMENT.* 
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         SEPARATOR NOT *=*.
  
 CLE21    MESSAGE  CPEO      *CLDT = MUST FOLLOW KEYWORD* 
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         INCORRECT LID.
  
 CLE22    MESSAGE  CLEC      *SPECIFY EXACTLY 3 CHARACTERS* 
          MESSAGE  CLED      *IN LID.*
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         INCORRECT KEYWORD.
  
 CLE23    MESSAGE  CLEE      * CLDT - VALID KEYWORDS FOR NLID ARE*
          MESSAGE  CLEF      * LID, ENABLED AND AT* 
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         INCORRECT *ENABLED* PARAMETER.
  
 CLE24    MESSAGE  CPEZ      *ONLY YES/NO ALLOWED ON ENABLED KEYWORD* 
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         INCORRECT *AT* PARAMETER. 
  
 CLE25    MESSAGE  CLEG      *CLDT - VALID OPTIONS FOR *AT* ARE LOOPB/
          MESSAGE  CLEH       STOREF/VALID/NVALID/NLIST.* 
  
 CLE26    MESSAGE  CPEG      *ERROR IN THE FOLLOWING STATEMENT* 
          MESSAGE  WBUF 
          MESSAGE  CLEK      *STATEMENT IGNORED.* 
          EQ     CLEX        RETURN 
  
*         *LID* KEYWORD NOT SPECIFIED.
  
 CLE27    MESSAGE  CLEL      *NO LID SPECIFIED ON NLID STATEMENT.*
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         INCORRECT LINKED *LID* ATTRIBUTE. 
  
 CLE28    MESSAGE  CLEJ      * CLDT - INCORRECT LINKED LID ATTRIBUTE.*
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         INCORRECT HOST *LID* ATTRIBUTE. 
  
 CLE29    MESSAGE  CLEI      * CLDT - INCORRECT HOST LID ATTRIBUTE.*
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         *VALID* OPTION SPECIFIED BUT NOT *STOREF* OPTION. 
  
 CLE30    MESSAGE  CLEN      * VALID OPTION CAN ONLY BE SPECIFIED*
          MESSAGE  CLEO      * IF THE STOREF OPTION IS SPECIFIED.*
          EQ     CLE26       ISSUE ERROR MESSAGE
  
 CLE31    MESSAGE  CLEU      * EXCEEDED MAXIMUM NUMBER OF LIDS/PID... * 
          EQ     CLE26       ISSUE ERROR MESSAGE
  
*         *NLID* KEYWORD TABLE. 
  
 CLEA     VFD    42/3LLID,18/CLE4  *LID*
          VFD    42/7LENABLED,18/CLE7  *ENABLED*
          VFD    42/2LAT,18/CLE8  *AT*
          VFD    60/0 
  
*         *AT* KEYWORD TABLE. 
  
 CLEB     VFD    42/5LLOOPB,18/CLE11  *LOOPB* 
          VFD    42/6LSTOREF,18/CLE12  *STOREF* 
          VFD    42/0LVALID,18/CLE14  *VALID* 
          VFD    42/0LNVALID,18/CLE15  *NVALID* 
          VFD    42/0LNLIST,18/CLE16  *NLIST* 
          VFD    60/0 
  
 CLEC     DATA   C* CLDT - SPECIFY EXACTLY 3 ALPHANUMERIC CHARACTERS* 
 CLED     DATA   C*        IN LID.* 
 CLEE     DATA   C* CLDT - VALID KEYWORDS FOR NLID ARE *
 CLEF     DATA   C*        LID, ENABLED AND AT.*
 CLEG     DATA   C+ CLDT - VALID OPTIONS FOR *AT* ARE LOOPB/STOREF/+
 CLEH     DATA   C*        VALID/NVALID/NLIST.* 
 CLEI     DATA   C* CLDT - INCORRECT HOST LID ATTRIBUTE.* 
 CLEJ     DATA   C* CLDT - INCORRECT LINKED LID ATTRIBUTE.* 
 CLEK     DATA   C* CLDT - STATEMENT IGNORED.*
 CLEL     DATA   C* CLDT - LID KEYWORD NOT SPECIFIED.*
 CLEM     DATA   C* CLDT - DUPLICATE LID ON NLID STATEMENT.*
 CLEN     DATA   C* CLDT - VALID OPTION CAN ONLY BE SPECIFIED*
 MXLD     DECMIC MXLID
 CLEU     DATA   C* CLDT - EXCEEDED MAXIMUM NUMBER OF LIDS/PID - "MXLD" 
,.* 
 CLEO     DATA   C*        IF THE STOREF OPTION IS SPECIFIED.*
 CLEP     BSSZ   1           NOT ZERO IF VALID OPTION SPECIFIED 
 CLEQ     BSSZ   1           ONE IF LID KEYWORD SPECIFIED 
 CLER     BSSZ   1           ONE IF LOOPB OPTION SPECIFIED
 CLES     BSSZ   1           ONE IF STOREF OPTION SPECIFIED 
 CLET     BSSZ   MXLID+1     LID TABLE
 CLT      SPACE  4,15 
**        CLT - CREATE LID TABLE. 
* 
*         ENTRY  (FS) = FREE SPACE FOR EACH PID.
* 
*         EXIT   LID TABLE CREATED. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 1, 3.
* 
*         CALLS  CLE, CPE, PTL. 
* 
*         MACROS READ, READC, REWIND. 
* 
*         NOTE   THE LID TABLE IS WRITTEN OVER THE OVERLAYABLE CODE.
  
  
 CLT      SUBR               ENTRY/EXIT 
  
*         CLEAR THE OVERLAYABLE CODE FOR THE LDT. 
  
          SB3    LENGTH      LENGTH OF AREA TO BE CLEARED 
          SX7    B0+
 CLT0     SA7    LIDT+B3
          SB3    B3-B1
          GT     B3,CLT0     IF MORE WORDS TO CLEAR 
          REWIND I           REWIND LID CONFIGURATION FILE
          READ   X2          INITIAL READ 
          READC  X2,WBUF,WBUFL  SKIP ONE LINE 
          SX6    LIDT+2      FWA OF LID TABLE (EXCLUDING HEADER)
          SA6    CLTB 
 CLT1     RJ     PTL         PROCESS NEXT LINE
          NZ     X6,CLT7     IF ERROR IN *PTL*
          NZ     X1,CLT8     IF EOR/EOF 
          SA1    UBUF        GET FIRST WORD 
          SA2    CLTH        FWA OF KEYWORD TABLE 
          MX0    42 
 CLT2     BX3    X1-X2
          BX4    X0*X3
          ZR     X4,CLT3     IF KEYWORD MATCH 
          SA2    A2+1 
          ZR     X2,CLT1     IF UNRECOGNIZED KEYWORD
          EQ     CLT2        TRY NEXT WORD
  
 CLT3     SB3    X2+         GET KEYWORD PROCESSOR
          JP     B3          PROCESS KEYWORD
  
*         PROCESS *COMMENT* STATEMENT.
  
 CLT4     EQ     CLT1        IGNORE COMMENT STATEMENT 
  
*         PROCESS *NPID* STATEMENT. 
  
 CLT5     RJ     CPE         CREATE PID ENTRY 
          SX6    B1 
          SA6    CLTK        SET PID PROCESSED
          EQ     CLT1        READ NEXT STATEMENT
  
*         PROCESS *NLID* STATEMENT. 
  
 CLT6     RJ     CLE         CREATE LID ENTRY 
          SA2    CLTK 
          NZ     X2,CLT1     IF A PID HAS BEEN PROCESSED
          MESSAGE  CLTL      * CLDT - NPID DIRECTIVE MUST BE PROCESSED* 
          MESSAGE  CLTM      *        BEFORE A NLID DIRECTIVE.* 
          MESSAGE  CPEG      * ERROR IN THE FOLLOWING STATEMENT*
          MESSAGE  WBUF      THE NLID STATEMENT 
          SX6    B1 
          SA6    FERF        SET FATAL ERROR FLAG 
          EQ     CLT1        READ NEXT STATEMENT
  
*         PROCESS *PTL* ERROR.
  
 CLT7     BX6    X6-X6
          SA6    CFSK 
          ZR     X1,CLT1     IF AN ERROR READ NEXT STATEMENT
  
*         UPDATE NUMBER OF LID-S FOR THE LAST PID.
  
 CLT8     SA2    HOST 
          NZ     X2,CLT11    IF HOST PID IS SPECIFIED 
          SA2    HOSTPID
          BX7    X2 
          SA7    CLTI+2      SET HOST PID IN DEFAULTS 
          SA2    CLTJ+2 
          BX7    X7-X2
          SA7    CLTJ+2      SET HOST LID IN DEFAULTS 
          SB2    7
 CLT9     SA2    CLTI+B2     GET HOST PID DEFAULTS
          BX7    X2 
          SA7    UBUF+B2     FILL UBUF FOR *CPE* CALL 
          SB2    B2-B1
          NZ     B2,CLT9     IF NOT DONE FILLING UBUF 
          RJ     CPE         CREATE HOST PID
          SB2    3
 CLT10    SA2    CLTJ+B2     GET HOST LID DEFAULTS
          BX7    X2 
          SA7    UBUF+B2     FILL UBUF FOR *CLE* CALL 
          SB2    B2-B1
          NZ     B2,CLT10    IF NOT DONE FILLING UBUF 
          RJ     CLE         CREATE HOST LID
 CLT11    SX7    B1+         SET EOF
          SA7    CLTG 
          SA1    CLTB        GET CURRENT POINTER
          SA2    LIDL        GET LID TABLE LENGTH 
          SX2    X2+LIDT+1   LWA OF LID TABLE 
          IX7    X2-X1
          SA7    FS 
          RJ     CPE         UPDATE LAST PID ENTRY
          SA1    CLTD        CLEAR *N-PID* OF THE LAST PID
          SA2    X1+B1
          MX0    60-LNPDN 
          BX7    X0*X2
          SA7    A2 
  
*         GENERATE HEADER WORD OF LDT AND PARAMETER BLOCK.
  
          SA1    CLTF        GET NUMBER OF PID-S
          SA2    LIDL        GET LENGTH OF LID TABLE
          SX6    X2          SET PARAMETER BLOCK LENGTH 
          LX2    LNTHS-LNTHN+1
          BX7    X1+X2
          SX2    B1          SET FET NOT BUSY 
          LX6    59-11
          BX6    X6+X2       MERGE BLOCK LENGTH WITH FET FLAG 
          SA6    LIDT        UPDATE LENGTH OF PARAMETER BLOCK 
          SA7    A6+B1       UPDATE FWA OF LID TABLE
          EQ     CLTX        RETURN 
  
  
 CLTA     BSSZ   1
 CLTB     BSSZ   1           NEXT AVAILABLE LID TABLE ENTRY 
 CLTD     BSSZ   1           FWA OF CURRENT PID ENTRY 
 CLTE     BSSZ   1           NUMBER OF LID-S FOR PID
 CLTF     BSSZ   1           NUMBER OF PID-S
 CLTG     BSSZ   1           1 IF EOF 
  
*         *LIDCM* KEYWORD TABLE.
  
 CLTH     VFD    42/4LNLID,18/CLT6
          VFD    42/4LNPID,18/CLT5
          VFD    42/7LCOMMENT,18/CLT4 
          BSSZ   1
  
*         DEFAULTS FOR HOST PID AND HOST LID IF NOT SPECIFIED.
  
 CLTI     VFD    60/4LNPID                       NPID STATEMENT 
          VFD    18/3LPID,36/0,6/1R=             PID= STATEMENT 
          VFD    60/0                            HOST+MACHID PID
          VFD    36/6LMFTYPE,18/0,6/1R=          MFTYPE STATEMENT 
          VFD    60/7LNOSHOST                    NOSHOST DEFAULT
          VFD    12/2LAT,42/0,6/1R= 
          VFD    60/5LVALID 
          BSSZ   1                               ZERO WORD
 CLTJ     VFD    60/4LNLID                       NLID STATEMENT 
          VFD    18/3LLID,36/0,6/1R=             LID= STATEMENT 
          VFD    60/1LA                          LID+MACHID LID 
          BSSZ   1                               ZERO WORD
 CLTK                        1 IF PID PROCESSED 
 CLTL     DATA   C* CLDT - NPID DIRECTIVE MUST BE PROCESSED BEFORE* 
 CLTM     DATA   C*        A NLID DIRECTIVE.* 
 CPE      SPACE  4,20 
**        CPE - CREATE PID ENTRY. 
* 
*         ENTRY  (CLTB) = LID TABLE POINTER (NEXT AVAILABLE WORD).
*                (CLTD) = LAST PID ENTRY. 
*                (CLTE) = NUMBER OF LID-S FOR LAST PID. 
*                (CLTF) = NUMBER OF PID-S.
*                (CLTG) = 1 IF EOF. 
*                (FS)   = FREE SPACE FOR EACH PID.
* 
*         EXIT   (CLTB) = NEXT AVAILABLE WORD.
*                (CLTD) = FWA OF CURRENT PID. 
*                (CLTE) = 0.
*                (CLTF) = NUMBER OF PID-S UPDATED.
*                (CLET) = 0.
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - 3, 4, 7. 
* 
*         CALLS  SFN. 
* 
*         MACROS MESSAGE. 
  
  
 CPE      SUBR               ENTRY/EXIT 
          SA1    CLTD        GET FWA OF LAST PID ENTRY
          ZR     X1,CPE3     IF FIRST CALL
          SA3    A1+B1       GET NUMBER OF LID-S FOR LAST PID 
          ERRNZ  CLTE-CLTD-1 ADJUST IF WORDS NOT CONTIGUOUS 
          SA2    X1+B1       UPDATE NPID ENTRY
          BX6    X3 
          BX7    X7-X7
          SA4    FSR         GET REMAINDER OF FREE SPACE
          ZR     X4,CPE1     IF NO REMAINDER OF FREE SPACE
          SX7    X4-1 
          SA7    A4 
          SX7    B1 
 CPE1     SA4    CLTB        UPDATE NEXT AVAILABLE LID TABLE ENTRY
          SA3    FS 
          IX6    X6+X3       ADD FREE SPACE TO NUMBER OF LID-S
          IX6    X6+X7       ADD REMAINDER FREE SPACE 
          SA6    A2+B1       SET NUMBER OF LID-S FOR THIS PID ENTRY 
          IX3    X3+X7
          IX6    X4+X3
          SA6    A4 
          SA6    CPEC 
          IX7    X6-X1       CALCULATE NEXT PID OFFSET
          BX7    X2+X7
          SA7    A2          ADD NPID 
 CPE3     SA3    CLTG        CHECK EOF
          SA1    CLTB        GET NEXT AVAILABLE ENTRY 
          NZ     X3,CPEX     IF EOF 
          SX6    X1 
          SB7    X1 
          SA6    CLTD        UPDATE FWA OF CURRENT PID ENTRY
          SA3    PIDD        DEFAULT VALUE FOR PID
          SA1    UBUF        GET FIRST PARAMETER
          BX6    X3 
          BX7    X7-X7
          SA7    CLTE        CLEAR NUMBER OF LID-S
          SA6    B7+         SET DEFAULT VALUE FOR PID
          SA7    CLET        CLEAR LID TABLE
          SA7    CPET        CLEAR *PID* EXISTENCE
          SA7    CPEU        CLEAR *MFTYPE* EXISTENCE 
          SA7    CPEV        CLEAR *NETDIS* EXISTENCE 
          SA7    CPEW        CLEAR *HOST* EXISTENCE 
 CPE4     MX0    42 
          SA1    A1+B1       GET KEYWORD
          SA2    CPEA        GET KEYWORD TABLE
          ZR     X1,CPE30    IF NO MORE KEYWORDS
 CPE5     ZR     X2,CPE31    IF NO MATCH FOUND
          BX3    X1-X2
          BX4    X0*X3
          ZR     X4,CPE6     IF KEYWORDS MATCH
          SA2    A2+1 
          EQ     CPE5        TRY NEXT ENTRY 
  
 CPE6     SB3    X2 
          SX3    1R=
          BX2    X1-X3
          BX4    -X0*X2 
          NZ     X4,CPE37    IF SEPARATOR NOT *=* 
          SA1    A1+B1
          JP     B3          PROCESS RESPECTIVE KEYWORD 
  
*         PROCESS *PID* KEYWORD.
  
 CPE7     MX0    18 
          SA2    CPET        CHECK IF *PID* ALREADY SPECIFIED 
          BX6    X0*X1
          ZR     X6,CPE32    IF NO *PID* SPECIFIED
          NZ     X2,CPE39    IF *PID* ALREADY SPECIFIED 
          LX0    -18
          BX7    X0*X1
          NZ     X7,CPE32    IF PID HAS MORE THAN THREE CHARACTERS
          LX0    6
          BX7    X0*X1
          ZR     X7,CPE32    IF PID HAS LESS THAN THREE CHARACTERS
          BX7    X6 
          MX0    6
          SB2    3
 CPE8     BX2    X7*X0
          LX2    6
          ZR     X2,CPE32    IF THE CHARACTER IS A COLON
          NG     X2,CPE32    IF THE CHARACTER IS NOT ALPHANUMERIC 
          SX2    X2-1R9-1 
          PL     X2,CPE32    IF THE CHARACTER IS NOT ALPHANUMERIC 
          LX7    6
          SB2    B2-B1
          NZ     B2,CPE8     IF THERE ARE MORE CHARACTERS TO CHECK
          SA2    CLTF        UPDATE NUMBER OF PID-S 
          ZR     X2,CPE10    IF NUMBER OF PID-S EQUALS ZERO 
          SB3    X2 
 CPE9     SA3    B3+CPEY-1   CHECK FOR DUPLICATE PID-S
          BX7    X3-X6
          SB3    B3-B1
          ZR     X7,CPE39    IF DUPLICATE PID 
          GT     B3,CPE9     IF MORE PID-S TO CHECK 
 CPE10    SA6    CPEY+X2     ADD NEW PID
          SX7    X2+1 
          SA7    A2+
          SA7    CPET        SET FLAG TO INDICATE *PID* EXIST 
          SA2    HOSTPID     CHECK FOR CURRENT HOST MAINFRAME 
          BX7    X2-X6
          SA2    B7          CURRENT FWA OF PID ENTRY 
          SA7    HOSTFLG     SET HOST PID FLAG (0 IF HOST MAINFRAME)
          NZ     X7,CPE11    IF NOT HOST
          SX7    B1 
          SA7    HOST        SET HOST PID SPECIFIED 
          SA7    CPEW        SET HOST SPECIFIED 
          LX7    LHSTS-0     SET HOST FLAG IN PID ENTRY 
          BX6    X6+X7
          LX7    LVADS-0-LHSTS+0  ADD VALIDATION FLAG 
          BX6    X6+X7
          BX7    X7-X7       INDICATE HOST PID
          SA3    CPEV 
          NZ     X3,CPE35    IF HOST AND *NETDIS* SPECIFIED 
 CPE11    BX6    X6+X2
          SA6    A2          ADD PID
          SA2    CPEC        CHECK IF *NETDIS* SPECIFIED
          IX2    X2+X7
          SA7    A2          HOST FLAG (0 IF HOST)
          EQ     CPE4        PROCESS NEXT KEYWORD 
  
*         PROCESS *ENABLED* KEYWORD.
  
 CPE12    SX3    3RYES
          LX3    -18
          BX6    X1-X3
          BX7    X0*X6
          ZR     X7,CPE4     IF *YES* PROCESS NEXT KEYWORD
          SX3    2RNO 
          LX3    -12
          BX6    X1-X3
          BX7    X0*X6
          NZ     X7,CPE33    IF INCORRECT KEYWORD 
          SX6    B1 
          LX6    LENAS-0
          SA2    B7          GET CURRENT FIRST WORD OF PID
          BX6    -X6*X2      CLEAR ENABLED FLAG 
          SA6    A2 
          EQ     CPE4        PROCESS NEXT KEYWORD 
  
*         PROCESS *MFTYPE*. 
  
 CPE13    BX6    X0*X1       GET MFTYPE 
          BX3    -X0*X1      CHECK EXCESS CHARACTERS
          ZR     X6,CPE40    IF NO MFTYPE SPECIFIED 
          AX3    6           ELIMINATE LAST CHARACTER 
          NZ     X3,CPE40    IF MORE THAN 7 CHARACTERS
          SX3    1R/
          BX2    X1-X3
          BX4    -X0*X2 
          BX1    X6 
          RJ     SFN         SPACE FILL MAINFRAME DESCRIPTION 
          BX6    X6*X0       CLEAR N-PID AREA 
          SA6    B7+LMFDW-1  PUT MFTYPE IN LDT
          SX6    B1 
          SA6    CPEU        SET FLAG TO INDICATE *MFTYPE* EXISTS 
          NZ     X4,CPE4     IF SEPARATOR NOT */* 
  
*         PROCESS POSSIBLE *NOS/BE* TYPE MAINFRAME. 
  
          SX3    1R/
          BX6    X1          RESET X6 TO *MFTYPE* ZERO FILLED 
          SB3    60-6 
          SB4    6
          MX7    6
 CPE14    BX4    X7*X6
          ZR     X4,CPE15    IF END OF CHARACTERS 
          LX6    X6,B4
          SB3    B3-B4
          EQ     CPE14       CHECK NEXT CHARACTER 
  
 CPE15    LX6    X6,B4
          BX6    X6+X3       ADD */*
          SA1    A1+B1       GET NEXT WORD
          SB4    B3-B1
          MX0    1
          AX0    X0,B4
          BX0    X0*X1
          BX6    X6+X1       ADD REMAINING CHARACTERS 
          LX6    X6,B3       SHIFT BACK 
          SA6    B7+B1
          EQ     CPE4        PROCESS NEXT KEYWORD 
  
*         PROCESS *AT* KEYWORD. 
  
 CPE16    SA2    CPEB        GET *AT* KEYWORD TABLE 
 CPE17    BX3    X1-X2
          BX4    X0*X3
          ZR     X4,CPE18    IF *AT* KEYWORD MATCH
          SA2    A2+B1
          NZ     X2,CPE17    IF NOT END OF TABLE
          EQ     CPE34       UNRECOGNIZED KEYWORD 
  
 CPE18    SX5    1R/
          SX6    X1 
          SA3    B7 
          SX7    B1 
          SB3    X2 
          JP     B3          PROCESS RESPECTIVE *AT* KEYWORD
  
*         PROCESS *NVALID* KEYWORD. 
  
 CPE19    LX7    LVADS-0
          BX7    -X7*X3      CLEAR VALIDATE FLAG
          SA7    B7+
          EQ     CPE22       CONTINUE WITH NEXT KEYWORD 
  
*         PROCESS *VALID* KEYWORD.
  
 CPE20    LX7    LVADS-0
          BX7    X3+X7       ADD VALIDATE FLAG
          SA7    B7+
          EQ     CPE22       CONTINUE WITH NEXT KEYWORD 
  
*         PROCESS *NLIST* KEYWORD.
  
 CPE21    LX7    LNSTS-0
          BX7    X3+X7       ADD NO-LIST FLAG 
          SA7    B7+
  
*         *AT* POST-PROCESSOR.
  
 CPE22    BX7    X5-X6
          NZ     X7,CPE4     IF NOT */* 
          MX0    42 
          SA1    A1+1 
          EQ     CPE16       PROCESS NEXT *AT* KEYWORD
  
*         PROCESS *NETDIS* KEYWORD. 
  
 CPE23    SA3    CPEC        GET HOST TYPE
          SA2    CPEW 
          NZ     X2,CPE35    IF HOST AND *NETDIS* 
          BX7    X7-X7       INDICATE *NETDIS* SPECIFIED
          SA7    A3 
          MX0    -12
          SA3    B7 
          BX7    X0*X3       CLEAR *NETDIS* AREA
          SA7    B7 
          SA2    CPED        *NETDIS* TABLE 
 CPE24    BX3    X1-X2
          SX7    B1 
          SA7    CPEV        SET *NETDIS* SPECIFIED 
          MX0    42 
          BX4    X0*X3
          ZR     X4,CPE25    IF KEYWORD MATCH 
          SA2    A2+1 
          NZ     X2,CPE24    IF NOT END OF TABLE
          EQ     CPE36       UNRECOGNIZED KEYWORD 
  
 CPE25    SX5    1R/
          SX6    X1 
          SA3    B7 
          SX7    /NTS/DAB+/NTS/NAV
          SB3    X2+
          JP     B3          PROCESS RESPECTIVE KEYWORD 
  
*         PROCESS *SSF* KEYWORD.
  
 CPE26    LX7    LSFSS-LNPSS
          BX7    X7+X3
          SA7    B7+         SET SSF ACCESS TO 0
          EQ     CPE29       PROCESS NEXT KEYWORD 
  
*         PROCESS *RHF* KEYWORD.
  
 CPE27    LX7    LRHSS-LNPSS
          BX7    X7+X3
          SA7    B7+         SET RHF ACCESS TO 0
          EQ     CPE29       PROCESS NEXT KEYWORD 
  
*         PROCESS *NAM* KEYWORD.
  
 CPE28    LX7    LNPSS-LNPSS
          BX7    X7+X3
          SA7    B7+         SET NAM ACCESS TO 0
*         EQ     CPE29       PROCESS NEXT KEYWORD 
  
*         *NETDIS* KEYWORD POST-PROCESSOR.
  
 CPE29    BX7    X5-X6
          NZ     X7,CPE4     IF NOT */* 
          SA1    A1+B1
          SA2    CPED        FWA OF *NETDIS* KEYWORD TABLE
          EQ     CPE24       CONTINUE WITH NEXT KEYWORD 
  
*         COMPLETE *NPID* STATEMENT.
  
 CPE30    SA1    CPET        CHECK IF *PID* KEYWORD EXISTS
          ZR     X1,CPE38    IF NO *PID* SPECIFIED
          SA1    CPEU        CHECK IF *MFTYPE* KEYWORD EXISTS 
          ZR     X1,CPE41    IF NO *MFTYPE* SPECIFIED 
          SX7    B7+LRI3W-LNTHW  SET NEXT AVAILABLE WORD IN LID TABLE 
          SA7    CLTB 
          EQ     CPEX        RETURN 
  
*         INCORRECT *NPID* STATEMENT. 
  
 CPE31    MESSAGE  CPEE      *VALID KEYWORDS FOR NPID ARE*
          MESSAGE  CPEF      *PID,MFTYPE,ENABLED, AT AND NETDIS.* 
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         INCORRECT *PID* PARAMETER.
  
 CPE32    MESSAGE  CPEH      *SPECIFY EXACTLY 3 ALPHANUMERIC CHARS.*
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         INCORRECT *ENABLED* PARAMETER.
  
 CPE33    MESSAGE  CPEZ      *YES OR NO ALLOWED ON ENABLED KEYWORD* 
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         INCORRECT *AT* KEYWORD. 
  
 CPE34    MESSAGE  CPEJ      *OPTIONS FOR *AT* ARE VALID/NVALID/* 
          MESSAGE  CPEK      *NLIST.* 
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         INCORRECT HOST AND NETDIS.
  
 CPE35    MESSAGE  CPEL      *NETDIS IS INCORRECT FOR HOST PID* 
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         INCORRECT *NETDIS* KEYWORD. 
  
 CPE36    MESSAGE  CPEM      *VALID KEYWORD FOR NETDIS ARE* 
          MESSAGE  CPEN      *SSF, RHF AND NAM* 
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
 CPE37    MESSAGE  CPEO      *CLDT - = MUST FOLLOW KEYWORD.*
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         NO *PID* KEYWORD ON *NPID* STATEMENT. 
  
 CPE38    MESSAGE  CPEP      *NO PID SPECIFIED.*
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         DUPLICATE PID FOUND.
  
 CPE39    MESSAGE  CPEQ      *DUPLICATE PID ON NPID STATEMENT.* 
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         INCORRECT MFTYPE. 
  
 CPE40    MESSAGE  CPER      *MAXIMUM 7 CHARACTERS ALLOWED ON MFTYPE.*
          EQ     CPE42       ISSUE ERROR MESSAGES 
  
*         NO *MFTYPE* KEYWORD ON *NPID* STATEMENT.
  
 CPE41    MESSAGE  CPES      *NO MFTYPE SPECIFIED.* 
  
 CPE42    MESSAGE  CPEG      *ERROR IN THE FOLLOWING STATEMENT
          MESSAGE  WBUF      *NPID STATEMENT* 
          SX6      B1 
          SA6    FERF        SET FATAL ERROR FLAG 
          EQ     CPEX        RETURN 
  
  
*         *PID* KEYWORD TABLE.
  
 CPEA     VFD    42/3LPID,18/CPE7  *PID*
          VFD    42/7LENABLED,18/CPE12  *ENABLED* 
          VFD    42/6LMFTYPE,18/CPE13  *MFTYPE* 
          VFD    42/2LAT,18/CPE16  *AT* 
          VFD    42/6LNETDIS,18/CPE23  *NETDIS* 
          VFD    60/0 
  
*         *AT* KEYWORD TABLE. 
  
 CPEB     VFD    42/6LNVALID,18/CPE19  *NVALID* 
          VFD    42/5LVALID,18/CPE20  *VALID* 
          VFD    42/5LNLIST,18/CPE21  *NLIST* 
          VFD    60/0 
  
 CPEC     CON    1           NOT *HOST* NOR *NETDIS* SPECIFIED
  
*         SUBSYSTEM KEYWORD TABLE.
  
 CPED     VFD    42/3LSSF,18/CPE26  *SSF* 
          VFD    42/3LRHF,18/CPE27  *RHF* 
          VFD    42/3LNAM,18/CPE28  *NAM* 
          BSSZ   1           END OF *NETDIS* TABLE
 CPEE     DATA   C* CLDT - VALID KEYWORDS FOR NPID ARE *
 CPEF     DATA   C*        PID,MFTYPE,ENABLED,AT AND NETDIS.* 
 CPEG     DATA   C* CLDT - ERROR IN THE FOLLOWING STATEMENT.* 
 CPEH     DATA   C* CLDT - SPECIFY EXACTLY 3 ALPHANUMERIC CHARACTERS IN 
,PID.*
 CPEJ     DATA   C+ CLDT - VALID OPTIONS FOR *AT* ARE VALID/NVALID/+
 CPEK     DATA   C*        NLIST.*
 CPEL     DATA   C* CLDT - NETDIS IS INCORRECT FOR HOST PID.* 
 CPEM     DATA   C* CLDT - VALID OPTIONS FOR NETDIS ARE * 
 CPEN     DATA   C*        SSF, RHF AND NAM.* 
 CPEO     DATA   C* CLDT - = MUST FOLLOW KEYWORD.*
 CPEP     DATA   C* CLDT - NO PID SPECIFIED ON NPID STATEMENT.* 
 CPEQ     DATA   C* CLDT - DUPLICATE PID ON NPID STATEMENT.*
 CPER     DATA   C* CLDT - MAXIMUM OF 7 CHARACTERS ALLOWED ON MFTYPE.*
 CPES     DATA   C* CLDT - NO MFTYPE SPECIFIED ON NPID STATEMENT.*
 CPET     BSSZ   1           *PID* EXIST FLAG IF .NE. 0 
 CPEU     BSSZ   1           *MFTYPE EXIST FLAG IF .NE. 0 
 CPEV     BSSZ   1           *NETDIS* SPECIFIED FLAG (1 IF SPECIFIED) 
 CPEW     BSSZ   1           HOST FLAG (1 IF HOST PID)
 CPEY     BSSZ   MXPID       PROCESSED PID-S
 CPEZ     DATA   C* CLDT - ONLY YES OR NO ALLOWED ON ENABLED KEYWORD.*
 PSE      SPACE  4,10 
**        PSE - PAUSE FOR OPERATOR GO/DROP. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
*                B - NONE.
* 
*         MACROS RECALL.
  
  
 PSE      SUBR               ENTRY/EXIT 
          SA1    B0          SET PAUSE FLAG IN RA+0 
          SX6    10000B 
          BX6    X1+X6
          SA6    A1 
 PSE1     RECALL
          SA1    B0 
          LX1    59-12
          NG     X1,PSE1     IF PAUSE FLAG NOT CLEARED
          EQ     PSEX        RETURN 
 PTL      SPACE  4,20 
**        PTL - PROCESS TEXT LINE.
* 
*         *PTL* PERFORMS THE FOLLOWING FUNCTIONS -
*         1.  READ IN ONE TEXT LINE.
*         2.  SKIP TEXT LINE IF THE FIRST CHARACTER IS *. 
*         3.  ADD TERMINATOR IF THERE IS NONE.
*         4.  UNPACK THE TEXT LINE. 
* 
*         ENTRY  LID CONFIGURATION FILE LOCAL TO THE JOB. 
* 
*         EXIT   (X1) .NE. 0 IF EOR/EOF ENCOUNTERED.
*                FERF .EQ. 1 IF AN UNRECOGNIZED DIRECTIVE WAS 
*                            ENCOUNTERED. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 3, 4, 7.
* 
*         CALLS  UPC. 
* 
*         MACROS READC. 
  
  
 PTL      SUBR               ENTRY/EXIT 
 PTL1     READC  I,WBUF,WBUFL  READ A LINE
          BX6    X6-X6
          NZ     X1,PTLX     IF EOR/EOF 
          SX6    1R*
          SA1    WBUF 
          MX0    6           SKIP COMMENTS
          BX3    X0*X1
          LX6    -6 
          BX0    X3-X6
          ZR     X0,PTL1     IF FIRST CHARACTER -*- 
          SA4    PTLA 
          MX0    42 
          BX3    X0*X1       GET FIRST 7 CHARACTERS OF DIRECTIVE
          BX3    X3-X4       SUBTRACT *COMMENT* FROM FIRST 7 CHARACTERS 
          ZR     X3,PTL1     IF FIRST 7 CHARACTERS ARE *COMMENT*
          MX0    24 
          BX3    X0*X1
          SA4    PTLB 
          BX4    X3-X4       SUBTRACT *NPID* FROM CHARACTERS
          ZR     X4,PTL3     IF CHARACTERS ARE *NPID      * 
          SA4    PTLC 
          BX4    X3-X4       SUBTRACT *NLID* FROM CHARACTERS
          NZ     X4,PTL9     IF CHARACTERS ARE NOT *NLID      * 
 PTL3     SX1    1R.
          SX2    1R)
          SB4    60 
          SB3    6
          LX2    -6 
          MX0    6
          LX1    -6 
          SA4    B6-B1
          NZ     X4,PTL4     IF EOL CONTAINED IN LAST WORD
          SA4    A4-1        CHECK PREVIOUS WORD FOR COLONS 
 PTL4     BX3    X0*X4
          BX6    X1-X3
          ZR     X3,PTL5     IF END OF LINE 
          ZR     X6,PTL6     IF TERMINATOR *.*
          BX6    X2-X3
          ZR     X6,PTL6     IF TERMINATOR *)*
          LX4    X4,B3       LEFT SHIFT ONE CHARACTER 
          SB4    B4-B3
          NZ     B4,PTL4     IF NOT AT WORD BOUNDARY
          SA4    A4+B1
          SB4    60 
          EQ     PTL4        TRY NEXT WORD
  
 PTL5     BX7    X1+X4       POSITION BACK
          LX7    X7,B4
          SA7    A4+
 PTL6     SB3    10          INITIALIZE CHARACTER COUNT 
          MX0    6
          SA4    WBUF 
 PTL7     BX3    X0*X4       ONE CHARACTER FROM WBUF
          BX5    X3-X2
          ZR     X5,PTL8     IF TERMINATOR *)* AND NO COLON 
          BX5    X3-X1
          ZR     X5,PTL8     IF TERMINATOR *.* AND NO COLON 
          ZR     X3,PTL10    IF A COLON OR *00* IN WBUF 
          LX4    6           SHIFT TO NEXT CHARACTER
          SB3    B3-B1       DECREMENT CHARACTER COUNT
          NZ     B3,PTL7     IF MORE CHARACTERS TO CHECK IN WORD
          SB3    10          INITIALIZE CHARACTER COUNT 
          SA4    A4+B1       INCREMENT TO NEXT WORD 
          SB2    A4 
          LE     B2,B6,PTL7  IF THERE IS ANOTHER WORD TO CHECK
 PTL8     SB7    UBUF        FWA TO UNPACK INTO 
          SA5    WBUF        FWA TO UNPACK
          RJ     UPC
          SA2    UBUF+2 
          SA1    HOSTPID
          BX2    X2-X1
          NZ     X2,PTL8.1   IF NOT HOST PID
          BX7    X1 
          SA7    HOST        SET HOST SPECIFIED 
 PTL8.1   SA1    UBUF 
          SA4    PTLB 
          BX4    X1-X4
          ZR     X4,PTL8.2   IF CHARACTERS ARE *NPID      * 
          SA4    PTLC 
          BX4    X1-X4
          NZ     X4,PTL12    IF NOT *NLID* DIRECTIVE
 PTL8.2   BX6    X6-X6
          BX1    X1-X1
          SA6    A6+1        MAKE SURE LAST WORD IS ZERO
          EQ     PTLX        RETURN 
  
*         UNRECOGNIZED DIRECTIVE. 
  
 PTL9     BX1    X1-X1       CLEAR EOF/EOR
          SX6    B1 
          SA6    FERF        SET FATAL ERROR FLAG 
          SA6    CFSK        SET *CFS* FATAL ERROR FLAG 
          EQ     PTLX        RETURN 
  
*         COLON FOUND IN DIRECTIVE. 
  
 PTL10    SA3    PTLF 
          NZ     X3,PTL11    IF *PTL* CALLED BY *CLT* 
          MESSAGE  PTLD      * INCORRECT CHARACTER IN DIRECTIVE.
 PTL10.1  MESSAGE  CPEG      *ERROR IN THE FOLLOWING STATEMENT.*
          MESSAGE  WBUF 
          SX6    B1 
          SA6    FERF        SET FATAL ERROR FLAG 
          SA6    CFSL        SET ERROR FLAG 
          EQ     PTLX        RETURN 
  
*         *PTL* CALLED BY *CLT*.
  
 PTL11    SX6    B1 
          BX1    X1-X1
          EQ     PTLX        RETURN 
  
*         NO SEPARATOR AFTER NPID OR NLID.
  
 PTL12    SA3    PTLF 
          NZ     X3,PTL11    IF *PTL* CALLED BY *CLT* 
          MESSAGE  PTLE      * A SEPARATOR MUST FOLLOW NLID OR NPID.* 
          EQ     PTL10.1     ISSUE ERROR MESSAGE
  
*         *COMMENT* DIRECTIVE 
  
 PTLA     VFD    42/7LCOMMENT,18/0
 PTLB     VFD    24/4LNPID,36/0 
 PTLC     VFD    24/4LNLID,36/0 
 PTLD     DATA   C* CLDT - INCORRECT CHARACTER IN DIRECTIVE.* 
 PTLE     DATA   C* CLDT - A SEPARATOR MUST FOLLOW NLID OR NPID.* 
 PTLF     CON    0           1 IF *PTL* CALLED ONCE 
          SPACE  4
*         COMMON DECKS. 
  
  
*CALL     COMCCIO 
*CALL     COMCCPM 
*CALL     COMCPFM 
*CALL     COMCRDC 
*CALL     COMCRDW 
*CALL     COMCSFM 
*CALL     COMCSFN 
*CALL     COMCSYS 
*CALL     COMCUPC 
          TITLE  BUFFERS. 
*         BUFFERS.
  
 IBUF     BSS    IBUFL       LID CONFIGURATION FILE BUFFER
 UBUF     BSS    UBUFL       UNPACK BUFFER
 WBUF     BSS    WBUFL       WORKING BUFFER 
 LIDT     VFD    12/0,30/0,8/0,1/0
  
*         NOTE - THE FOLLOWING AREA WILL BE USED FOR THE LID TABLE. 
 PRS      TITLE  PRESET.
**        PRS - PRESET ROUTINE. 
* 
*         ENTRY  (JOPR) = JOB ORIGIN. 
* 
*         EXIT   VALIDATION COMPLETED.
*                TO *CLD1* IF LDT INTENTIONALLY NOT TO BE CREATED AT
*                  DEADSTART TIME (SEE CRITERIA BELOW). 
*                TO *CLD3* IF FATAL ERROR DETECTED. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - 1. 
* 
*         CALLS  ARG, SNM.
* 
*         MACROS ATTACH, EREXIT, GET, MACHID, MESSAGE, READ, REWIND,
*                STATUS, SYSTEM.
* 
*         NOTE   *PRS* WILL BE OVERLAID BY THE LDT. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1
          EREXIT CLD5        NORMAL EXIT FOR OPERATOR DROP
          SA1    JOPR        CHECK FOR SYSTEM ORIGIN
          MX0    -12
          LX1    36 
          BX1    -X0*X1 
          SX6    X1-SYOT     (X6) = 0 IF SYSTEM ORIGIN
          SA6    JORG 
  
*         GET *LDT* LENGTH. 
  
          SYSTEM RSB,R,LDPT 
          SA1    LDPT+1      LDT LENGTH 
          MX0    -12
          LX1    -24
          BX6    -X0*X1 
          SA6    LIDL        SAVE LDT LENGTH
  
*         GET SUBSYSTEM ID. 
  
          GETSSID  DSSQ 
          SA1    DSSQ        CP SUBSYSTEM ID
          MX0    -12
          BX6    -X0*X1 
          SX6    X6-DSSI     (X6) = 0 IF DEADSTART SEQUENCE 
          SA6    A1+         SAVE DEADSTART SEQUENCE FLAG 
  
*         CREATE HOST PID.  ESTABLISH THE DEFAULT NAME OF THE LID 
*         CONFIGURATION FILE. 
  
          MACHID MACH 
          SA1    MACH        GET MACHINE ID 
          MX0    -12
          BX1    -X0*X1 
          BX6    X1          WORKING COPY OF MACHINE ID 
          SA2    HOSTPID     CREATE HOST PID
          LX6    42 
          BX6    X2+X6       MERGE *M* WITH MACHINE ID
          SA6    A2          SAVE HOST PID
          SA3    I           PUT ID IN LID FILE NAME
          BX6    X1 
          LX6    18 
          BX6    X3+X6
          SA6    A3          SAVE NEW (DEFAULT) FILE NAME 
          SA6    RCRD        SAVE IMAGE OF FIRST RECORD ON FILE 
          SA4    I+1         SET ERROR PROCESSING BIT 
          SX6    B1 
          LX6    44 
          BX6    X4+X6
          SA6    A4 
          SX7    ERAD        SET ERROR RETURN ADDRESS IN FET
          SA7    I+10 
          SA5    PRSA+3      PUT ID IN ERROR MESSAGE
          LX0    30 
          BX5    X0*X5
          LX1    30 
          BX6    X1+X5
          SA6    A5+
  
*         PROCESS *CLDT* ARGUMENTS, IF ANY. 
  
          SA1    ACTR        GET ARGUMENT COUNT 
          SB4    X1+
          ZR     B4,PRS1     IF NO ARGUMENTS
          SA4    ARGR        GET FIRST ARGUMENT 
          SB5    TARG        FWA OF ARGUMENT TABLE
          RJ     ARG         PROCESS ARGUMENTS
          NZ     X1,PRS4     IF ARGUMENT ERROR
 PRS1     SA1    I
          NZ     X1,PRS2     IF FILE NAME PRESENT 
          SA1    RCRD        RESTORE FET NAME (*I=0* SPECIFIED) 
          BX6    X1 
          SA6    I
 PRS2     MX0    42 
          BX1    X0*X1       FILE NAME
          SB2    1RX         SET SEARCH CHARACTER 
          SB5    PRSD        FWA OF ERROR MESSAGE 
          RJ     SNM         SET FILE NAME IN ERROR MESSAGE 
  
*         CHECK IF FILE IS LOCAL.  IF NOT, *GET* OR *ATTACH* THE FILE 
*         UNDER THE JOB-S USER NAME.
  
          STATUS I
          SA1    I           GET STATUS 
          MX0    -11
          AX1    1
          BX2    -X0*X1 
          NZ     X2,PRS3     IF FILE LOCAL TO JOB 
          GET    I,,,,,,DF   GET FILE ON SYSTEM DEFAULT FAMILY
          SA4    I           CHECK IF FILE EXISTS 
          MX0    8
          LX4    59-17
          BX6    X0*X4
          ZR     X6,PRS3     IF FILE FOUND
          ATTACH  I,,,,,,,DF
          SA4    I           CHECK IF FILE EXISTS 
          MX0    8
          LX4    59-17
          BX6    X0*X4
          ZR     X6,PRS3     IF FILE FOUND
  
*         THE LID FILE WAS NOT FOUND AND IS NOT LOCAL TO THE JOB. 
*         DETERMINE IF *CLDT* WAS INTENDED TO CREATE AN LDT.  NO LDT
*         WILL BE CREATED AND NORMAL EXIT PROCESSING (ENDRUN) WILL
*         OCCUR IF ALL OF THE FOLLOWING CRITERIA ARE MET. 
*           1) JOB HAS *DEADSTART SEQUENCE* SUBSYSTEM ID, 
*           2) NO LIDCMID FILE IS FOUND UNDER UN=SYSTEMX. 
  
          SA1    DSSQ 
          NZ     X1,PRS6     IF NOT DEADSTART SEQUENCE
          EQ     CLD1        * CLDT - NO LID TABLE CREATED.*
  
 PRS3     SA2    LIDL 
          SB2    X2 
          LE     B2,B1,PRS5  IF NO SPACE RESERVED FOR LDT 
          REWIND I,R
          READ   I,R         INITIAL READ 
          SA1    X2+1        GET *FIRST*
          SA3    RCRD 
          SA1    X1          READ FIRST STATEMENT IN FILE 
          MX0    42 
          BX4    X1-X3
          BX6    X0*X4
          ZR     X6,PRSX     IF FIRST STATEMENT IS LIDCMID
          SA1    JORG 
          NZ     X1,PRSX     IF NON-SYSTEM ORIGIN USER
          MESSAGE  PRSA      * FIRST STATEMENT NOT LIDCMXX.*
          EQ     CLD3        * CLDT ABORT.* 
  
 PRS4     MESSAGE  PRSB      * CLDT - COMMAND ERROR.* 
          EQ     CLD3        * CLDT ABORT.* 
  
 PRS5     SA1    JORG 
          NZ     X1,PRSX     IF NON-SYSTEM ORIGIN USER
          MESSAGE  CLDD      * NO LID TABLE CREATED.* 
          MESSAGE  PRSC      * BUFFER TOO SMALL.* 
          EQ     CLD3        * CLDT ABORT.* 
  
 PRS6     MESSAGE  CLDD      * NO LID TABLE CREATED.* 
          MESSAGE  PRSD      * FILE XXXXXXX NOT FOUND.* 
          EQ     CLD3        * CLDT ABORT.* 
  
*         PRESET ERROR MESSAGES.
  
 PRSA     DATA   C* CLDT - FIRST STATEMENT NOT LIDCMXX.*
 PRSB     DATA   C* CLDT - COMMAND ERROR.*
 PRSC     DATA   C* CLDT - BUFFER TOO SMALL.* 
 PRSD     DATA   C* CLDT - FILE XXXXXXX NOT FOUND.* 
          SPACE  4,10 
*         PRESET STORAGE LOCATIONS. 
  
 ERAD     BSS    8           ERROR MESSAGE RETURN ADDRESS 
 LDPT     VFD    12/0,12/1,18/LIDP,18/LDPT+1
          CON    -1 
 MACH     CON    0           MACHINE ID 
 RCRD     CON    0           FIRST RECORD ON FILE 
          SPACE  4,10 
*         ARGUMENT TABLE. 
  
 TARG     BSS    0
 I        ARG    I,I
          ARG 
 CFS      SPACE  4,30 
**        CFS - CALCULATE FREE SPACE. 
* 
*         *CFS* WILL CALCULATE THE FREE SPACE FOR THE LID TABLE.  EACH
*         PID WILL HAVE AN EQUAL AMOUNT OF WORDS TO ALLOW NEW LID-S TO
*         BE ADDED.  THE SPACE FOR EACH PID IS CALCULATED BASED ON
*         THE FOLLOWING FORMULA.
* 
*         FS = (LIDL-1 - NP*3 - SUM(I[NLID * 0.5]))/NP
* 
*         WHERE 
*         LIDL = TOTAL LENGTH OF LID TABLE IN CM WORD *LIDP*. 
*         NP = TOTAL NUMBER OF PID-S. 
*         NLID = TOTAL NUMBER OF LID-S OF PID.
*         I[ ] = INTEGER OF THE ARGUMENT. 
*         SUM( ) = SUMMATION OF( ). 
* 
*         ENTRY = FILE LIDCM LOCAL. 
* 
*         EXIT  (FS) = FREE SPACE FOR EACH PID. 
*                TO *CLD3* IF FATAL ERROR ENCOUNTERED.
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 5.
* 
*         CALLS  CDD, PTL, SNM. 
* 
*         MACROS MESSAGE, READ, READC, REWIND.
* 
*         NOTE   *CFS* WILL BE OVERLAID BY THE LDT. 
  
  
 CFS      SUBR               ENTRY/EXIT 
          SA1    JORG 
          ZR     X1,CFS0     IF SYSTEM ORIGIN JOB 
          SX6    MXLDT+1     DEFAULT = MAXIMUM LDT SIZE FOR *VERIFY*
          SA6    LIDL 
 CFS0     REWIND I
          READ   X2          INITIATE READ
          READC  X2,WBUF,WBUFL  SKIP FIRST LINE 
 CFS1     RJ     PTL         PROCESS TEXT LINE
          SA2    CFSK 
          NZ     X2,CFS8     IF AN UNRECOGNIZED DIRECTIVE ENCOUNTERED 
          SA2    CFSL 
          ZR     X2,CFS2     IF NOT INCORRECT CHARACTER 
          BX6    X6-X6
          SA6    CFSL        CLEAR ERROR FLAG 
          EQ     CFS1        READ NEXT STATEMENT
  
 CFS2     NZ     X1,CFS4     IF EOR/EOF 
          SA1    UBUF 
          SA2    CLTH+1      CHECK IF *NPID*
          MX0    42 
          BX3    X1-X2
          BX3    X0*X3
          ZR     X3,CFS3     IF *NPID*
  
*         INCREMENT NUMBER OF LID-S BY 1, AND PROCESS NEW LID.
  
          SA1    CFSA 
          SA2    A1+B1
          ERRNZ  CFSB-CFSA-1 CFSA AND CFSB MUST BE CONTIGUOUS 
          SX6    X1+B1
          SX7    X2+B1
          SA6    A1 
          SA7    A2+
          EQ     CFS1        READ NEXT STATEMENT
  
*         PROCESS NEW PID.
  
 CFS3     SA1    CFSC        UPDATE NUMBER OF PID-S 
          SA2    A1-B1       GET NUMBER OF LID OF PREVIOUS LID
          ERRNZ  CFSC-CFSB-1 CFSC AND CFSB MUST BE CONTIGUOUS 
          SX6    X1+B1
          SA6    A1+
          SX3    X6-MXPID-1  CHECK MAXIMUM NUMBER OF PID-S
          PL     X3,CFS7     IF MAXIMUM NUMBER OF PID-S EXCEEDED
          SA3    CFSD 
          IX7    X2+X3
          SA7    A3+         UPDATE NUMBER OF WORDS NEEDED FOR LID
          BX6    X6-X6
          SA6    CFSB        CLEAR LID COUNT
          EQ     CFS1        READ NEXT STATEMENT
  
*         END OF FILE.
  
 CFS4     SA2    HOST 
          NZ     X2,CFS5     IF HOST SPECIFIED
          SA2    CFSC 
          SX2    X2+B1       ADD 1 FOR HOST PID 
          BX6    X2 
          SA6    CFSC 
          SA2    CFSA 
          SX2    X2+B1       ADD 1 FOR HOST LID 
          BX6    X2 
          SA6    CFSA 
 CFS5     BX6    X6-X6
          SA6    HOST        CLEAR HOST PID SPECIFIED 
          SA2    CFSB        GET NUMBER OF LID-S OF LAST PID
          SA3    CFSD 
          IX2    X2+X3
  
*         CALCULATE FREE SPACE. 
  
          SA1    CFSC        NUMBER OF PID-S
          BX3    X1          MULTIPLIED BY 3
          LX3    1
          IX4    X3+X1       NUMBER OF WORDS FOR PID
          SA3    LIDL        GET TOTAL LENGTH 
          SX3    X3-1        SET LENGTH FOR CALCULATING FREE SPACE
          IX6    X2+X4
          SA6    CFSE        MINIMUM WORDS FOR LDT
          IX7    X3-X6       TOTAL FREE SPACE 
          NG     X7,CFS6     IF NOT ENOUGH SPACE
          BX3    X7          SAVE TOTAL FREE SPACE
          BX2    X1          SAVE NUMBER OF PID-S 
          IX6    X7/X1       FREE SPACE PER PID 
          IX7    X2*X6       CALCULATE REMAINDER
          IX7    X3-X7
          SA6    FS 
          SA7    FSR         SAVE REMAINDER 
          SX6    B1 
          SA6    PTLF        *PTL* CALLED ONCE
          EQ     CFSX        RETURN 
  
 CFS6     MESSAGE  CFSF      *UNABLE TO GENERATE LID TABLE *
          SA1    LIDL 
          SX1    X1-1 
          RJ     CDD         CONVERT TO DISPLAY 
          MX0    1
          SB2    B2-B1
          AX0    X0,B2
          BX1    X0*X4
          SB2    1RX         REPLACE CHARACTER
          SB5    CFSG        FWA OF MESSAGE 
          RJ     SNM         SET NUMBER INTO CHARACTER
          MESSAGE  CFSG      *NUMBER OF WORDS AVAILABLE FOR LID - XXX.* 
          SA1    CFSE        NUMBER OF WORDS NEEDED 
          RJ     CDD         CONVERT TO DISPLAY 
          MX0    1           ZERO OUT BLANKS
          SB2    B2-B1
          AX0    X0,B2
          BX1    X0*X4
          SB2    1RX
          SB5    CFSH        FWA OF MESSAGE 
          RJ     SNM
          MESSAGE  CFSH      * NUMBER OF WORDS NEEDED FOR LID - XXX.* 
          EQ     CLD3        * CLDT ABORT.* 
  
*         MAXIMUM NUMBER OF PID-S EXCEEDED. 
  
 CFS7     SX1    MXPID
          RJ     CDD         CONVERT MAXIMUM NUMBER OF PID-S TO DISPLAY 
          MX0    1           ZERO OUT BLANKS
          SB2    B2-B1
          AX0    X0,B2
          BX1    X0*X4
          SB2    1R$
          SB5    CFSI        FWA OF MESSAGE 
          RJ     SNM
          MESSAGE  CFSI      * EXCEEDED MAXIMUM NUMBER OF PID-S - XXX.* 
          EQ     CLD3        * CLDT ABORT.* 
  
*         UNRECOGNIZED DIRECTIVE. 
  
 CFS8     BX6    X6-X6
          SA6    CFSK        CLEAR *CFS* FATAL ERROR FLAG 
          ZR     X1,CFS9     IF NOT EOR/EOF 
          SX6    B1+
          SA6    CFSK        SET *CFS* FATAL ERROR FLAG TO SHOW EOR/EOF 
 CFS9     MESSAGE  CFSJ      * CLDT - UNRECOGNIZABLE DIRECTIVE.*
          MESSAGE  CPEG      *ERROR IN THE FOLLOWING STATEMENT.*
          MESSAGE  WBUF 
          SA2    CFSK 
          NZ     X2,CFS4     IF EOR/EOF 
          BX6    X6-X6
          SA6    CFSK        CLEAR *CFS* FATAL ERROR FLAG 
          EQ     CFS1        READ NEXT STATEMENT
  
  
 CFSA     BSSZ   1           COUNTER FOR TOTAL NUMBER OF LID-S
 CFSB     BSSZ   1           COUNTER FOR LID-S OF PID 
 CFSC     BSSZ   1           COUNTER FOR TOTAL NUMBER OF PID-S
 CFSD     BSSZ   1           NUMBER OF WORDS FOR LID-S
 CFSE     BSSZ   1           NUMBER OF WORDS NEEDED FOR LIDT
 CFSF     DATA   C* CLDT - UNABLE TO GENERATE LID TABLE.* 
 CFSG     DATA   C*        NUMBER OF WORDS AVAILABLE FOR LID - XXX.*
 CFSH     DATA   C*        NUMBER OF WORDS NEEDED FOR LID - XXX.* 
 CFSI     DATA   C* CLDT - EXCEEDED MAXIMUM NUMBER OF PID-S - $$$.* 
 CFSJ     DATA   C* CLDT - UNRECOGNIZABLE DIRECTIVE.* 
 CFSK     CON    0           FATAL ERROR FLAG UNRECOGNIZED DIRECTIVE
 CFSL     CON    0           FATAL ERROR FLAG INCORRECT CHARACTER 
          SPACE  4
*         PRESET COMMON DECKS.
  
*CALL     COMCARG 
*CALL     COMCCDD 
*CALL     COMCLFM 
*CALL     COMCSNM 
          SPACE  4,10 
*         RESERVE SUFFICIENT SPACE TO HOLD THE MAXIMUM SIZE OF THE LDT. 
  
          ERRNZ  PRS-LIDT-1  WORDS MUST BE CONTIGUOUS 
 LENGTH   EQU    *-PRS       LENGTH OF OVERLAYABLE ROUTINES 
 MAXLTH   EQU    MXLDT-LENGTH  MAX LDT SIZE - OVERLAYABLE LENGTH
          BSSZ   MAXLTH      ADDITIONAL CM WORDS REQUIRED TO HOLD LDT 
 RFL=     EQU    *
          END    CLDT 
