*DECK DB$SR13 
USETEXT UTMPTTX 
USETEXT MD10CTX 
USETEXT MDBCMTX 
USETEXT CUGBATX 
  PROC DB$SR13; 
    BEGIN 
 #
  *   DB$SR13 - DELETE SUBSCHEMA FROM DIRECTORY  PAGE  1
  *   M. D. SAXE                                 DATE  04/22/76 
  *   A. W. LO                                   DATE  05/08/77 
  
  DC  PURPOSE 
  
      DELETE A SUBSCHEMA FROM THE OLD MASTER DIRECTORY FILE 
  
  DC  ENTRY CONDITIONS
  
      SUB-SCHEMA NAME MUST BE IN THE CELL  -SUBNAME-
  
  DC  EXIT CONDITIONS 
  
      IF THE SUBSCHEMA WAS FOUND IT HAS BEEN DELETED, OTHERWISE 
      DIAGNOSTIC 117 HAS BEEN ISSUED. 
  
  DC  CALLING ROUTINES
  
      DB$STD - SYNTAX TABLE DRIVER
  
 DC     CALLED ROUTINES 
  
 #
      XREF
        BEGIN 
 #                                                                     #
        PROC DB$DIAG;        # DIAGNOSTIC PROCESSOR                    #
        PROC DB$NO;          # RETURNS TO THE NO SIDE OF STD           #
 #                                                                     #
        END 
  
 #
 DC     NON-LOCAL VARIABLES MODIFIED
 #
      BASED ARRAY CSTSSTBL S(1);       # SUB-SCHEMA DIRECTORY          #
        BEGIN 
*CALL MDSBDDCLS 
        END 
 #
  DC  LOCAL VARIABLES 
 #
      ITEM I;                # SCRATCH ITEM                            #
      ITEM J;           #SCRATCH ITEM                                  #
      ITEM K;           #SCRATCH ITEM                                  #
      ITEM NXTSSPTR;         # POINTS TO THE NEXT CST DIRECTORY ENTRY. #
      ITEM SSPTR;            # POINTER USED TO INDEX THE SUB-SCHEMA DIR#
  
 #
  DC  DESCRIPTION 
 #
 #
      POINT THE SUB-SCHEMA DIRECTORY BASED ARRAY TO THE FIRST SUB-SCHEMA
      ENTRY.
 #
      P<CSTSSTBL> = B<42,18>CSTDIRBP + 1 + DFCSTSSHD; 
 #
      INITIALIZE THE SUB-SCHEMA DIRECTORY POINTER.
 #
      SSPTR = 0;
 #
      SEARCH THE SUBSCHEMA DIRECTORY FOR THE SUBSCHEMA TO BE DELETED. 
 #
      FOR I=1 STEP 1 UNTIL CSTDCNT DO 
        BEGIN 
        IF SUBNAME EQ MDSBNAME[SSPTR] THEN   #IF WE FOUND THE ONE THEN #
                                             #DELETE IT BY WRITING OVER#
          BEGIN                              #WITH SUCCEEDING ENTRIES  #
          NXTSSPTR = SSPTR + DFCSTSSEN;      #IN DIRECTORY             #
          FOR K = I STEP 1 UNTIL CSTDCNT DO  #DO THIS FOR ALL SUCCEEDIN#
            BEGIN                            #D  SUBSCHEMA ENTRIES     #
              P<PUTENTRY> = CSTDIRBP + 1 + DFCSTSSHD + SSPTR  - 1 ; 
              P<GETENTRY> = CSTDIRBP + 1 + DFCSTSSHD + NXTSSPTR  - 1; 
            FOR J = 1 STEP 1 UNTIL DFCSTSSEN DO 
              PUTUNSIG[J] = GETUNSIG[J];
            SSPTR = SSPTR + DFCSTSSEN;
            NXTSSPTR = NXTSSPTR + DFCSTSSEN;
            END 
  
          CSTDCNT = CSTDCNT - 1;   # DECREMENT NUMBER OF SUBSCHEMAS    #
          DB$NO;                   # RETURN TO STD                     #
  
          END 
  
        SSPTR = SSPTR + DFCSTSSEN;
        END 
      DB$DIAG(117,SUBNAME); 
      DB$NO;
    END 
  TERM; 
