*DECK DB$SR15                                                            SR15 
USETEXT UTMPTTX 
USETEXT MD10CTX 
USETEXT MDBCMTX 
USETEXT CUGBATX 
      PROC DB$SR15;                                                      SR15 
 #                                                                       SR15 
  *   DB$SR15 - INITIALIZE FOR A CREATION RUN    PAGE  1                 SR15 
  *   J. JAN JANIK                               DATE  11/24/75          SR15 
  *   A. W. LO                                   DATE  05/08/77 
* *   J. G. SERPA - MDU 2.3 ENHANCEMENTS         DATE  07/25/80 
  *   KIM H. NGUYEN                              DATE  11/09/84 
  
  DC  PURPOSE                                                            SR15 
                                                                         SR15 
      TO SET UP TABLES AND CONTROL WORDS FOR A DBMSTRD CREATION RUN.     SR15 
                                                                         SR15 
  DC  ENTRY CONDITIONS                                                   SR15 
                                                                         SR15 
      NONE                                                               SR15 
                                                                         SR15 
  DC  EXIT CONDITIONS                                                    SR15 
                                                                         SR15 
      MANY ITEMS IN MASTER DIRECTORY UTILITY COMMON BLOCKS, OTHER THAN
      THOSE USED EXCLUSIVELY BY THE CST BUILDER IN THE (3,0) OVERLAY, 
      ARE INITIALIZED, MOSTLY TO ZERO.  MANY MANAGED MEMORY BLOCKS, 
      OTHER THAN BLOCKS USED EXCLUSIVELY BY THE CST BUILDER, ARE
      ALLOCATED.  THE MASTER DIRECTORY SCHEMA INFORMATION TABLE AND 
      CONTROL WORDS ARRAYS IN CORE ARE INITIALIZED. 
                                                                         SR15 
  DC  CALLING ROUTINES                                                   SR15 
                                                                         SR15 
      DB$STD - SYNTAX TABLE DRIVER                                       SR15 
                                                                         SR15 
  DC  CALLED ROUTINES                                                    SR15 
                                                                         SR15 
 #                                                                       SR15 
      BEGIN                                                              SR15 
      XREF                                                               SR15 
        BEGIN                                                            SR15 
 #                                                                     #
        PROC DB$MABT;        # ABORT DBMSTRD AFTER ISSUING MESSAGE     #
        PROC DB$OVCM;        # OVERFLOW ACTION SUBROUTINE              # SR15 
        PROC DB$NO;          # STD NO RETURN                           # SR15 
        PROC DB$UALB;        # ALLOCATE MOST BLOCKS                    #
        PROC DB$UALC;        # ALLOCATE BLOCK                          # SR15 
                                                                         JJJ1230
        FUNC DB$MPOE;        # PUSH CMM OVERFLOW ACTION SUBROUTINE     # JJJ1230
 #                                                                     #
  
        ARRAY DB$VRDT [0:0] S(3);      # MDU VERSION AND DATE          #
          BEGIN 
          ITEM DBVRPROD  C(0,00,03);   # MDU EXTERNAL PRODUCT VERSION  #
          ITEM DBVRDATE  C(0,24,05);   # MDU DATE OF INSTALLATION      #
          ITEM DBVTDATE  C(1,00,10);   # TODAYS DATE YY/MM/DD          #
          ITEM DBVCTIME  C(2,06,05);   # CURRENT TIME HH.MM            #
          END 
  
        ITEM DB$JDTE C(10);            # TODAYS JULIAN DATE            #
  
        END                                                              SR15 
 #                                                                       SR15 
                                                                         SR15 
  DC  NON-LOCAL VARIABLES                                                SR15 
                                                                         SR15 
      MD CONTROL WORDS WHICH ARE IN (0,0) COMMON DB$MDBC
      MD SCHEMA INFORMATION TABLE WORDS IN (0,0) COMMON DB$MDBC 
      SOME MD MANAGED MEMORY BLOCK POINTER WORDS IN COMMON DB$MCPT
      MANY ITEMS IN OTHER MASTER DIRECTORY UTILITY COMMON BLOCKS
                                                                         SR15 
  DC  DESCRIPTION                                                        SR15 
                                                                         SR15 
 #                                                                       SR15 
                             # SUPPRESS LISTING OF COMMONS DB$MDBC AND   JJJ0105
                               DB$MCPT AND DEFS IN CUGDFDCLS           # SR15 
