*DECK CNTRL                                                             000110
OVERLAY(DDLF,0,0,OV=9)                                                  000160
  PRGM DDLF;                                                            003470
#**********************************************************************#
      ITEM COPYRIGHT C(33) =
          "COPYRIGHT CONTROL DATA CORP. 1982";
#**********************************************************************#
      XREF
        BEGIN 
          ITEM DDLCOMP ;       # DDL COMPILATION LANGUAGE MODE         #
                               # ** THESE VALUES ARE SET IN ARG AND    #000410
                               #    USED IN SEVERAL OTHER ROUTINES. ** #000420
                               #  8 = F4   FORTRAN 4 SUBSCHEMA         #000810
                               #  9 = F5   FORTRAN 5 SUBSCHEMA         #
          ITEM EXHSS;          # =1 IF *A* PARAMETER SPECIFIED         #000140
          ITEM NEWLIB U;       # 0 = NO SUBSCHEMA LIBRARY COPY         #
                               # NOT 0 = NEW SUBSCHEMA LIBRARY NAME    #
          ITEM NOADDSS;        # =1 IF *N* PARAMETER SPECIFIED         #
          ITEM PURGESS;        # =1 IF *P* PARAMETER SPECIFIED         #001610
          PROC ARG ;           # CONTROL STATEMENT ARGUMENT PROCESSOR  #
          PROC CBPINIT;        # ENTRY POINT IN DDLSCAN. CALLED WHEN   #
                               # SUB-SCHEMA FILE IS TO BE UPDATED(PUR- #
                               # GED). READS THE FIRST SOURCE RECORD   #
                               # AND IDENTIFIES THE FIRST SOURCE WORD. #
          PROC CLSEOUT;        # WRITES VARIOUS TERMINATING MESSAGES   #
                               # ABOUT THE COMPILATION AND CLOSES THE  #
                               # OUTPUT FILE.                          #
          PROC DDLOPEN;        #COMPASS ROUTINE WHICH OPENS ALL FILES  #
                               #TO BE USED IN DDL AND ALLOCATES BUFFER #
                               #SPACE FOR THEM.                        #
          PROC DDLABT;         #COMPASS ROUTINE WHICH ABORTS THE JOB   #
                               #AFTER DISPLAYING A DIAGNOSTIC MESSAGE. #
          PROC DDLINIT;        #ENTRY POINT IN DDLSCAN WHICH READS THE #
                               #1ST SOURCE RECORD AND IDENTIFIES THE   #
                               #1ST SOURCE WORD.                       #
          PROC MSSABRT;        #ISSUES FATAL MESSAGE TO THE OUTPUT FILE#
                               #AND CLOSES THE OUTPUT FILE.            #
          PROC STD$START;      #ENTRY POINT IN STD WHICH STARTS THE    #
                               #SYNTAX ANALYSIS.                       #
          PROC SCHEMAMAIN;     #SCHEMA BUILDING OVERLAY.               #
          PROC UPDATEMAIN;     #SCHEMA UPDATING OVERLAY.               #
          PROC QUIDDLMAIN;     #QUIDDL SCHEMA BUILDING OVERLAY.        #
          PROC QUSUBMAIN;      #QU SUB-SCHEMA BUILDING OVERLAY.        #
          PROC COBOLSUBMAIN;   #COBOL SUB-SCHEMA BUILDING OVERLAY.     #
          PROC LOADOVL;        # LOAD OVERLAYS    # 
         END
  
      XDEF
        BEGIN 
          ITEM ABORTFLAG;              # 1 = FATAL DIAGNOSTIC HAS BEEN #
                                       # ISSUED IN CB OR FTN SUBSCHEMA #
          ITEM DMSGPTR;                # PTR TO TABLE OF DIAGNOSTIC    #
                                       # MESSAGES.                     #
          ITEM FIRSTWORD;              # FWA OF AVAILABLE SPACE FOLLOW-#
                                       # ING LARGEST OVERLAY.          #
          ITEM LINELMT = 1000;
          ITEM CB5FLAG B;              # FLAG WHICH INDICATES THE SUB- #
                                       # SCHEMA IS TO A COBOL 5 SUB-   #
                                       # SCHEMA (SPECIAL COMP-1 PROCS).#
          ITEM MULTSS B;       # TRUE - MULTIPLE SS TO BE COMPILED     #
          ITEM PPFLAG B = FALSE;      # FALSE SIGNALS THAT THE         #001460
                                      # FORTRAN PRE-PASS IS NOT        #001470
                                      # EXECUTING                      #001480
                                                                        001490
          ITEM SBSCHMA;                # CONTAINS THE FIRST WORD ADDR. #
                                       # OF A SUBSCHEMA(FTN OR CB) IN  #
                                       # CORE.                         #
          ITEM SBSCHML;                # LENGTH OF CM RESIDENT SUBSCH  #
                                       # IF NOT ALL IN CM,REMAINDER ON #
                                       # SCRATCH FILE.                 #
          ITEM TRVERR;         # = 1 FOR TRIVIAL COMPILATION ERROES    #
        END 
         XDEF 
          BEGIN 
           ITEM SYNTBL; 
           ITEM LBLPTR; 
           ITEM TRACE;
           ITEM SYNSEC; 
           ITEM LEXWD;
           ITEM LEXICO; 
          ITEM DDLDIAG; 
          END 
      BASED ARRAY RA;          #ARRAY FOR EXAMINING THE SYSTEMS COMMUN-#
        BEGIN                  #ICATIONS AREA.                         #
          ITEM NEXTAVAIL I(0,42,18);#PTR TO NEXT AVAILABLE WORD IN LF. #
                               #  LARGEST SEGMENT                      #
          ITEM DDLSPCE I(0,42,18);# FWA OF SPACE FOLLOWING THE         #
          ITEM OLREQ U(0,0,60); 
          ITEM LIBFLG U(0,41,1);                                        000160
        END 
    XDEF
      BEGIN 
        ITEM LIBFLAG;                                                   000440
      ITEM DIAGTBL; 
      ITEM SWITCHVCTR;
      END 
      ITEM I,J,K;              #SCRATCH VARIABLES.                     #
      ITEM ITEMP; 
      ITEM LFN U; 
      XDEF PROC DDLRTRN;
