*DECK CNTRL                                                             003909
OVERLAY(DDL,0,0,OV=22)                                                  003910
      PRGM DDL3;                   # THIS IS (0,0) OVERLAY             #003911
      BEGIN                                                             003912
#**********************************************************************#003913
                                                                        003914
      ITEM COPYRIGHT C(33) =                                            003915
*CALL COPYRIGHT 
                                                                        003917
#**********************************************************************#003918
                                                                        003919
 #                                                                      003920
* *   DDL3                                       PAGE  1                003921
* *   J G SERPA                                  DATE  02/16/79         003922
*                                                                       003923
* DC  PURPOSE                                                           003924
*                                                                       003925
*     TO PROVIDE A FRAMEWORK FOR DDL COMPILER AND TO DETERMINE          003926
*     CONTROL FLOW WITHIN DDL.                                          003927
*                                                                       003928
* DC  CONTAINED ROUTINES                                                003929
*                                                                       003930
*     PROC CBABRT                  ABORT CURRENT SUB-SCHEMA COMPILATION 003931
*     PROC OVLINIT                 INITIATE APPROPRIATE COMPILATION     003932
*     PROC SSCGLD                  LOAD CODE GENERATOR OVERLAY          003933
*     PROC SSLLD                   LOAD LIBRARY MAINTENANCE OVERLAY     003934
*                                                                       003935
* DC  GLOBAL VARIABLES                                                  003936
*                                                                       003937
*     ITEM ABORTFLAG               FATAL DIAGNOSTICS FLAG               003938
*     ITEM DDLDIAG                 ADDRESS OF DIAGNOSTIC ROUTINE        003939
*     ITEM FIRSTWORD               ADDRESS OF FWA OF AVAILABLE SPACE    003940
*     ITEM LBLPTR                  ADDRESS OF LBLPTRS                   003941
*     ITEM LEXICO                  ADDRESS OF LEXICON                   003942
*     ITEM LEXWD                   ADDRESS OF LEXWORDS                  003943
*     ITEM LIBFLAG                 LIBRARY NAME FLAG                    003944
*     ITEM LINELMT                 OUTPUT LINE LIMIT                    003945
*     ITEM MULTSS                  MULTIPLE COMPILATION FLAG            003946
*     ITEM SBSCHMA                 FWA OF SUB-SCHEMA IN CORE            003947
*     ITEM SBSCHML                 LENGTH OF SUB-SCHEMA IN CORE         003948
*     ITEM SWITCHVCTR              FWA OF SEMANTIC SWITCH VECTOR        003949
*     ITEM SYNSEC                  USED BY CTLSTD                       003950
*     ITEM SYNTBL                  FWA OF SYNTAX TABLE                  003951
*     ITEM TRACE                   FWA OF TRACE TABLE                   003952
*     ITEM TRVERR                  TRIVIAL ERRORS FLAG                  003953
*                                                                       003954
* DC  NON LOCAL VARIABLES                                               003955
*                                                                       003956
*     ITEM DDLCOMP                 VALUE TO INDICATE TYPE OF COMPILATION003957
*     ITEM EXHSS                   AUDIT SUB-SCHEMA LIBRARY FLAG        003958
*     ITEM NEWLIB                  NEW SUB-SCHEMA LIBRARY LFN           003959
*     ITEM NOADDSS                 DO NOT ADD SUB-SCHEMA TO LIBRARY FLAG003960
*     ITEM PURGESS                 PURGE SUB-SCHEMA FROM LIBRARY FLAG   003961
*                                                                       003962
* DC  ENTRY CONDITIONS                                                  003963
*                                                                       003964
*     THE DDL SOURCE INPUT IS THE CURRENT RECORD OF THE SYSTEM FILE     003965
*     "INPUT". OPTIONALLY, THE DDL SOURCE MAY RESIDE ON THE "COMPILE"   003966
*     FILE, WHICH IS INDICATED BY SPECIFYING "I" BY ITSELF ON THE       003967
*     CONTROL STATEMENT, OR THE SOURCE MAY RESIDE ON ANY OTHER FILE,    003968
*     IN WHICH CASE THE CONTROL STATEMENT MUST SPECIFY I = LFN, WHERE   003969
*     LFN IS THE FILE CONTAINING THE DDL SOURCE.                        003970
*                                                                       003971
* DC  EXIT CONDITIONS                                                   003972
*                                                                       003973
*     CNTRL RELINQUISHES CONTROL BY LOADING THE APPROPRIATE OVERLAY     003974
*     TO PROCESS SOURCE STATEMENTS.                                     003975
*                                                                       003976
* DC  DESCRIPTION                                                       003977
*                                                                       003978
*     CNTRL FIRST CALLS "ARG" TO PROCESS THE DDL CONTROL STATEMENT.     003979
*     ARG STORES THE ARGUMENT VALUES INTO THE PROPER CELLS AND CHECKS   003980
*     FOR ERRORS. IF ANY ERROR IS FOUND, THE JOB IS ABORTED.            003981
*     AFTER RETURN FROM ARG, CNTRL CALLS CONTAINED PROC OVLINIT (THIS   003982
*     PROC MAKES THE (0,0) OVERLAY REENTRANT FOR MULTIPLE COMPI-        003983
*     LATIONS) TO LOAD THE APPROPRIATE OVERLAY, DEPENDING ON THE VALUE  003984
*     OF DDLCOMP.                                                       003985
*                                                                       003986
 #                                                                      003987
                                                                        003988
      STATUS COMPMODE                                                   003989
                                   # 0 - UNUSED                        #003990
             ,DS                   # 1 - SCHEMA (DEFAULT)              #003991
             ,EX                   # 2 - EXHIBIT                       #003993
             ,QU                   # 3 - QU/CRM SUB-SCHEMA        #     003994
             ,QC                   # 4 - QU/CDCS SUB-SCHEMA            #003995
             ,C5                   # 5 - COBOL SUB-SCHEMA              #003996
             ;                                                          003997
                                                                        003998
      XDEF PROC OVLINIT;           # INITIATE APPROPRIATE COMPILATION  #003999
      XDEF PROC SSCGLD;            # LOAD CODE GENERATOR OVERLAY       #004000
      XDEF PROC SSLLD;             # LOAD LIBRARY MAINTENNCE OVERLAY   #004001
      XDEF PROC CBABRT;            # ABORT CURRENT COMPILATION         #004002
                                                                        004003
      XDEF ITEM ABORTFLAG   I;     # = 1 IF FATAL DIAGNOSTICS HAVE     #004004
                                   # BEEN ISSUED IN COBOL OR QU/CDCS   #004005
                                   # SUB-SCHEMA                        #004006
      XDEF ITEM DDLDIAG     U;     # ADDRESS OF DIAGNOSTIC ROUTINE     #004007
                                   # USED BY CTLSTD                    #004008
      XDEF ITEM FIRSTWORD   U;     # FIRST WORD ADDRESS OF AVAILABLE   #004009
                                   # SPACE FOLLOWING HHA               #004010
      XDEF ITEM LBLPTR      U;     # FIRST WORD ADDRESS OF LBLPTRS     #004011
                                   # USED BY CTLSTD                    #004012
      XDEF ITEM LEXICO      U;     # FIRST WORD ADDRESS OF LEXICON     #004013
                                   # USED BY CTLSTD                    #004014
      XDEF ITEM LEXWD       U;     # FIRST WORD ADDRESS OF LEXWORDS    #004015
                                   # USED BY CTLSTD                    #004016
      XDEF ITEM LIBFLAG     U;     # = 1 IF LOADED FROM NUCLEUS        #004017
      XDEF ITEM LINELMT  I = 1000; # OUTPUT LINE LIMIT                 #004018
      XDEF ITEM MULTSS      B;     # TRUE IF MULTIPLE SUB-SCHEMAS ARE  #004019
                                       #  TO BE COMPILED               #004020
      XDEF ITEM SBSCHMA     U;     # FIRST WORD ADDRESS OF SUB-SCHEMA  #004021
                                   # (COBOL OR QU/CDCS) IN CORE        #004022
      XDEF ITEM SBSCHML     U;     # LENGTH OF CM RESIDENT SUB-SCHEMA  #004023
                                   # IF NOT ALL IN CORE, REMAINDER IS  #004024
                                   # IN SCRATCH FILE                   #004025
      XDEF ITEM SWITCHVCTR  U;     # FIRST WORD ADDRESS OF SEMANTIC    #004026
                                   # ROUTINES SWITCH VECTOR            #004027
                                   # USED BY CTLSTD                    #004028
      XDEF ITEM SYNSEC      U;     # USED BY CTLSTD                    #004029
      XDEF ITEM SYNTBL      U;     # FIRST WORD ADDRESS OF SYNTAX TABLE#004030
                                   # USED BY CTLSTD                    #004031
      XDEF ITEM TRACE       U;     # FIRST WORD ADDRESS OF TRACE TABLE #004032
                                   # USED BY CTLSTD                    #004033
      XDEF ITEM TRVERR      I;     # = 1 IF TRIVIAL COMPILATION ERRORS #004034
                                   #     ISSUED                        #004035
                                                                        004036
      XREF PROC ARG;               # PROCESS CONTROL STATEMENT         #004037
                                   # ARGUMENTS                         #004038
      XREF PROC CLSEOUT;           # WRITE VARIOUS TERMINATING MESSAGES#004039
                                   # COMPILATIONS STATISTICS AND CLOSES#004040
                                   # THE OUTPUT FILE                   #004041
      XREF PROC DDLOPEN;           # OPEN ALL FILES TO BE USED BY DDL  #004042
      XREF PROC LOADOVL;           # LOAD REQUESTED OVERLAYS           #004043
      XREF PROC MSSABRT;           # WRITE ABORT MESSAGES TO OUTPUT    #004044
                                   # FILE, ABORT CURRENT COMPILATION   #004045
                                   # AND CLOSE OUTPUT FILE             #004046
                                                                        004047
      XREF ITEM DDLCOMP S:COMPMODE; # DDL COMPILATION LANGUAGE MODE.   #004048
                                   # THESE VALUES ARE SET BY ARG, AND  #004049
                                   # USED IN SEVERAL OTHER ROUTINES    #004050
      XREF ITEM EXHSS       I;     # = 1 IF *A* PARAMETER SPECIFIED    #004051
                                   #     AUDIT SUB-SCHEMA LIBRARY      #004052
      XREF ITEM NEWLIB      U;     # " 0 NEW SUB-SCHEMA LIBRARY NAME   #004053
      XREF ITEM NOADDSS     I;     # = 1 IF *N* PARAMETER SPECIFIED    #004054
                                   #   DO NOT ADD SUB-SCHEMA TO LIBRARY#004055
      XREF ITEM PURGESS     I;     # = 1 IF *P* PARAMETER SPECIFIED    #004056
                                   #    PURGE SUB-SCHEMA FROM LIBRARY  #004057
                                                                        004058
                                                                        004059
      BASED ARRAY RA[0:0] S(1);      # ARRAY FOR EXAMINING THE SYSTEM # 004060
                                      # COMMUNICATION AREA             #004061
        BEGIN                                                           004062
         ITEM LIBFLG  U(00,41,01);   # LIBRARY NAME FLAG              # 004063
         ITEM DDLSPCE U(00,42,18);    # FIRST WORD ADDRESS OF          #004064
                                      # AVAILABLE SPACE - "HHA"        #004065
         END                                                            004066
                                                                        004067
      ITEM ITEMP            U;     # LWA+1 OF 0,0 OVERLAY              #004068
      CONTROL EJECT;                                                    004069
      PROC CBABRT;                                                      004070
                                                                        004071
      BEGIN                                                             004072
                                                                        004073
 #                                                                      004074