*CALL MDABTDCLS 
  
#     LOCAL VARIABLES                                                  # SR15 
                                                                         SR15 
      ITEM INDEX;            # USED IN FOR LOOP TO INITIALIZE CWS      # SR15 
  
  
  
  
#     B E G I N   D B $ S R 1 5   E X E C U T A B L E   C O D E .      #
  
  
 #                                                                       SR15 
      SET RUNTYPE TO 0.  PUSH OVERFLOW ACTION SUBROUTINE DB$OVCM ONTO    SR15 
      CMMS STACK AND SAVE THE ENTRY IN OVACTID FOR LATER USE IN REMOVING SR15 
      THE ENTRY.  ALLOCATE MANY MANAGED MEMORY BLOCKS USED IN DBMSTRD,
      OTHER THAN THOSE USED EXCLUSIVELY BY THE CST BUILDER IN OVERLAY 
      (3,0).  DB$UALC AUTOMATICALLY INITIALIZES ALLOCATED WORDS TO 0. 
                                                                         SR15 
 #                                                                       SR15 
      IF MODFLG EQ 1 THEN DB$MABT(DFOMDCRT,OLMDLFN);
  
      DIRATHED = 1; 
      MODERR = 0; 
      NEWSCH = 0; 
      OVACTID = DB$MPOE(DFTRIGLV,DFTRIGWD,DB$OVCM); 
      RUNTYPE = 0;
      SCFATAL = 0;           # ERROR INDICATOR FOR THE CURRENT SCHEMA#
      SCHDIRP = 0;           # POINTER USED TO INDEX SCHEMA DIRECTORY#
      SCHDRSZ = 0;           # WORD SIZE OF ALL SCHEMA DIRECTORIES #
      SCHINCR = 0;           # SCHEMA IN CORE FROM (1,0) SCAN FLAG #
      SCINPRG = 0;           # ID OF THE SCHEMA IN PROGRESS # 
  
      P<SWAPLIST> = 0;       # LIST OF USED PRU'S ON THE SWAP FILE     #
      SWPLISTL = 0;          # LENGTH OF THE SWAP LIST                 #
  
      P<PFX> = 0;            # PFN INDEX TABLE POINTER                 #
      PFXA = 0;              # TABLE SIZE CURRENTLY ALLOCATED          #
      PFXL = 0;              # TABLE LENGTH CURRENTLY IN USE           #
 #
*     ALLOCATE MEMORY BLOCKS
 #
      PFUNCBBP = 0; 
      SCDRBP = 0; 
      WRKBUFBP = 0;          # WORK BUFFER BLOCK POINTER WORD # 
# 
*     ALLOCATE THE PFN/UN COMBO TABLE AND SET ITS TLC PARAMETERS
# 
      DB$UALC(LOC(PFUNCBBP), DFMDPFNHD + DFTLCHL -1, DFPFUNPD); 
      TLCCT[0] = TRUE;             # TABLE LENGTH IS CONTROLLED        #
      TLCXT[0] = TRUE;             # TABLE IS INDEXED                  #
      TLCHLEN[0] = DFTLCHL;        # TLC HEADER LENGTH                 #
      TLCUSED[0] = DFMDPFNHD;      # PFN TABLE HEADER IS ONLY USE      #
      TLCDSOR[0] = 0;              # NO DISK SEMENT ORDINAL            #
      TLCDSMF[0] = FALSE;          # DISK SEGMENT NOT MODIFIED         #
      TLCDSBW[0] = DFMDPFNHD;      # DISK SEGMENT BEGINNING WORD       #
  
                                   # DISK SEGMENT WORD LENGTH          #
      TLCDSWL[0] = 0; 
  
                                   # BUILD SEGMENT BEGINNING WORD      #
      TLCBSBW[0] = (DFTLCTMAX / (DFPFUNENT *2)) * DFPFUNENT +DFMDPFNHD; 
  
                                   # MAXIMUM TABLE LENGTH              #
      TLCTMXL[0] = 2 * TLCBSBW[0] - DFMDPFNHD;
