*DECK DB$SR12 
USETEXT UTMPTTX 
USETEXT MD10CTX 
USETEXT MDBCMTX 
  PROC DB$SR12; 
    BEGIN 
 #
  *   DB$SR12 - DELETE A SCHEMA FROM DIRECTORY   PAGE  1
  *   M. D. SAXE                                 DATE  03/31/76 
  *   J. G. SERPA - MDU 2.3 ENHANCEMENTS         DATE  07/22/80 
  
  DC  PURPOSE 
  
      TO DELETE A SCHEMA ENTRY FROM THE SCHEMA DIRECTORY. 
  
  DC  ENTRY CONDITIONS
  
      SCHEMA NAME MUST BE STORED IN THE TEMPORARY CELL - SCHNAME -
  
  DC  EXIT CONDITIONS 
  
      THE SOUGHT AFTER SCHEMA ENTRY IN THE SCHEMA DIRECTORY HAS BEEN
      ZEROED OUT. 
  
  DC  CALLING ROUTINES
  
      DB$STD - SYNTAX TABLE DRIVER
  
  DC  CALLED ROUTINES 
  
 #
      XREF
        BEGIN 
 #                                                                     #
        PROC DB$DIAG;        # DIAGNOSTIC PROCESSOR                    #
        PROC DB$EROD;        # CRM ERROR ON OLD MD                     #
        PROC DB$NO;          # RETURNS TO STD - NO SIDE                #
        PROC DB$WGET;        # READS THE MASTER DIRECTORY (WA)         #
        PROC DB$MDDP;        # DELETES PFN ENTRIES FROM THE PFN TBLE   #
        FUNC DB$MDSC;        # RETURNS THE WORD ADDRESS OF A SCHEMA    #
                             # DIRECTORY ENTRY.                        #
        PROC DB$FTOD;        # FIT FOR THE OLD MASTER DIRECTORY        #
 #                                                                     #
        END 
  
      CONTROL NOLIST; 
      BASED ARRAY MDSCENTRY [0:0] S(1); 
        BEGIN 
*CALL MDSCDDCLS 
        END 
  
      CONTROL LIST; 
#     LOCAL ITEMS                                                      #
  
      ITEM I;                # SCRATCH ITEM.                           #
      ITEM SCDRWA;           # WORD ADDRESS OF THE SUBJECT SCHEMA      #
                             #  DIRECTORY ENTRY.                       #
 #
  
  DC  DESCRIPTION 
  
      POINT THE SCHEMA DIRECTORY BASED ARRAY TO POINT TO THE FIRST
      DIRECTORY ENTRY 
 #
      P<MDSCENTRY> = SCDRBP + 1;
 #
      CALL THE FUNCTION THAT RETURNS THE WORD ADDRESS OF THE SUBJECT
      SCHEMA DIRECTORY ENTRY. STORE THE RETURNED ADDRESS INTO A TEMP
      CELL. 
 #
      SCDRWA = DB$MDSC; 
 #
      CHECK IF THE SOUGHT AFTER SCHEMA DIRECTORY ENTRY WAS FOUND. 
 #
      IF SCDRWA LS 0 THEN 
        BEGIN 
          DB$DIAG(115,SCHNAME); 
          SCFATAL = 1;
          DB$NO;
        END 
      SCINPRG = MDSCIDNT[SCDRWA]; 
 #
      DELETE ALL PFNS FROM THE PFN TABLE THAT ARE ASSOCIATED WITH THE 
      SCHEMA THAT IS TO BE DELETED. 
 #
      DB$MDDP;
 #
      ZERO OUT THE DIRECTORY ENTRY. 
 #
      FOR I=0 STEP 1 UNTIL DFMDSCDESIZE - 1 DO
        MDSCWRD[SCDRWA + I] = 0;
     DB$NO; 
    END 
  TERM; 