#**********************************************************************#
#                                                                      #
#                          DDLCTRL                                     #
#                                                                      #
# PURPOSE: PROVIDE FRAMEWORK FOR DDL SYSTEM AND DETERMINE FLOW OF      #
#          CONTROL WITHIN DDL.                                         #
# ENTRY:   DDLF ( MAIN PROGRAM ).                                      #
#          OVLINIT ( MAKES THE OVERLAY 0,0 RE-ENTRANT - FOR MULTIPLE   #
#                    COMPILATION OF SUBSCHEMAS ).                      #
# ENTRY CONDITIONS: THE DDL SOURCE INPUT IS THE CURRENT RECORD OF THE  #
#          SYSTEM FILE "INPUT". OPTIONALLY, THE DDL SOURCE MAY RESIDE  #
#          ON THE "COMPILE" FILE AND WOULD BE INDICATED BY THE SPECIF- #
#          ICATION OF THE I PARAMETER BY ITSELF ON THE DDLF CONTROL    #
#          CARD, OR THE DDLF SOURCE MAY RESIDE ON ANOTHER FILE, IN     #
#          WHICH CASE THE DDLF CONTROL CARD MUST CONTAIN AN I = LFN    #
#          PARAMETER WITH THE LFN OF THE INPUT FILE.                   #
#          AN ADDITIONAL ENTRY POINT "OVLINIT" IS ALSO PROVIDED FOR    #
#          ENTRY INTO THE 0,0 OVERLAY IN THE EVENT OF MULTIPLE COMPI-  #
#          LATION OF SUBSCHEMAS.                                       #
# EXTERNAL REFERENCES:                                                 #
#          ARG - PROCESSES DDLF CONTROL STATEMENT ARGUMENTS.           #
#          DDLOPEN - COMPASS ROUTINE WHICH OPENS ALL DDL FILES AND     #
#                    ALLOCATES BUFFER SPACE FOR THEM.                  #
#          LOADOVL - COMPASS ROUTINE THAT LOADS THE REQUESTED OVERLAYS.#
#          MSSABRT - ENTRY POINT IN CTLIO THAT GENERATES ABORT MESSAGE #
#                    TO THE OUTPUT FILE AND CLOSES THE OUTPUT FILE --  #
#                    USED PRIMARILY BY THE FORTRAN SUBSCHEMA PROCESSOR.#
#**********************************************************************#
# EXIT CONDITIONS: DDLCTRL RELINQUISHES CONTROL TO STD WHEN ALL HOUSE- #
#          KEEPING TASKS PRIOR TO SOURCE ANALYSIS HAVE BEEN COMPLETED. #
# ERROR CONDITIONS: AN ERROR IN THE PARAMETERS OF THE DDL CALL WILL    #
#          CAUSE AN ABORT ( IN ROUTINE ARG ).                          #
# DESCRIPTION: DDL FIRST CALLS ARG TO PROCESS THE DDL CONTROL          #
#          STATEMENT ARGUMENTS. ARG STORES THE ARGUMENT VALUES INTO    #
#          THE PROPER WORDS OF STORAGE, AND CHECKS FOR ERRORS. IF AN   #
#          ERROR IS FOUND, ARG CAUSES AN ABORT BY CALLING DDLABT(1).   #
#          AFTER RETURN FROM ARG, DDLF CALLS THE ENTRY POINT OVLINTI   #
#          WHICH IN TURN CALLS DDLOPEN TO OPEN PERTINENT FILES TO BE   #
#          USED BY DDLF AND ALLOCATE BUFFER SPACE FOR THEM.            #
#          UPON RETURN FROM DDLOPEN, A CALL IS MADE TO THE MAIN ENTRY  #
#          POINT OF THE SEMANTIC ROUTINE OVERLAY REQUIRED FOR THE LAN- #
#          BEING PROCESSED.                                            #
#          ADDITIONAL ENTRY POINTS SSCGLD,SSLLD AND CBABRT ARE ALSO    #
#          PROVIDED AND WHICH ARE PRIMARILY USED BY THE FORTRAN SUB-   #
#          SCHEMA PROCESSOR ( OVERLAYS 5,6,7).                         #
#**********************************************************************#
  
  
      P<RA> = 0;               #SET BASE TO SYSTEMS COMMUNICATION AREA.#
                               #DDL COMMUNICATION CELLS.               #
      LIBFLAG = LIBFLG[53];                                             000180
        FIRSTWORD = DDLSPCE[68];   #GET HHA FROM RA+104 # 
  
      ARG;               # PROCESS CONTROL STATEMENT ARGUMENTS         #
      IF DDLCOMP EQ 5 THEN
        CB5FLAG = TRUE; 
      ITEMP = B<42,18>OLREQ[53];  # LWA + 1 OF CURRENT OVERLAY         #
  
      OVLINIT;               # SET UP OVERLAY CALLS                    #
      XDEF PROC OVLINIT;     # INITIATE APPROPRIATE DDLF COMPILATIONS  #