* *   DDL3                                       PAGE  1                004075
* *   CBABRT - ABORT CURRENT SUB-SCHEMA COMPILATION                     004076
* *   J G SERPA                                  DATE  02/19/79         004077
*                                                                       004078
* DC  PURPOSE                                                           004079
*                                                                       004080
*     TO ABORT THE CURRENT SUB-SCHEMA COMPILATION                       004081
*                                                                       004082
* DC  EXIT CONDITIONS                                                   004083
*                                                                       004084
*     IF MULTSS IS SET, OVLINIT IS CALLED, ELSE EXECUTION IS TERMINATED 004085
*                                                                       004086
* DC  CALLED ROUTINES                                                   004087
*                                                                       004088
*     PROC MSSABRT                 WRITE ABORT MESSAGES TO OUTPUT       004089
*     PROC OVLINIT                 RE-INITIATE COMPILATION              004090
*                                                                       004091
* DC  DESCRIPTION                                                       004092
*                                                                       004093
*     MSSABRT IS FIRST CALLED TO GENERATE ABORT MESSAGES TO THE OUTPUT  004094
*     FILE AND ALSO TO CLOSE THE OUTPUT FILE. THEN THE MULTIPLE COMPI-  004095
*     LATION FLAG IS CHECKED. IF SET, OVLINIT IS CALLED TO INITIATE     004096
*     COMPILATION OF THE NEXT SUB-SCHEMA IN THE INPUT FILE, OTHERWISE   004097
*     EXECUTION IS TERMINATED.                                          004098
*                                                                       004099
 #                                                                      004100
                                                                        004101
