*DECK DB$MDSC 
USETEXT UTMPTTX 
USETEXT MD10CTX 
USETEXT MDBCMTX 
  FUNC DB$MDSC; 
    BEGIN 
 #
  *   DB$MDSC - SEARCHES THE SCHEMA DIRECTORY    PAGE  1
  *   M D SAXE                                   DATE  03/24/76 
  
  DC  PURPOSE 
  
      TO SEARCH THE SCHEMA DIRECTORY FOR A SPECIFIC ENTRY.
  
  DC  ENTRY CONDITIONS
  
      THE SOUGHT AFTER SCHEMA NAME MUST BE STORED IN THE COMMON 
      (DB$10MC) CELL SCHNAME. 
  
  DC  EXIT CONDITIONS 
  
      THE LOCATION OF THE SCHEMA DIRECTORY ENTRY IS PASSED BACK TO
      THE CALLING ROUTINE IF A MATCH WAS FOUND, ELSE -1 IS PASEED BACK. 
  
  DC  CALLING ROUTINES
  
      DB$SR18 - INITIALIZES THE SCHEMA INFO TABLE, AREA DIRECTORY,
                AREA INFO TABLE AND PROC LIST FOR A MODIFICATION RUN. 
  
  DC  CALLED ROUTINES 
  
      NONE
  
  DC  NON-LOCAL VARIABLES 
  
 #
  
#     THE FOLLOWING COMDECKS ARE UNLISTED: MDSCDDCLS                   #
  
      CONTROL NOLIST; 
  
      BASED ARRAY MDSCENTRY [0] S(1); 
        BEGIN 
*CALL MDSCDDCLS 
        END 
 #
  
  DC  DESCRIPTION 
  
 #
  
      CONTROL LIST; 
 #
  
      LOCAL ITEMS 
  
 #
  
      ITEM I;                # SCRATCH ITEM                            #
  
 #
      POINT THE SCHEMA BASED ARRAY TO THE FIRST ENTRY IN THE SCHEMA 
      DIRECTORY.
 #
      P<MDSCENTRY> = B<42,18>SCDRBP + 1;
  
 #
      SCAN THRU THE SCHEMA DIRECTORIES LOOKING FOR A MATCH. 
 #
  
      FOR I=0 STEP DFMDSCDESIZE WHILE I NQ SCHDRSZ DO 
        BEGIN 
          IF SCHNAME EQ MDSCNAME[I] THEN
            BEGIN 
              DB$MDSC = I;
              RETURN; 
            END 
        END 
  
 #
      IF NO MATCH WAS FOUND (SCHEMA ENTRY NOT IN DIRECTORY),
        SET FUNCTION TO -1. 
 #
      DB$MDSC = -1; 
      RETURN; 
    END 
  TERM; 