#**********************************************************************#
#                                                                      #
#                            OVLINIT                                   #
#                                                                      #
#**********************************************************************#
  PROC OVLINIT; 
    BEGIN                    # BEGIN OF PROC OVLINIT                   #
      ABORTFLAG = 0;         # RE-INITIALIZE                           #
      TRVERR = 0;            # FIELDS                                  #
      DDLOPEN;               #OPEN PERTINENT FILES AND ALLOCATE BUFFERS#
      IF EXHSS EQ 1 OR PURGESS EQ 1    # IF ONLY AUDIT OR PURGE        #
          OR NEWLIB NQ 0 THEN          # OR LIBRARY COPY-              #
        LOADOVL(ITEMP, 7, 0);      #SS AUDIT/PURGE,LOAD SS LIB OVERLAY #
                                   # LOAD FORTRAN SUB-SCHEMA OVERLAY   #
      LOADOVL ( ITEMP, 5, 0);                                           000860
    END                      # END OF PROC OVLINIT                     #
  XDEF PROC SSCGLD; 
#**********************************************************************#
#                                                                      #
#                            SSCGLD                                    #
#                                                                      #
#**********************************************************************#
  PROC SSCGLD;     # END OF SUBSCHEMA COMPILATION. LOAD CODE GENERATOR #
                   # OVERLAY.                                          #
    BEGIN 
      IF ABORTFLAG GR 0 THEN
        CBABRT;              # ABORT CURRENT SUBSCHEMA COMPILATION     #
      LOADOVL( ITEMP, 6, 0 );    # LOAD CODE GENAERATION OVERLAY #
    END        # END OF PROC SSCGLD # 
  XDEF PROC SSLLD;
#**********************************************************************#
#                                                                      #
#                            SSLLD                                     #
#                                                                      #
#**********************************************************************#
  PROC SSLLD;      # LOADS THE SUBSCHEMA LIBRARY MAINTENANCE OVERLAY #
    BEGIN 
      IF NOADDSS EQ 0 THEN      # IF SS IS TO BE ADDED TO SS LIBRARY,  #
        LOADOVL( ITEMP, 7, 0 );  # LOAD SS LIBRARY MAINT. ROUTINE # 
      CLSEOUT;
      IF MULTSS THEN         # MULTIPLE SUBSCHEMAS PRESENT, THEN       #
        OVLINIT;             # RE-INITIATE SS COMPILATION              #
      STOP; 
    END 
  XDEF PROC CBABRT;          # ABORTS CURRENT SUBSCHEMA COMPILATION    #
#**********************************************************************#
#                                                                      #
#                            CBABRT                                    #
#                                                                      #
#**********************************************************************#
  PROC CBABRT;
    BEGIN                    # BEGIN OF PROC CBABRT                    #
      MSSABRT;               # GENERATE ABORT MESSAGE TO OUTPUT FILE   #
                             # AND CLOSE OUTPUT FILE                   #
      IF MULTSS THEN         # IF MULTIPLE SUBSCHEMA COMPILATION       #
        OVLINIT;             # RE-INITIATE COMPILATION                 #
      STOP;                  # STOP EXECUTION                          #
    END                      # END OF CBABRT                           #
#**********************************************************************#
#                                                                      #
#                            DDLRTRN                                   #
#                                                                      #
#**********************************************************************#
      PROC DDLRTRN; 
      STOP; 
   TERM;                               # WAS FOUND.                    #