# 
*     ALLOCATE THE SCHEMA DIRECTORY BLOCK 
# 
      DB$UALC(LOC(SCDRBP),0,0); 
# 
*     ALLOCATE OTHER BLOCKS 
# 
      DB$UALB;
  
      AREANAM = " ";
      ARNMLEN = 0;
      ARNMLNW = 0;
      CCLFLAGS[0] = 0;
      CCLPROCNAME = " ";
      CHARGE = " "; 
      CHARGELEN = 0;
      DENSITY = 0;
      FILENAM = 0;
      JOBFAM = " "; 
      JOBPW = " ";
      JOBUN = " ";
 #
      INITIALIZE MDPFINFO.
 #
      P<GETENTRY> = LOC(MDPFWORD[0]); 
      FOR INDEX = 0 STEP 1
        UNTIL FILETYPE"LASTFILE" * DFPFENTLEN - 1 
      DO
        BEGIN 
        GETUNSIG[INDEX] = 0;
        END 
      AREACHGF = FALSE; 
      EOTFLAG = FALSE;
      PCUTNDX =0; 
      SBNMLEN = 0;           # SUBSCHEMA NAME LENGTH IN CHARACTERS #
      SCHNAME = " ";
      SCNMLEN = 0;
      SUBNAME = " ";
      TAPEFLAGS[0] = 0; 
      TRACKTYPE = FALSE;
      UNITLIM = 0;
      UPDLIM = 0; 
      VERSNAM = " ";
      VERSORD = 0;
 #
      INITIALIZE THE SCHEMA INFORMATION TABLE.
 #
      P<GETENTRY> = LOC(MDSCINFO);
      FOR INDEX = 0 STEP 1
        UNTIL DFMDSCINSZ - 1
      DO
        GETUNSIG[INDEX] = 0;
 #
      ZERO OUT THE MASTER DIRECTORY CONTROL WORDS.
 #
      P<GETENTRY> = LOC(MDCONWD); 
      FOR INDEX=0 STEP 1 UNTIL DFMDNUMCWM1 DO 
        GETUNSIG[INDEX] = 0;
  
 #
      STORE THE MDU INTERNAL AND EXTERNAL VERSION NUMBERS, MDU ASSEMBLY 
      DATE, MASTER DIRECTORY FILE CREATION TIME AND JULIAN DATE.
 #
      MDCWVERS[0] = DFMDVERS;          # MD INTERNAL VERSION NUMBER # 
      MDCWIDNT[0] = DFMDIDNT;          # MD FILE IDENTIFIER STRING #
      MDCWPROD[0] = DFMDPROD;          # MD EXTERNAL PRODUCT VERSION #
      MDCWDATE[0] = DBVRDATE[0];       # MD UTILITY DATE OF CREATION #
      MDCRTIME[0] = DBVCTIME[0];   # MD FILE CREATION TIME             #
      MDCRDATE[0] = C<5,5>DB$JDTE; # MD FILE CREATION JULIAN DATE      #
 #
      INITIALIZE FIRST AVAILABLE WORD IN THE NEW MD 
 #
      PUTWA = DFMDNUMCW + 1;
 #
      INITIALIZE COUNTERS 
 #
      AREACNT = 0;
      CSTDCNT = 0;
      NBRAFTIMG = 0;
      PFUNCNT = 0;
      PROCCNT = 0;
      SCDRCNT = 0;
      PWCOUNT = 0;
      VERSCNT = 0;
      DB$NO;
      END                                                                SR15 
      TERM                                                               SR15 
