*DECK DB$CLOG 
USETEXT JLPCMTX 
USETEXT CDCSCTX 
  PROC DB$CLOG; 
  BEGIN 
 #
* *   DB$CLOG    CLOSE LOG FILES                 PAGE  1
* *                                              DATE  2/12/76
* DC  PURPOSE 
* 
*     CLOSE ALL JOURNAL LOG FILES 
* 
* DC  ENTRY CONDITIONS
* 
*     CDCS COMMON 
* 
*           SAL         SCHEMA ACCESS LIST
*           SALL        NUMBER OF ENTRIES IN SAL
*           SCHEMA DIRECTORY
* 
* DC  EXIT CONDITIONS 
* 
*     NORMAL--ALL LOG FILES HAVE BEEN CLOSED
* 
*     ABNORMAL--ERROR(S) OCCURRED IN CLOSING THE LOG FILES.  DAYFILE
*               MESSAGES ARE ISSUED.
* 
* DC  CALLING ROUTINES
* 
*     DB$RCVR    REPRIEVE/RECOVER PROCESSING
* 
* DC  CALLED ROUTINES 
* 
*     CLOSEM     CLOSE PRIMARY/SECONDARY JOURNAL LOG
*     DB$EXT     EXTEND RMS FILE
*     DB$MSG     ISSUE DAYFILE MESSAGE
* 
* DC  NON-LOCAL VARIABLES 
* 
*     CDCS COMMON 
*     JOURNAL LOG PROCESSOR COMMON
* 
* DC  DESCRIPTION 
* 
*     SCAN THE ENTIRE SAL FOR ENTRIES WHICH CONTAIN FITS FOR JOURNAL
*     LOGS. FOR EACH SUCH ENTRY, CALL INTERNAL PROC "JLOGCL" TO CLOSE 
*     THE PRIMARY AND SECONDARY LOGS. 
* 
 #
      CONTROL EJECT;
  
# LOCAL ITEMS                                                          #
  
      ITEM ERRCODE;                     # ERROR STATUS CODE FOR EXTEND #
      ITEM J;                           # SCRATCH                      #
      ITEM LFN C(7);                    # FOR SYSTEM EXTEND REQUEST    #
  
      ARRAY CLSMSG S(8);
        BEGIN 
          ITEM CLSTXT   C(0,0,80) = ["JOURNAL LOG CLOSED FOR SCHEMA "]; 
          ITEM CLSNAM   C(3,0,30);
        END 
      ARRAY EMSG1 S(8);                 # ERROR MESSAGE (JOURNAL LOG)  #
        BEGIN 
          ITEM EM1TXT   C(0,0,80) = [" JOURNAL LOG ERROR FOR SCHEMA "]; 
          ITEM EM1SCNAM C(3,0,30);
        END 
  
# EXTERNAL REFERENCES                                                  #
  
      XREF PROC CLOSEM;                 # CLOSE JOURNAL LOGS           #
      XREF PROC DB$EXT;                 # EXTEND LOG FILE              #
      XREF PROC DB$MSG;                 # ISSUE DAYFILE MESSAGE        #
      XREF PROC DB$RA0;                 # TERMINATE PARAMETER LIST     #
  
      CONTROL EJECT;
  
 #
* 
*     J L O G C L 
* 
*     "JLOGCL" IS AN INTERNAL PROCEDURE WHICH CLOSES THE PRIMARY AND
*     SECONDARY JOURNAL LOG FILES.  IN ADDITION, IF THESE LOGS ARE ON 
*     RMS DEVICES, THEY ARE EXTTENDED.
* 
*     ENTRY CONDITIONS
* 
*     THE FIT LOCATION OF THE PRIMARY/SECONDARY JOURNAL LOG IS PASSED 
*     IN LOCAL CELL "J".
* 
*     EXIT CONDITIONS 
* 
*     NORMAL--JOURNAL LOGS ARE CLOSED AND EXTENDED IF REQUIRED. 
* 
*     ABNORMAL--IF AN ERROR OCCURS IN CLOSING THE LOGS, A MESSAGE IS
*               WRITTEN TO THE DAYFILE IDENTIFYING THE SCHEMA INVOLVED. 
* 
*     CALLED ROUTINES 
* 
*     CLOSEM     CRM INTERFACE
*     DB$EXT     EXTEND JOURNAL LOG 
* 
 #
      PROC JLOGCL;
      BEGIN 
  
      IF J EQ 0  THEN                   # CHECK IF FILE PRESENT        #
          RETURN; 
      P<JLFIT> = J;                     # POINT TO FIT                 #
      IF JLFOC[0] EQ 2 THEN             # CHECK IF FILE ALREADY CLOSED #
          RETURN; 
  
      JLFEX[0] = 0;                     # SUPPRESS ERROR EXIT          #
      CLOSEM (JLFIT,DB$RA0);            # ISSUE CLOSE REQUEST          #
      CLSNAM [0] = SASCNAME [SALX]; 
      DB$MSG (CLSMSG);
  
# IF ERROR OCCURRED OUTPUT DAYFILE MESSAGE                             #
  
      IF JLFES [0] NQ 0  THEN 
        BEGIN 
            EM1SCNAM [0] = SASCNAME [SALX]; 
            DB$MSG (EMSG1); 
        END 
  
          IF NOT JLFDSL [0]  THEN       # EXTEND LOG FILE IF RMS       #
            BEGIN 
              LFN = JLFLFN [0]; 
              DB$EXT (LFN,ERRCODE); 
            END 
          RETURN; 
      END 
      CONTROL EJECT;
  
# S T A R T O F D B $ C L O G E X E C U T A B L E C O D E              #
  
  
# SCAN THE ENTIRE SAL FOR ENTRIES WHICH HAVE JOURNAL LOG SUB-ENTRIES.  #
# FOR EACH INDICATED PRIMARY AND SECONDARY JOURNAL LOG, CALL "CLOSEM". #
# FOR EACH QUICK RECOVERY LOG CALL "DB$QLCL".                          #
  
      FOR SALX=0 STEP 1 UNTIL SALL  DO
        BEGIN 
          J = SAJLFPTR[SALX];           # PRIMARY LOG FILE             #
          JLOGCL; 
          J = SAJLBPTR [SALX];          # SECONDARY JOURNAL LOG        #
          JLOGCL; 
        END 
  
      $BEGIN                 #DEBUG TRACE#
      XREF PROC DB$TRCZ;
      DB$TRCZ;
      $END
  END 
      TERM
