*DECK QDLMAIN 
OVERLAY(DDL, 3, 0); 
  
      PRGM DL30300;                # THIS IS 3,0 OVERLAY               # DL3A030
  
#**********************************************************************#
#                                                                      #
#         MAIN PROGRAM FOR QU/DDL SUB-SCHEMA.                          #
#                                                                      #
#                                                                      #
#         J. G. SERPA    77/07/07.                                     #
#                                                                      #
#     QDLMAIN - IS THE ROUTINE NAME AND THE FIRST EXECUTABLE           #
#               INSTRUCTION IN THE 3,0 OVERLAY. THIS ENTRY LOADS THE   #
#               3,1 OVERLAY.                                           #
#                                                                      #
#     QUDRTN1 - LOADS THE 3,2 OVERLAY                                  #
#                                                                      #
#     QUDRTN2 - LOADS THE 3,3 OVERLAY.                                 #016290
#                                                                      #
#     QUDRTN3 - TERMINATES EXECUTION                                   #
#                                                                      #
#     QUDRTN4 - LOADS THE 3,4 OVERLAY                                  #016310
#                                                                      #016320
#     QUDRTN5 - LOADS THE 3,5 OVERLAY                                  #016330
#                                                                      #
#                                                                      #
#     ENTRY CONDITIONS :                                               #
#                                                                      #
#     OLD65   - LAST WORD ADDRESS + 1 OF LAST OVERLAY LOADED.          #
#                                                                      #
#     PURPOSE :                                                        #
#                                                                      #016350
#          TO MAINTAIN CONTROL OF OVERLAY LOADING                      #016360
#                                                                      #
#                                                                      #
#     DESCRIPTION :                                                    #
#                                                                      #
#     QDLMAIN - LOADOVL WAS CALLED BY "CNTRL" TO LOAD THE 3,0 OVERLAY  #
#               SINCE QDLMAIN IS THE FIRST ROUTINE IN THE 3,0 OVERLAY, #
#               IT GETS CONTROL.  WHEN LOADOVL LOADED THE 3,0 OVERLAY  #
#               IT STORED THE CONTENTS OF RA+65B INTO CELL OLD65.  THE #
#               CONTENTS OF OLD65 ARE THEN STORED IN CELL BASE3X, WHICH#
#               IS IN TURN USED AS THE FIRST WORD ADDRESS OF OVERLAYS  #
#               3,1 THROUGH 3,5.  THEN A CALL TO LOADOVL IS ISSUED TO  #
#               LOAD THE 3,1 OVERLAY.                                  #
#                                                                      #
#     QUDRTN1 - OPENS THE SUBSCHEMA FILE AND ISSUES A CALL TO LOADOVL  #
#               TO LOAD THE 3,2 OVERLAY                                #
#                                                                      #
#     QUDRTN2 - CALLS LOADOVL TO LOAD OVERLAY 3,3.                     #016400
#                                                                      #
#     QUDRTN3 - CLOSES THE SUBSCHEMA FILE, CLOSES THE OUTPUT FILE,     #
#               STOPS THE RUN                                          #
#                                                                      #
#     QUDRTN4 - CALLS LOADOVL TO LOAD OVERLAY 3,4                      #016420
#                                                                      #016430
#     QUDRTN5 - CALLS LOADOVL TO LOAD OVERLAY 3,5                      #016440
#                                                                      #
#**********************************************************************#
  
  
      DEF  QDLBLD2      # 3, 3#;   # QDLBLD2 IS 3, 3 OVERLAY           #016470
      DEF  QDLSIZE      # 3, 2#;   # QDLSIZE IS 3, 2 OVERLAY           #016480
      DEF  QDLSYN       # 3, 1#;   # QDLSYN  IS 3, 1 OVERLAY           #016490
      DEF  QDRSYN       # 3, 4#;   # QDRSYN  IS 3, 4 OVERLAY           #016500
      DEF  QDSSLIB      # 3, 5#;   # QDSSLIB IS 3, 5 OVERLAY           #016510
  
      XDEF BEGIN
           PROC QUDRTN1;           # LOAD AND EXECUTE OVERLAY (3,2)    #016530
           PROC QUDRTN2;           # LOAD AND EXECUTE OVERLAY (3,3)    #016540
           PROC QUDRTN3;           # CLOSE FILES AND STOP EXECUTION    #016550
           PROC QUDRTN4;           # LOAD AND EXECUTE OVERLAY (3,4)    #016560
           PROC QUDRTN5;           # LOAD AND EXECUTE OVERLAY (3,5)    #016570
  
           ARRAY HASHTBL [0:512];; # HASH TABLE                        #016590
           ARRAY LIBFDB  [0:14];;  # LIBRARY FOR DATA BASE PROCEDURE   #016600
           ARRAY SBLOCK  [0:8];;   # SUB-SCHEMA DIRECTORY CONTROL WORD #016610
                                                                        016620
           ITEM AREALG;            # LENGTH OF LARGEST AREA            #016630
           ITEM DNTNDX;            # DATA NAME TABLE POINTER           #016640
           ITEM ENDDNT;            # END OF DATA NAME TABLE            #016650
           ITEM EOMNDX;            # INDEX INTO MEMORY TABLE           #016660
           ITEM LOFANMS;           # LENGTH OF AREA NAMES              #016670
           ITEM NUMANMS;           # NUMBER OF AREA NAMES              #016680
           ITEM NUMDNMS;           # NUMBER OF DATA NAMES              #016690
           ITEM RELFLAG B;         # RELATION DIVISION FLAG            #
           END
  
      XREF BEGIN
           PROC CLSEOUT;           # CLOSE OUTPUT FILE                 #
           PROC LOADOVL;           # LOAD OVERLAYS                     #
           PROC OPENZZ;            # OPEN SCRATCH FILE                 #016720
           PROC RETNZZ;            # CLOSE AND UNLOAD SCRATCH FILE     #016730
  
           ITEM EXHSS;             # AUDIT SUB-SCHEMA LIBRARY          #016750
           ITEM NEWLIB;            # NEW SUB-SCHEMA LIBRARY            #016760
           ITEM NOADDSS;           # DO NOT ADD SUB-SCHEMA TO FILE     #016770
           ITEM OLD65;             # LWA OF CURRENT OVERLAY            #
           ITEM PURGESS;           # PURGE SUB-SCHEMA                  #016790
           END
  
  
      ITEM BASE3X;                 # FWA OF ( 3, X) OVERLAY            #
  
  
      PROC QUDRTN1; 
           BEGIN
           LOADOVL( BASE3X, QDLSIZE);  # LOAD AND EXECUTE QDLSIZE      #
           END
  
  
      PROC QUDRTN2; 
           BEGIN
           LOADOVL (BASE3X, QDLBLD2);   # LOAD AND EXECUTE QDLBLD2     #016820
           END
  
  
      PROC QUDRTN3; 
           BEGIN
           RETNZZ;                 # CLOSE AND UNLOAD SCRATCH FILE     #016840
           CLSEOUT;                # ISSUE END OF RUN MESSAGES AND     #
                                   # CLOSE OUTPUT FILE                 #
           STOP;                   # TERMINATE EXECUTION OF DDL        #
           END
  
  
      PROC QUDRTN4; 
           BEGIN
           LOADOVL( BASE3X, QDRSYN);   # LOAD AND EXECUTE QDRSYN       #
           END
  
      PROC QUDRTN5;                                                     016860
           BEGIN                                                        016870
           IF NOADDSS EQ 0         # IF ADD SUB-SCHEMA TO LIBRARY      #016880
           THEN                                                         016890
                LOADOVL (BASE3X, QDSSLIB);  # LOAD AND EXECUTE QDSSLIB #016900
           ELSE                                                         016910
                QUDRTN3;           # CLOSE FILES AND STOP EXECUTION    #016920
           END                                                          016930
  
#**********************************************************************#016950
#                                                                      #016960
#        E X E C U T A B L E   C O D E   F O R   Q D L M A I N         #016970
#                                                                      #016980
#**********************************************************************#016990
                                                                        017000
                                                                        017010
      BEGIN                                                             017020
      BASE3X = OLD65;              # LWA + 1 OF LAST OVERLAY LOADED    #017030
      IF NEWLIB NQ 0               # IF NEW LIBRARY                    #017040
           OR PURGESS EQ 1         # OR PURGE SUBSCHEMA FROM LIBRARY   #017050
           OR EXHSS EQ 1           # OR AUDIT SUB-SCHEMA LIBRARY       #017060
      THEN                                                              017070
           QUDRTN5;                # LOAD AND EXECUTE QDSSLIB          #017080
      ELSE                                                              017090
           LOADOVL (BASE3X, QDLSYN);  # LOAD AND EXECUTE QDLSYN        #017100
      END                                                               017110
  
      TERM