#     E X E C U T A B L E  C O D E  F O R  C B A B R T                 #004102
                                                                        004103
      MSSABRT;                     # ABORT MESSAGES AND CLOSE OUTPUT   #004104
                                                                        004105
      IF MULTSS                    # IF IN MULTIPLE COMPILATION MODE   #004106
      THEN                                                              004107
        OVLINIT;                   # RE-INITIATE COMPILATION           #004108
                                                                        004109
      STOP;                                                             004110
                                                                        004111
      END  # CBABRT #                                                   004112
      CONTROL EJECT;                                                    004113
      PROC OVLINIT;                                                     004114
                                                                        004115
      BEGIN                                                             004116
 #                                                                      004117
* *   DDL3                                       PAGE  1                004118
* *   OVLINIT - INITIATE APPROPRIATE COMPILATION                        004119
* *   J G SERPA                                  DATE  02/19/79         004120
*                                                                       004121
* DC  PURPOSE                                                           004122
*                                                                       004123
*     TO INITIATE THE APPROPRIATE DDL COMPILATION                       004124
*                                                                       004125
* DC  CALLED ROUTINES                                                   004126
*                                                                       004127
*     PROC DDLOPEN                 OPEN PERTINENT FILES                 004128
*     PROC LOADOVL                 LOAD REQUESTED OVERLAY               004129
*                                                                       004130
* DC  ENTRY CONDITIONS                                                  004131
*                                                                       004132
*     DDLCOMP CONTAINS THE APPROPRIATE VALUE                            004133
*                                                                       004134
* DC  EXIT CONDITIONS                                                   004135
*                                                                       004136
*     APPROPRIATE OVERLAY HAS BEEN LOADED AND GIVEN CONTROL             004137
*                                                                       004138
* DC  DESCRIPTION                                                       004139
*                                                                       004140
*     DDLOPEN IS CALLED TO OPEN PERTINENT FILES THEN A JUMP IS MADE     004141
*     ON SWITCH LOADLANGUAGE DEPENDING ON THE VALUE OF DDLCOMP TO       004142
*     LOAD THE APPROPRIATE OVERLAY                                      004143
*                                                                       004144
 #                                                                      004145
                                                                        004146
