*DECK DB$BALL 
USETEXT BRGENTX 
      PROC DB$BALL((EXTINDEX)); 
      BEGIN 
 #
* *   DB$BALL - ALLOCATE DIRECTIVE               PAGE  1
* *   E. P. JOHNSON                              DATE  03/06/81 
* * 
* 
* DC  PURPOSE 
* 
*     TO PREALLOCATE AUTOMATIC RECOVERY FILES, THE QUICK RECOVERY 
*     FILE AND JOURNAL LOG FILES. 
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
# 
      ITEM EXTINDEX I;                 # INDEX INTO THE EXECUTION TABLE#
# 
*     ASSUMPTIONS 
* 
*     P<EXTABLE>             THE BASED ARRAY POINTER OF THE EXECUTION 
*                            TABLE IS SET.
*     MDSCINFO               THE SCHEMA INFORMATION TABLE HAS BEEN
*                            READ IN. 
* 
* DC  EXIT CONDITIONS 
* 
*     AN ATTEMPT HAS BEEN MADE TO ALLOCATE ALL OF THE SPECIFIED FILES.
* 
* DC  CALLING ROUTINES
* 
*     DB$B20B           THE CONTROLLING ROUTINE OF THE (2,0) OVERLAY
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$BALJ;               # ALLOCATE JOURNAL LOG FILES.   #
      XREF PROC DB$BALQ;               # ALLOCATE THE QUICK RECOVERY   #
                                       # FILE.                         #
      XREF PROC DB$BALR;               # ALLOCATE THE RESTART          #
                                       # IDENTIFIER FILE.              #
      XREF PROC DB$BALT;               # ALLOCATE TRANSACTION RECOVERY #
                                       # FILES.                        #
      XREF PROC DB$BURP;               # USER REPORT GENERATOR.        #
      XREF PROC DB$MFA;                # GET A CMM FIXED POSITION      #
                                       # BLOCK.                        #
      XREF PROC DB$MFF;                # FREE A CMM FIXED POSITION     #
                                       # BLOCK.                        #
# 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     PRESETBUF              THE COMMON ITEM CONTAINING THE PRESET
*                            BUFFER LOCATION. 
* 
* DC  DESCRIPTION 
* 
*     - IF A JOURNAL LOG FILE, OR A TRANSACTION RECOVERY FILE, OR A 
*       QUICK RECOVERY FILE IS TO BE ALLOCATED, THEN GET A CMM BLOCK
*       FOR USE AS THE PRESET BUFFER. 
* 
*     - IF THE JOURNAL LOG FILE FLAG IS SET IN THE EXECUTION TABLE, 
*       THEN CALL THE JOURNAL LOG FILE ALLOCATION ROUTINE.
* 
*     - IF THE TRANSACTION RECOVERY FILE FLAG IS SET, THEN CALL THE 
*       TRANSACTION RECOVERY FILE ALLOCATION ROUTINE. 
* 
*     - IF THE QUICK RECOVERY FILE FLAG IS SET, THEN CALL THE QUICK 
*       RECOVERY FILE ALLOCATION ROUTINE. 
* 
*     - IF THE RESTART IDENTIFIER FILE FLAG IS SET, THEN CALL THE 
*       RESTART IDENTIFIER FILE ALLOCATION ROUTINE. 
* 
*     - PRINT THE ALLOCATE DIRECTIVE EXECUTION COMPLETE MESSAGE ON
*       THE DBREC OUTPUT FILE.
* 
*     - IF THE PRESET BUFFER EXISTS, THEN RETURN IT.
* 
*     - RETURN TO THE CALLER. 
* 
 #
  
  
# S T A R T   O F   D B $ B A L L   E X E C U T A B L E   C O D E      #
  
  
# IF A JOURNAL LOG FILE, OR A TRANSACTION RECOVERY FILE, OR A          #
# QUICK RECOVERY FILE IS TO BE ALLOCATED, THEN GET A CMM BLOCK         #
# FOR USE AS THE PRESET BUFFER.                                        #
  
      IF EXJLFLG[EXTINDEX]
        OR EXTRFLG[EXTINDEX]
        OR EXQRFLG[EXTINDEX]
      THEN
        BEGIN 
        DB$MFA(DFPRESETBUF,PRESETBUF);
        END 
  
# IF THE JOURNAL LOG FILE FLAG IS SET IN THE EXECUTION TABLE, THEN     #
# CALL THE JOURNAL LOG FILE ALLOCATION ROUTINE.                        #
  
      IF EXJLFLG[EXTINDEX]
      THEN
        BEGIN 
        DB$BALJ(EXTINDEX);
        END 
  
# IF THE TRANSACTION RECOVERY FILE FLAG IS SET, THEN CALL THE          #
# TRANSACTION RECOVERY FILE ALLOCATION ROUTINE.                        #
  
      IF EXTRFLG[EXTINDEX]
      THEN
        BEGIN 
        DB$BALT(EXTINDEX);
        END 
  
# IF THE QUICK RECOVERY FILE FLAG IS SET, THEN CALL THE QUICK          #
# RECOVERY FILE ALLOCATION ROUTINE.                                    #
  
      IF EXQRFLG[EXTINDEX]
      THEN
        BEGIN 
        DB$BALQ(EXTINDEX);
        END 
  
# IF THE RESTART IDENTIFIER FILE FLAG IS SET, THEN CALL THE            #
# RESTART IDENTIFIER FILE ALLOCATION ROUTINE.                          #
  
      IF EXRIFLG[EXTINDEX]
      THEN
        BEGIN 
        DB$BALR;
        END 
  
# PRINT THE ALLOCATE DIRECTIVE EXECUTION COMPLETE MESSAGE ON THE       #
# DBREC OUTPUT FILE.                                                   #
  
      DB$BURP(DFURP01); 
  
# IF THE PRESET BUFFER EXISTS, THEN RETURN IT.                         #
  
      IF EXJLFLG[EXTINDEX]
        OR EXTRFLG[EXTINDEX]
        OR EXQRFLG[EXTINDEX]
      THEN
        BEGIN 
        DB$MFF(PRESETBUF);
        END 
  
# RETURN TO THE CALLER.                                                #
  
      RETURN; 
  
      END 
      TERM
