*DECK DB$CCLS 
USETEXT UTCITTX 
USETEXT UTCDFTX 
      PROC DB$CCLS; 
  
 #
  
  *   DB$CCLS - CLOSE SUBSCHEMA/SCHEMA FILES     PAGE  1
  *   STEVEN P. LEVIN                            DATE  09/29/75 
  
  DC  PURPOSE 
  
      CLOSE THE SUBSCHEMA AND SCHEMA DIRECTORY FILES, IF POSSIBLE.
  
  DC  ENTRY CONDITIONS
  
      THE FOLLOWING COMMON ITEMS SHOULD HAVE BEEN GIVEN VALID VALUES: 
      STATSCHE - SCHEMA DIRECTORY FILE STATUS 
      STATSUBS - SUBSCHEMA DIRECTORY FILE STATUS
      IN ADDITION, DE$FTSB SHOULD CONTAIN THE SUBSCHEMA DIRECTORY FIT,
      AND DE$FTSC SHOULD CONTAIN THE SCHEMA DIRECTORY FILE INFO TABLE.
  
  DC  EXIT CONDITIONS 
  
      UPON NORMAL RETURN FROM DB$CCLS, IF STATSUBS WAS 3 OR 4 (OPEN 
      WAS TRIED OR OPENED OK AND IN USE), THE SUBSCHEMA DIRECTORY FILE
      WILL BE CLOSED AND STATSUBS WILL BE SET TO 5 (FILE CLOSED OKAY).
      SIMILARLY, IF STATSCHE WAS 3 OR 4 (SCHEMA OPEN), THE SCHEMA 
      DIRECTORY FILE WILL BE CLOSED AND STATSCHE WILL BE SET TO 5.
      ALTHOUGH DB$CCLS DOES NOT DIRECTLY DETECT ERRORS, IT DOES SET UP
      THE CRM ERROR EXIT FIELDS SO THAT OTHER PROCS CAN HANDLE ERRORS.
  
  DC  CALLING ROUTINES
  
      DB$CBLD - CONDENSED SCHEMA/SUBSCHEMA TABLE BUILDER MAIN MODULE
      DB$CERR - ERROR MESSAGE AND RETURN HANDLER FOR FATAL ERRORS 
  
  DC  CALLED ROUTINES 
  
      DB$WCLS - CALL CYBER RECORD MANAGER TO CLOSE AND REWIND A FILE
  
  DC  NON-LOCAL VARIABLES 
  
      STATSCHE - SCHEMA DIRECTORY FILE STATUS (SET TO 5 IF CLOSED OK) 
      STATSUBS - SUBSCHEMA DIRECTORY FILE STATUS (SET TO 5 IF CLOSED) 
  
  DC  DESCRIPTION 
  
      IF STATSUBS IS 3 OR 4 CLOSE THE SUBSCHEMA AND SET STATSUBS TO 5.
*     IF STATSCHE IS 3 OR 4, CLOSE THE SCHEMA AND SET STATSCHE TO 5.
      RETURN WITH THE SUBSCHEMA AND SCHEMA FILES CLOSED, IF POSSIBLE. 
  
 #
        CONTROL EJECT;
  
        BEGIN                # DB$CCLS #
  
# THE FOLLOWING ARE EXTERNALLY REFERENCED PROCEDURES AND ARRAYS # 
  
        XREF PROC DB$CESB;   # SUBSCHEMA FILE CRM ERROR HANDLER # 
        XREF PROC DB$CESC;   # SCHEMA FILE CRM ERROR HANDLER #
        XREF PROC DB$WCLS;   # CALL CRM TO CLOSE AND REWIND A FILE #
        XREF ARRAY DE$FTSB;; # SUBSCHEMA DIRECTORY FILE INFORM. TABLE#
        XREF ARRAY DE$FTSC;; # SCHEMA DIRECTORY FILE INFORMATN. TABLE#
  
        CONTROL NOLIST;      # UNLISTED COMDECKS: UTCDFDCLS UTCITDCLS#
        CONTROL LIST;        # RESUME THE LISTING OF THE SOURCE CODE #
  
# ******************************************************************** #
  
# IF STATSUBS IS 3 OR 4, CLOSE THE SUBSCHEMA AND SET STATSUBS TO 5 #
  
        IF STATSUBS EQ 3 OR STATSUBS EQ 4        # IF SUBSCHEMA OPEN #
          THEN               # CLOSE SUBSCHEMA AND SET STATSUBS TO 5 #
            BEGIN 
              XCALL DB$WCLS(DE$FTSB,DB$CESB);    # CLOSE SUBSCHEMA #
              STATSUBS = 5;  # SUBSCHEMA FILE STATUS - CLOSED OKAY #
            END 
  
# IF STATSCHE IS 3 OR 4, CLOSE THE SCHEMA FILE AND SET STATSCHE TO 5 #
  
        IF STATSCHE EQ 3 OR STATSCHE EQ 4        # IF SCHEMA IS OPEN #
          THEN               # CLOSE THE SCHEMA AND SET STATSCHE TO 5#
            BEGIN 
              XCALL DB$WCLS(DE$FTSC,DB$CESC);    # CLOSE SCHEMA FILE #
              STATSCHE = 5;  # SCHEMA FILE STATUS - CLOSED OKAY # 
            END 
  
# RETURN WITH THE SUBSCHEMA AND SCHEMA FILES NOW CLOSED, IF POSSIBLE #
  
        RETURN;              # SUBSCHEMA/SCHEMA CLOSED OR UNCLOSABLE #
  
        END                  # DB$CCLS #
  
      TERM