#     E X E C U T A B L E  C O D E  F O R  O V L I N I T               #004147
                                                                        004148
      SWITCH LOADLANGUAGE: COMPMODE                                     004149
                                   # NOT USED                          #004150
              DS: DS               # SCHEMA                            #004151
             ,EX: EX               # EXHIBIT                           #004152
             ,QU: QU               # QU/CRM                            #004153
             ,QC: QC               # QU/CDCS                           #004154
             ,C5: C5               # COBOL                             #004155
             ;                                                          004156
                                                                        004157
      ABORTFLAG = 0;               # REINITIALIZE FIELDS               #004158
      TRVERR = 0;                                                       004159
      DDLOPEN;                     # OPEN PERTINENT FILES              #004160
                                                                        004161
      GOTO LOADLANGUAGE[DDLCOMP];                                       004162
        BEGIN                                                           004163
                                                                        004164
DS:                                # COMPILATION MODE IS SCHEMA        #004165
        LOADOVL (ITEMP, 1, 0);     # LOAD SCHEMA OVERLAY (1,0)         #004166
                                                                        004167
EX:                                # COMPILATION MODE IS EXHIBIT       #004168
        LOADOVL (ITEMP, 2, 0);     # LOAD EXHIBIT OVERLAY (2,0)        #004169
                                                                        004170
