*DECK NDLIMS
      PROC NDLIMS;
      BEGIN 
*IF,DEF,IMS 
# 
**    NDLP - A BRIEF OVERVIEW 
* 
*     D.K. ENDO    82/02/04 
* 
*     THE PURPOSE OF THIS SECTION IS TO GIVE A BRIEF AND CONCISE
*     OVERVIEW OF THE NETWORK DEFINITION LANGUAGE PROCESSOR(NDLP).
*     IT HAS BEEN ASSUMED THAT THE READER OF THIS OVERVIEW IS ALREADY 
*     FAMILIAR WITH THE NETWORK DEFINITION LANGUAGE(NDL) SYNTAX, THE
*     OVERALL STRUCTURES OF NETWORK AND LOCAL CONFIGURATION FILES 
*     (NCF AND LCF), AND HOW THE CONFIGURATION FILES ARE USED BY THE
*     NETWORK.
* 
*     THIS OVERVIEW HAS TWO MAJOR SECTIONS. THE FIRST SECTION DESCRIBES 
*     NDLP IN TERMS OF DATA FLOW.  IT IDENTIFIES THE MAJOR PROCESSES OF 
*     NDLP AND THE FILES AND TABLES USED TO TRANSFER DATA BETWEEN 
*     THE PROCESSES.  THE SECOND SECTION IS MORE OF A FUNCTIONAL
*     EXPLANATION.  IT DESCRIBES THE MAJOR MODULES OF NDLP AND THE
*     BASIC STRUCTURE AND LOGIC OF EACH ONE.
* 
* 
*     SECTION I: DATA FLOW
* 
*     NDLP IS BASICALLY A TWO PASS COMPILER.  DURING THE FIRST PASS,
*     OR READING, OF THE INPUT SOURCE NDLP DOES SYNTAX CRACKING AND 
*     CHECKING.  IN ADDITION IT REFORMATS THE INPUT SOURCE INTO A 
*     MORE STRUCTURED FORM.  USING THE MORE STRUCTURED FORM OF THE
*     SOURCE NDLP DOES A SECOND PASS, OR READING, OF THE INPUT. 
*     DURING THE SECOND PASS IT DOES COMPATIBILITY CHECKING BETWEEN 
*     PARAMETERS ON THE SAME STATEMENT AND OTHER STATEMENTS AND CREATES 
*     A CONFIGURATION FILE BASED ON THE SOURCE.  A THIRD PROCESS NDLP 
*     DOES IS TO CREATE VARIOUS LISTINGS SUCH AS A SOURCE LISTING OR
*     A FILE CONTENTS SUMMARY LISTING.  SUMMING IT UP IN ONE SENTENCE,
*     NDLP IS PARTITIONED INTO THREE MAJOR PROCESSES: 1)PASS 1, 2)PASS 2
*     AND 3)LISTING CREATION. 
* 
*     THE FOLLOWING LISTS THE FILES AND TABLES WHICH ARE USED TO PASS 
*     INFORMATION BETWEEN EACH PROCESS: 
* 
*     1)BETWEEN PASS 1 AND PASS 2 --
*        STATEMENT TABLE - EACH ENTRY IN THIS TABLE CORRESPONDS TO A
*                          STATEMENT,IN THE INPUT SOURCE,IN A STRUCTURED
*                          FORM.  AN EXCEPT IS THE TERMDEV STATEMENT IN 
*                          WHICH 2 ENTRIES ARE MADE:TERMINAL AND DEVICE.
*                          THIS TABLE IS CREATED BY PASS 1 AND IS THE 
*                          MAJOR INTERFACE BETWEEN PASS 1 AND PASS 2. 
*                          PASS 1 WRITES THIS TABLE TO A LOCAL FILE:  
*                          ZZZZZU3. 
* 
*        THE REMAINDER OF THE TABLES PASSED BETWEEN PASS 1 TO PASS 2
*        ARE ONLY CREATED WHEN PARSING A SOURCE FOR AN NCF. 
* 
*        CONSOLE MAP -     EACH BIT IN THIS MAP CORRESPONDS TO EACH 
*                          TERMINAL STATEMENT.  A BIT IS SET ONLY IF
*                          A CONSOLE WAS DEFINED FOR THE TERMINAL.
*        COUPLER TABLE -   THERE IS A ENTRY FOR EACH COUPLER DEFINED IN 
*                          THE NETWORK.  EACH ENTRY CONTAINS A COUPLER
*                          NAME, COUPLER/HOST NODE I.D., AND THE NODE 
*                          I.D. OF THE NPU THAT SUPPORTS THE COUPLER. 
*                          IT IS USED TO CREATE ENTRIES IN THE LOGLINK
*                          XREF TABLE.
*        LABEL TABLE -     CONTAINS ALL THE ELEMENT NAMES DEFINED BY
*                          THE SOURCE AND GENERATED BY NDLP.  USED
*                          BY PASS 2 TO CREATE DEVICE AND LINE XREF 
*                          TABLE ENTRIES. 
*        LOGLINK TABLE -   HAS AN ENTRY FOR EACH LOGICAL LINK DEFINED 
*                          BY THE SOURCE.  EACH ENTRY CONTAINS THE
*                          LOGLINK NAME AND THE NODE I.D.-S OF THE
*                          NODES WHICH THE LINK CONNECTS.  USED TO
*                          DEFAULT OR CHECK SUPERVISORY LINKS.
*        NPU TABLE -       CONTAINS AN ENTRY FOR EACH NPU DEFINED.
*                          EACH ENTRY CONTAINS AN NPU NAME, FLAG IF 
*                          AT LEAST ONE SUPLINK IS DEFINED, NPU NODE
*                          I.D., AND A BIT MAP USED TO CHECK UNIQUENESS 
*                          OF PORT NUMBERS.  USED TO CHECK AND CREATE 
*                          ENTRIES IN THE PHYSICAL LINK AND LOGICAL LINK
*                          TABLES.
*        TRUNK NODE ID TBL-HAS AN ENTRY FOR EACH TRUNK.  EACH ENTRY HAS 
*                          THE NODE I.D.-S OF THE NPU-S THAT THE TRUNK
*                          CONNECTS.  USED TO VALIDATE LOGLINK-S
*                          SPANNING ONLY ONE TRUNK. 
* 
*     2)BETWEEN PASS 1 AND LIST --
*        DEFINE TABLE -    CONTAINS AN ENTRY FOR EACH DEFINE NAME AND 
*                          CORRESPONDING REPLACEMENT STRING.  USED
*                          BY PASS 1 TO DO DEFINE STRING PROCESSING.
*                          USED BY LIST TO CREATE THE DEFINE COMMAND
*                          LISTING. 
*        EXPANDED SECONDARY 
*        INPUT FILE-       CONTAINS ONLY SOURCE LINE WITH DEFINE NAMES
*                          REPLACED BY ITS CORRESPONDING DEFINE STRING. 
*                          USED BY LIST TO CREATE THE EXPANDED SOURCE 
*                          LISTING.  WRITTEN BY PASS 1 TO FILE ZZZZU4A. 
*        PASS 1 ERROR FILE-CONTAINS AN ENTRY FOR EACH SYNTAX ERROR
*                          DETECTED BY PASS 1.  EACH ENTRY HAS AN ERROR 
*                          CODE, LINE NUMBER, AND A CLARIFIER WORD. 
*                          USED BY LIST TO CREATE AN ERROR SUMMARY
*                          LISTING.  WRITTEN BY PASS 1 TO FILE ZZZZZU1. 
*        SECONDARY INPUT
*        FILE -            CONTAINS COPY OF ORIGINAL SOURCE PARSED BY 
*                          PASS 1.  USED BY PASS 2 TO CREATE THE SOURCE 
*                          LISTING AND THE EXPANDED SOURCE LISTING
*                          WRITTEN BY PASS 1 TO FILE ZZZZZU4. 
*     3)BETWEEN PASS 2 AND LIST --
*        PASS 2 ERROR FILE-CONTAINS AN ENTRY FOR EACH ERROR DETECTED BY 
*                          PASS 2.  FORMAT IS SAME AS PASS 1 ERROR FILE.
*                          USED BY LIST TO CREATE AN ERROR SUMMARY
*                          LISTING.  WRITTEN BY PASS 2 TO FILE ZZZZZU2. 
*        NCF/LCF -         USED BY LIST TO CREATE A FILE CONTENTS 
*                          SUMMARY LISTING.  FILE WRITTEN TO BY PASS 2
*                          DEPENDS ON THE NFILE/LFILE STATEMENT.
* 
*     THERE ARE TABLES USED WITHIN EACH MAJOR PROCESS THAT ARE NOT
*     PASSED TO OTHERS.  THEY ARE:  
* 
*     1) WITHIN PASS 1 -- 
*        KEYWORD TABLE -   CONTAINS AN ENTRY FOR EACH STATEMENT NAME, 
*                          KEYWORD, AND DELIMITER VALID IN NDL.  IF THE 
*                          ENTRY IS A STATEMENT NAME IT CONTAINS THE
*                          NAME, THE STATEMENT NAME FLAG SET, LABEL 
*                          REQUIRED FLAG, STATEMENT I.D., AND A 
*                          STATEMENT ALLOWED BIT MAP.  IF THE ENTRY 
*                          IS A KEYWORD, IT CONTAINS THE NAME, KEYWORD
*                          NAME FLAG SET, VALUE REQUIRED FLAG, KEYWORD
*                          I.D., AND KEYWORD ALLOW MAP.  IF THE ENTRY 
*                          IS A DELIMITER, IT CONTAINS THE DELIMITER, 
*                          THE DELIMITER FLAG SET, AND A DELIMITER I.D. 
*                          THIS TABLE IS SORTED IN ALPHABETICAL ORDER 
*                          WITH THE DELIMITERS AT THE END FOR THE TABLE.
*        LEXICAL TABLE -   CONTAINS AN ENTRY FOR EACH LETTER IN THE 
*                          ALPHABET AND ONE ENTRY FOR DELIMITERS.  EACH 
*                          ENTRY POINTS TO ITS CORRESPONDING CHARACTER
*                          GROUP IN THE KEYWORD TABLE AND HOW MANY
*                          ENTRIES THERE ARE IN THE GROUP.  FOR EXAMPLE:  
*                          THE 13TH ENTRY IN THE LEXICAL TABLE WOULD
*                          POINT TO THE FIRST ENTRY, IN THE KEYWORD 
*                          TABLE, BEGINNING WITH THE LETTER -M- AND,
*                          ALSO, GIVE THE TOTAL NUMBER OF STATEMENT 
*                          NAMES AND KEYWORDS BEING WITH THAT SAME
*                          LETTER.
*        TNN TABLE -       TRUNK NPU NAME TABLE CONTAINS AN ENTRY FOR 
*                          EACH TRUNK DEFINED IN THE NETWORK.  EACH 
*                          ENTRY HAS THE N1 AND N2 VALUE SPECIFIED FOR
*                          THAT TRUNK.  IT IS USED, WITH THE NPU TABLE, 
*                          TO BUILD THE TRUNK NODE I.D. TABLE.  THIS
*                          TABLE IS ONLY GENERATED WHEN PARSING AN
*                          NCF DIVISION.
*        LNT TABLE -       LOGICAL LINK NODE NAME TABLE CONTAINS AN 
*                          ENTRY FOR EACH LOGLINK DEFINE IN THE 
*                          NETWORK.  EACH ENTRY HAS THE NCNAME VALUE FOR
*                          THE LOGLINK.  IT IS USED, WITH THE NPU AND 
*                          COUPLER TABLE, IO BUILD THE LOGICAL LINK 
*                          TABLE.  THIS TABLE IS ONLY GENERATED WHEN
*                          PARSING AN NCF DIVISION. 
* 
*     2)WITHIN PASS 2:  
*        LINE CONFIGURA-
*          TION FILE -    CONTAINS A RECORD FOR EACH NPU DEFINED.  EACH 
*                          RECORD CONTAINS AN ENTRY FOR EACH LINE OR
*                          GROUP DEFINED ON THE NPU.  EACH ENTRY
*                          CONTAINS LINE CONFIGURATION INFORMATION FOR
*                          THE LINE.  IT IS USED TO BUILD THE CONFIGURA-
*                          TION TABLE IN THE NCB-S.  IT IS ONLY BUILT WHEN
*                          CHECKING PARAMETERS FOR AN NCF.
*        LINE CONFIGURA-
*          TION FILE INDEX - CONTAINS AN ENTRY FOR EACH RECORD IN THE 
*                          LINE CONFIGURATION  FILE.  EACH ENTRY POINTS TO
*                          A UNIQUE RECORD.  IT ALSO CONTAINS THE NPU 
*                          NAME AND NODE I.D. THAT CORRESPONDS TO THE 
*                          RECORD.  IT IS ONLY BUILT WHEN CHECKING
*                          PARAMETERS FOR AN NCF. 
*        SUPLINK TABLE -   CONTAINS AN ENTRY FOR EACH SUPLINK DEFINED OR
*                          DEFAULTED BY NDLP.  EACH ENTRY CONTAINS THE
*                          SUPLINK NAME AND THE HOST NODE I.D. THAT THE 
*                          NPU WILL BE SUPERVISED BY.  IT IS USED TO
*                          BUILD THE SUPERVISOR TABLE IN THE NCB-S.  IT 
*                          IS ONLY BUILT WHEN CHECKING PARAMETERS FOR 
*                          AN NCF.
* 
*     THE THREE TABLES ABOVE ARE USED TO BUILD THE NPU CONFIGURE BLOCKS.
*     THE REMAINDER OF THE INFORMATION NEEDED TO BUILD THE NCB-S
*     ARE GOTTEN FROM THE NPU, PHYSICAL LINK, LOGICAL LINK CROSS
*     REFERENCE TABLES, WHICH ARE PART OF THE NCF.
* 
*     3)WITHIN LIST --
*        THERE ARE NO TABLES BUILT BY LIST PER SE, BUT RATHER BUFFERS 
*        USED TO FORMAT THE LINE IMAGES.  THERE ARE TWO BIT MAPS USED 
*        IN CREATING AN NCF SUMMARY.  ONE IS A TIPTYPE MAP USED TO
*        LIST WHICH ONES WERE DEFINED FOR AN NPU.  THE OTHER IS A 
*        NODE I.D. MAP USED TO LIST WHICH NODE I.D.-S WERE NOT USED.
*        FINALLY THERE ARE BUFFERS USED TO READ IN VARIOUS FILES CREATED
*        BY PASS 1 AND PASS 2.
* 
*     AGAIN, THE PURPOSE OF THIS SECTION WAS TO IDENTIFY THE MAJOR
*     PROCESSES OF NDLP AND THE TABLES AND FILES USED TO TRANSFER DATA
*     BETWEEN THEM.  IN SUMMARY, THERE ARE THREE MAJOR PROCESSES: 
*       1)PASS 1 -- SYNTAX CRACKING AND CHECKING. 
*       2)PASS 2 -- PARAMETER COMPATIBILITY CHECKING AND CONFIGURATION
*                   FILE CREATION.
*       3)LIST --   LISTING CREATION. 
*     THE TABLES PASSED FROM PASS 1 TO PASS 2 ARE:  
*       1)STATEMENT TABLE    5)LOGLINK TABLE
*       2)CONSOLE MAP        6)NPU TABLE
*       3)COUPLER TABLE      7)TRUNK NODE I.D. TABLE
*       4)LABEL TABLE 
*     THE TABLES PASSED FROM PASS 1 TO LIST ARE:  
*       1)DEFINE TABLE. 
*       2)EXPANDED SECONDARY INPUT FILE.
*       3)SECONDARY INPUT FILE. 
*        4)PASS 1 ERROR FILE
*     THE TABLES PASSED FROM PASS 2 TO LIST ARE:  
*        1)PASS 2 ERROR FILE. 
*        2)NCF OR LCF.
* 
*     SECTION II: FUNCTIONAL DESCRIPTION -- 
* 
*     NDLP IS MADE UP OF SIX MAIN MODULES: NDLMAIN, NDLINIT, NDLPSS1, 
*     NDLP2NF, NDLP2LF, AND NDLLIST.  NDLMAIN IS THE EXECUTIVE ROUTINE
*     FOR NDLP.  IT LOADS AND EXECUTES THE OTHER MAIN MODULES AS
*     THEY ARE NEEDED.  NDLINIT DOES INITIALIZATION TASKS FOR NDLP WHICH
*     INCLUDE CONTROL CARD CRACKING, MANAGED TABLES INITIALIZATION, AND 
*     SETTING UP FET-S.  THE REMAINDER OF THE MODULES CORRESPOND TO THE 
*     THREE MAJOR PROCESSES AS DESCRIBED BY THE FIRST SECTION.  NDLPSS1 
*     HAS THE FUNCTION OF PASS 1 WHICH IS TO DO SYNTAX CRACKING AND 
*     CHECKING.  PASS 2 IS BROKEN UP INTO TWO MODULES, NDLP2NF AND
*     NDLP2LF.  BOTH ESSENTIALLY HAVE THE SAME FUNCTION: TO DO PARAMETER
*     COMPATIBILITY CHECKING AND CONFIGURATION FILE CREATION.  NDLP2NF
*     CHECKS STATEMENTS DEFINING AN NCF AND NDLP2LF CHECKS STATEMENTS 
*     DEFINING AN LCF.  NDLLIST CORRESPONDS TO LIST WHICH DOES ALL THE
*     LISTING GENERATION. 
* 
*     NDLMAIN -- THIS MODULE IS THE EXECUTIVE FOR NDLP.  IT BEGINS BY 
*     EXECUTING THE INITIALIZATION ROUTINE.  THE INITIALIZATION ROUTINE 
*     DETERMINES FROM THE CONTROL CARD WHETHER NDLP WAS CALLED TO DO A
*     FILE SUMMARY RUN OR A FILE CREATION RUN.  IF A FILE SUMMARY WAS 
*     REQUESTED NDLMAIN WILL EXECUTE NDLLIST TO GENERATE THE SUMMARY. 
*     IF IT IS A CREATION RUN THEN FOR EACH CONFIGURATION FILE DEFINED
*     IN THE INPUT SOURCE NDLMAIN CALLS NDLPSS1, NDLP2NF OR NDLP2LF, AND
*     NDLLIST.  FINALLY NDLMAIN RETURNS SCRATCH FILE AND ISSUES A 
*     DAYFILE MESSAGE THAT NDLP IS COMPLETE.
* 
*     NDLINIT --THIS MODULE DOES ALL THE INITIALIZATION TASKS FOR NDLP. 
*     IT FIRST CRACKS THE CONTROL CARD TO DETERMINE THE TYPE OF RUN,
*     ALTERNATE INPUT/OUTPUT FILE NAMES, AND LISTING OPTIONS REQUESTED. 
*     NDLINIT THEN INITIALIZES THE DYNAMIC TABLE MANAGER.  FINALLY IT 
*     INITIALIZES VARIOUS FET-S NEEDED TO DO I/O. 
* 
*     NDLPSS1 -- THIS MODULE UTILIZES THE SYNGEN SUBSYSTEM.  THE SYNTAX 
*     TABLE DRIVER (NDLSTD) IS THE MAIN ROUTINE.  NDLSTD CALLS FIVE 
*     OTHER PROCEDURES AS NEEDED TO PARSE AND CHECK THE SOURCE INPUT. 
*     DIAG DOES DIAGNOSTIC PROCESSING, WHICH BASICALLY MEANS CALLING
*     ERRMS1 TO MAKE ENTRIES IN THE PASS 1 ERROR FILE.  LEXSCAN FORMS 
*     THE NEXT TOKEN FROM THE SOURCE.  LEXSNC CAUSES SCANNING TO BEGIN
*     TO CONTINUE ON THE NEXT CARD OR LINE IMAGE.  PRINTRC IS USED TO 
*     PRINT TRACE INFORMATION.  SUBR CONTAINS ALL THE SYNTATIC ROUTINES 
*     USED TO DO ERROR CHECKING AND TABLE CREATION.(SEE THE IMS CODE FOR
*     NDLSTD TO GET MORE DETAILS OF THE SYNGEN SUBSYSTEM) 
* 
*     NDLP2LF -- THIS MODULE DOES FURTHER CHECKING OF LCF STATEMENTS AND
*     DOES CREATION OF THE LCF DEFINED BY THE SOURCE.  NDLP2LF CONTAINS 
*     SUB-MODULES, ONE FOR EACH STATEMENT, AND A PASS 2 LCF TERMINATION 
*     ROUTINE.  IT FIRST INITIALIZES ALL THE TABLES NEEDED TO CREATE AN 
*     LCF.  THEN FOR EACH ENTRY IN THE STATEMENT TABLE, NDLP2LF CALL THE
*     APPROPRIATE PROC TO CHECK THE ENTRY.  THIS IS DONE BY SWITCHING 
*     ON THE STATEMENT I.D. NUMBER.  THEN IN EACH STATEMENT PROC IT 
*     SWITCHES ON KEYWORD I.D. TO CHECK EACH VALUE DECLARATION.  NDLP2LF
*     FINALLY CALLS LCFTERM TO WRITE THE LCF TABLES AND RECORDS OUT TO
*     A LOCAL FILE. 
* 
*     NDLP2NF -- THIS MODULE DOES FURTHER CHECKING OF NCF STATEMENTS AND
*     DOES CREATION OF THE NCF DEFINED BY THE SOURCE.  NDLP2NF THREE
*     OTHER MODULE: 1)NDLNFNT, 2)NDLNFCM, AND 3)NDLNFTM.  NDLNFNT 
*     CONTAINS SUB-MODULE, ONE FOR EACH STATEMENT, WHICH CHECK THE
*     NETWORK ELEMENT STATEMENTS(NFILE, NPU, SUPLINK, COUPLER, LOGLINK, 
*     AND TRUNK).  NDLNFCM CONTAINS SUB-MODULES WHICH CHECK THE COMMU-
*     NICATION ELEMENT STATEMENTS(LINE, TERMINAL, DEVICE).  NDLNFTM DOES
*     NCB CREATION AND WRITES THE NCF TABLE TO A LOCAL FILE.
* 
*     NDLLIST -- THIS MODULE, BASED ON FLAGS SET BY NDLINIT, GENERATES
*     LISTINGS FOR NDLP.  THERE IS A SUB-PROC FOR EACH TYPE OF LISTING. 
*     IN ADDITION THERE IS A SUB-PROC FOR EACH NDL STATEMENT AND A
*     CALLED WHEN A FILE SUMMARY IS NEEDED. 
* 
*     AS FOR THE OVERLAY STRUCTURE FOR NDLP THERE ARE FIVE PRIMARY
*     OVERLAYS AND THREE SECONDARY OVERLAYS.  NDLMAIN IS IN THE MAIN
*     OVERLAY(0,0).  THE PRIMARY OVERLAYS ARE NDLINIT(1,0), NDLPSS1(2,0)
*     NDLP2NF(3,0), NDLP2LF(4,0), AND NDLLIST(5,0).  THE SECONDARY
*     OVERLAYS ARE ALL CALLED BY NDLP2NF.  THEY ARE NDLNFNT(3,1), 
*     NDLNFCM(3,2), AND NDLNFTM(3,3).  THE FAST OVERLAY LOADER IS USED
*     TO LOAD ALL THE OVERLAYS(SEE LOADER MANUAL FOR DESCRIPTION).  THE 
*     OVERLAY LOADER IS CALLED THRU NDLOVLD.  NDLOVLD INITIALIZES THE 
*     CALL TO THE FAST OVERLAY LOADER AND SETS UP A RETURN-JUMP TO THE
*     OVERLAY ONCE IT HAS BEEN LOADED.
* 
*     THE DYNAMIC TABLE MANAGER IS THE ONE USED BY NVF/CS.  THE DESIGN
*     OF THE MANAGER IS ROUGHLY EQUIVALENT TO THE STANDARD COMMON DECK
*     -COMCMTP- WHICH CONTAINS A COMPASS MANAGED TABLE PACKAGE.  THE
*     DYNAMIC TABLE AREA IS LOCATED IN HIGH CORE.  THE AREA IS ALLOCATED
*     BY THE MANAGER THRU A SERIES OF TWO WORD ENTRIES.  EACH ENTRY 
*     CORRESPONDS TO A TABLE DEFINED FOR USE BY NDLP.  THIS IS A PRE- 
*     DETERMINED NUMBER OF TABLE DEFINED AT COMPILATION TIME.  THE FIRST
*     WORD IN THE ENTRY IS A POINTER INTO THE DYNAMIC TABLE AREA WHICH
*     IS THE FIRST WORD ALLOCATED TO THE TABLE.  THE SECOND WORD IN THE 
*     ENTRY SPECIFIES THE NUMBER CP WORDS ALLOCATED TO THAT TABLE.  AS
*     MORE SPACE IS NEEDED FOR EACH TABLE AND TABLES NEED TO BE MOVED 
*     AROUND THE MANAGER UPDATES THE TABLE POINTERS AND ALLOCATED WORD
*     COUNTS AS NEEDED.  THE TABLE MANAGER AND THE TABLE POINTERS ARE 
*     LOCATED IN THE MAIN OVERLAY.  THE TABLE POINTERS ARE IN A COMMON
*     BLOCK LABELED -TABLES-. 
* 
*     THERE ARE EIGHT SYMPL TEXTS DEFINE FOR NDLP:  
* 
*       NDLDATT -- THIS TEXT CONTAIN A COMMON BLOCK LABELED -NDLDATA-.
*                  NDLDATA CONTAINS ALL THE FLAGS SET BY NDLINIT, FILE
*                  NAMES, ERROR/WARNING COUNTS, NAME OF CURRENT OVERLAY 
*                  LOADED, AND THE TITLE TEXT.  IT ALSO CONTAINS THE
*                  STATUS LIST FOR ALL THE STATEMENT AND KEYWORD I.D.-S.
* 
*       NDLER1T -- THIS TEXT DEFINES THE TABLE CONTAINING ALL THE PASS 1
*                  ERROR MESSAGE INFORMATION. 
* 
*       NDLER2T -- THIS TEXT DEFINES THE TABLE CONTAINING ALL THE PASS 2
*                  ERROR MESSAGE INFORMATION. 
* 
*       NDLFETT -- DEFINES ALL THE FILE ENVIRONMENT TABLES USED BY NDLP,
*                  ALSO ALL THE CIRCULAR BUFFERS AND WORKING STORAGE
*                  AREAS FOR I/O PROCESSING.
* 
*       NDLNCFT -- CONTAINS COMMON INFORMATION USED IN NCF CREATION.
* 
*       NDLOVLT -- DEFINES THE TABLE TABLE CONTAINING ALL THE OVERLAY 
*                  NAMES AND THEIR LEVELS.
* 
*       NDLPS2T -- CONTAINS INFORMATION COMMON TO ALL PASS 2 TYPE 
*                  ROUTINES.
* 
*       NDLTBLT -- CONTAINS DEFINITIONS OF ALL THE TABLES MANAGED BY THE
*                  DYNAMIC TABLE MANAGER.  IF YOU NOTICE, EACH TABLE IS 
*                  DEFINED BY A BASED ARRAY FOLLOWED BY A ONE WORD ITEM.
*                  THIS CORRESPONDS TO THE TWO WORD ENTRY AS DESCRIBED
*                  PREVIOULSY.  ONE WORD IS ALLOCATED TO THE BASED ARRAY
*                  AND IS USED AS THE TABLE POINTER INTO THE DYNAMIC
*                  TABLE AREA.  THE ONE WORD ITEM IS USED AS THE COUNT
*                  OF THE NUMBER OF CP WORDS ALLOCATED TO THE TABLE.
*                  THIS TEXT ALSO CONTAINS A DEFINE OF THE ENTRY SIZE 
*                  OF EACH TABLE AND THE INITIAL SIZE ALLOCATED FOR EACH
*                  TABLE WHEN USED. 
* 
* 
*     IT IS HOPED THAT THIS OVERVIEW WILL GIVE AN OVER-ALL UNDERSTANDING
*     OF HOW NDLP IS DESIGNED AND STRUCTURED.  FOR A MORE DETAILED
*     DESCRIPTION OF EACH MODULE SEE THE IMS CODE LOCATED AT THE
*     BEGINNING OF EACH MODULE. 
* 
*     APPENDIX A. 
* 
*     A NOTE ON MODIFYING NDLP IN TERMS OF ADDING AND DELETING A
*     KEYWORD.
* 
*     A KEYWORD MAY BE ANY PARAMETER NAME (E.G. - NODE, TIPTYPE,
*     NAME1, ETC.) OR STATEMENT NAME (E.G. - NFILE, LINE, INCALL, ETC.) 
* 
*     ADDING A KEYWORD -- 
* 
*       STEP I. 
* 
*         KEYWORD LIST: 
* 
*         IN DECK NDLSDAT, INSERT THE NEW KEYWORD IN ALPHABETICAL 
*         ORDER,ALSO ON THE SAME LINE INSERT THE FOLLOWING MASKS, 
*         ACCORDING TO THE FORMAT AND DEFINITION AS FOLLOWS:  
* 
*                             FLAGS/
*           KEYWORD NAME      ID       ---SAMAP/KAMAP---
* 
*           AUTO              04001     00050     00000 
*           INCALL            60173     00006     50000 
* 
*         WHERE:  
* 
*         FLAG1(BIT 0)       FLAG TO INDICATE THAT THIS IS A STATEMENT
*                            NAME ENTRY.
* 
*         FLAG2(BIT 1)       FLAG TO INDICATE WHETHER LABEL IS REQUIRED,
*                              0 - LABEL NOT REQUIRED.
*                              1 - LABEL REQUIRED.
* 
*         FLAG3(BIT 2)       RESERVED FOR CDC USE.
* 
*         FLAG4(BIT 3)       FLAG TO INDICATE THAT THIS IS A KEYWORD
*                            ENTRY. 
* 
*         FLAG5(BIT 4)       VALUE REQUIRED FLAG. 
* 
*         FLAG6(BIT 5)       RESERVED FOR CDC USE.
* 
*         STID/KWID(BIT 6-14) NUMERIC IDENTIFIER FOR THE DELIMITER, 
*                             STATEMENT, OR KEYWORD.
* 
*         SAMAP/KAMAP(BIT 15-44) BIT MAP FOR: 
*                            STATEMENT NAMES - A BIT IS SET ACCORDING TO
*                                              THE ID OF THE STATEMENT
*                                              IT CAN FOLLOW. 
*                            PARAMETER NAMES - A BIT SET CORRESPONDING
*                                              TO THE ID OF THE STATE-
*                                              IT CAN APPEAR ON.
* 
*         NO FURTHER CHANGES ARE NEEDED FOR SYNGEN CODE.
* 
*       STEP II.
* 
*         PASS 1 -- STATEMENT NAMES:  
* 
*         IF THE NEW KEYWORD IS A STATEMENT NAME THEN MAKE THE APPROPRI-
*         ATE CHANGES IN PROC CKSTMTDEC WHICH HAS SWITCHES FOR STATEMENT
*         DECLARATIONS. 
* 
*         PASS 1 -- PARAMETER NAMES:  
* 
*         IF THE NEW KEYWORD IS A PARAMETER ON A STATEMENT THEN SWITCHES
*         IN PROC CKVDEC HAS TO BE MODIFIED TO REFLECT THE NEW KEYWORD
*         AND ALSO THE KIND OF VALUES (E.G. DECIMAL,HEXIDECIMAL, ALPHA- 
*         NUMERIC ETC) IT CAN ASSUME. ALSO, CHANGED ARE THE SWITCHES IN 
*         ENTVAL FOR ENTERING APPROPRIATE VALUES INTO THE CORRECT OFF-
*         SETS IN STATEMENT TABLE.
* 
*         IF THE NEW KEYWORD ASSUMES RESERVED LITERALS SUCH AS "YES", 
*         "NO","CCP" ETC., THEN PROC CHKTABL HAS TO BE CHANGED TO UPDATE
*         THE CORRESPONDING TABLES. 
* 
*       STEP III. 
* 
*         PASS2 -- COMMUNICATION ELEMENTS (NDLNFCM):  
* 
*         IF THE NEW KEYWORD IS A DEVICE PARAMETER THEN DEPENDING ON THE
*         TIPTYPE USED, THE SWITCHES IN THE CORRESPONDING DEVICE HAND-
*         LING PROC (E.G., PROC ASYDEV FOR ASYNC DEVICE) ARE MODIFIED.
* 
*         SIMILARLY,THE SAME APPROACH APPLIES FOR LINE AND TERMINAL 
*         PARAMETERS. 
* 
*         PASS2 -- NETWORK ELEMENTS (NDLNFNT):  
* 
*         IF THE NEW KEYWORD IS A TRUNK, COUPLER,NPU,LOGLINK, SUPLINK,
*         OR NFILE PARAMETER, THE SWITCHES FOR THE CORRESPONDING
*         PROCEDURES HAVE TO BE MODIFIED. 
* 
*         PASS 2 -- STATEMENT NAMES:  
* 
*         IF THE NEW KEYWORD IS A NEW STATEMENT NAME,THEN SWITCHES FOR
*         NDLNFCM,NDLNFTN OR NDLP2LF ARE MODIFIED TO REFLECT THE
*         NEW STATEMENT DEPENDING ON WHICH GROUP THE NEW KEYWORD BELONGS
*         TO. THE RELATED CROSS REFERENCE TABLES HAVE TO BE CHANGED 
*         OR CREATED ACCORDINGLY. 
* 
*         PASS 2 -- CHECK RANGE:  
* 
*         IF THE NEW PARAMETER REQUIRES A NUMERIC VALUE, THEN NDLCKRG 
*         HAS TO BE CHANGED TO REFLECT THE NEWLY ADDED KEYWORD AND ITS
*         LEGAL RANGE.
* 
*       STEP IV.
* 
*         LIST: 
* 
*         IN MOST CASES, NDLLIST HAS TO BE CHANGED TO REFLECT THE 
*         EXISTENCE OR NON-EXISTENCE OF A KEYWORD OR STATEMENT. (E.G. - 
*         IF A NEW PARAMETER ON DEVICE STATEMENT IS ADDED THEN PROC 
*         DEVLIST HAS TO BE MODIFIED TO REFLECT THE NEW CHANGE) 
* 
*     DELETING A KEYWORD -- 
* 
*       DELETING A KEYWORD WOULD GO THROUGH A SIMILAR PROCESS MENTIONED 
*       ABOVE, IN THAT INSTEAD OF ADDING EXTRA SWITCHES OR KEYWORDS 
*       TO ACCOMMODATE THE NEW KEYWORD IN EACH OF THE STEP MENTIONED
*       ABOVE, DELETION OF SWITCHES OR KEYWORD(S) WILL OCCUR IN THESE 
*       STEPS.
* 
# 
*ENDIF
      END 
      TERM