QU:                                # COMPILATION MODE IS QU/CRM        #004171
        LOADOVL (ITEMP, 3, 0);     # LOAD QU/CRM OVERLAY (3,0)         #004172
                                                                        004173
QC:                                # COMPILATION MODE IS QU/CDCS       #004174
                                                                        004175
C5:                                # COMPILATION MODE IS COBOL         #004176
        IF EXHSS EQ 1              # IF AUDIT SUB-SCHEMA LIBRARY       #004177
          OR PURGESS EQ 1          # OR PURGE SUB-SCHEMA               #004178
          OR NEWLIB NQ 0           # OR LIBRARY COMPRESSION            #004179
        THEN                                                            004180
          SSLLD;                   # LOAD SUB-SCHEMA LIBRARY MAINT-    #004181
                                   # NANCE OVERLAY  (7,0)              #004182
        LOADOVL (ITEMP, 4, 0);     # LOAD COBOL OVERLAY  (4,0)         #004183
                                                                        004184
        END                                                             004185
      END  # OVLINIT #                                                  004186
                                                                        004187
      CONTROL EJECT;                                                    004188
      PROC SSCGLD;                                                      004189
                                                                        004190
      BEGIN                                                             004191
 #                                                                      004192
* *   DDL3                                       PAGE  1                004193
* *   SSCGLD - LOAD CODE GENERATOR OVERLAY                              004194
* *   J G SERPA                                  DATE  02/19/79         004195
*                                                                       004196
* DC  PURPOSE                                                           004197
*                                                                       004198
*     TO LOAD OVERLAY (6,0) TO GENERATE RECORD/KEY MAPPING CAPSULES     004199
*                                                                       004200
* DC  CALLED ROUTINES                                                   004201
*                                                                       004202
*     PROC CBABRT                  ABORT CURRENT COMPILATION            004203
*     PROC LOADOVL                 LOAD REQUESTED OVERLAY               004204
*                                                                       004205
* DC  EXIT CONDITIONS                                                   004206
*                                                                       004207
*     OVERLAY 6,0 HAS BEEN LOADED AND GIVEN CONTROL                     004208
*                                                                       004209
* DC  DESCRIPTION                                                       004210
*                                                                       004211
*     IF ABORTFLAG IS NON-ZERO, CBABRT IS CALLED TO TERMINATE THE       004212
*     CURRENT SUB-SCHEMA COMPILATION, OTHERWISE, OVERLAY (6,0) IS LOADED004213
*     AND GIVEN CONTROL.                                                004214
*                                                                       004215
 #                                                                      004216
                                                                        004217
#     E X E C U T A B L E  C O D E  F O R  S S C G L D                 #004218
                                                                        004219
      IF ABORTFLAG GR 0            # IF FATAL ERRORS ENCOUNTERED       #004220
      THEN                                                              004221
        CBABRT;                    # ABORT CURRENT COMPILATION         #004222
                                                                        004223
      LOADOVL (ITEMP, 6, 0);       # ELSE, LOAD CODE GENERATION OVERLAY#004224
                                                                        004225
      END  # SSCGLD #                                                   004226
                                                                        004227
      CONTROL EJECT;                                                    004228
      PROC SSLLD;                                                       004229
                                                                        004230
      BEGIN                                                             004231
 #                                                                      004232
* *   DDL3                                       PAGE  1                004233
* *   SSLLD - LOAD LIBRARY MAINTENANCE OVERLAY                          004234
* *   J G SERPA                                  DATE  02/19/79         004235
*                                                                       004236
* DC  PURPOSE                                                           004237
*                                                                       004238
*     TO LOAD THE SUB-SCHEMA LIBRARY MAINTENANCE OVERLAY. (7,0)         004239
*                                                                       004240
* DC  CALLED ROUTINES                                                   004241
                                                                        004242
*     PROC CLSEOUT                 CLOSE OUTPUT FILE                    004243
*     PROC LOADOVL                 LOAD REQUESTED OVERLAY               004244
*     PROC OVLINIT                 REINITIATE SUB-SCHEMA COMPILATION    004245
*                                                                       004246
* DC  DESCRIPTION                                                       004247
*                                                                       004248
*     IF THE SUB-SCHEMA IS TO BE ADDED TO THE LIBRARY, OVERLAY 7,0 IS   004249
*     LOADED AND GIVEN CONTROL, OTHERWISE, THE OUTPUT FILE IS CLOSED,   004250
*     AND IF IN MULTIPLE COMPILATION MODE OVLINIT IS CALLED.            004251
*                                                                       004252
 #                                                                      004253
                                                                        004254
#     E X E C U T A B L E  C O D E  F O R  S S L L D                   #004255
                                                                        004256
      IF NOADDSS EQ 0              # SUB-SCHEMA IS TO BE ADDED         #004257
      THEN                                                              004258
        LOADOVL (ITEMP, 7, 0);     # LOAD OVERLAY (7,0)                #004259
                                                                        004260
      CLSEOUT;                     # CLOSE OUTPUT FILE                 #004261
                                                                        004262
      IF MULTSS                    # IF MULTIPLE SUB-SCHEMAS PRESENT   #004263
      THEN                                                              004264
        OVLINIT;                   # REINITIATE SUB-SCHEMA COMPILATIONS#004265
                                                                        004266
      STOP;                                                             004267
                                                                        004268
      END  # SSLLD #                                                    004269
                                                                        004270
      CONTROL EJECT;                                                    004271
                                                                        004272
#     E X EC U T A B L E  C O D E  F O R  C N T R L                    #004273
                                                                        004274
      P<RA> = 0;                                                        004275
      FIRSTWORD = DDLSPCE[O"104"]; # GET HHA FORM RA+104B              #004276
      ARG;                         # CRACK DDL CONTROL STATEMENT       #004277
                                                                        004278
      ITEMP = DDLSPCE[O"65"];      # GET LWA+1 FROM RA+65B             #004279
      LIBFLAG = LIBFLG[O"65"];     # GET LIBRARY FLAG FROM RA+65B      #004280
      OVLINIT;                     # INITIATE APPROPRIATE COMPILATION  #004281
                                                                        004282
      END                                                               004283
      TERM                                                              004284
