*DECK DB$SR24 
USETEXT SCANTXT 
USETEXT MD10CTX 
USETEXT UTMPTTX 
USETEXT MDBCMTX 
      PROC DB$SR24; 
  
      BEGIN 
 #
* *   DB$SR24 - CREATE A VDT ENTRY               PAGE  1
* *   J. G. SERPA                                DATE  09/29/80 
* 
* DC  PURPOSE 
* 
*     VALIDATE CURRENT VERSION NAME AND ENTER IT IN THE VDT.
* 
* DC  ENTRY CONDITIONS
* 
*     VERSNAM CONTAINS THE CURRENT VERSION NAME.
*     VERSCNT CONTAINS THE NUMBER OF ENTRIES IN THE VERSION DIRECTORY.
* 
* DC  EXIT CONDITIONS 
* 
*     IF THE CURRENT VERSION NAME IS UNIQUE IT IS ENTERED IN THE
*     VERSION DIRECTORY TABLE, AND EXIT IS TO DB$YES. OTHERWISE, EXIT 
*     IS TO DB$NO.
* 
* DC  CALLING ROUTINES
* 
*     VRSNTRY - ANALYZE VERSION ENTRIES (WITHIN DB$SNTX -SYNGEN-) 
* 
* DC  CALLED ROUTINES 
* 
# 
      XREF PROC DB$DIAG;     # DIAGNOSTIC PROCESSOR                    #
      XREF PROC DB$NO;       # SYNTAX TABLE DRIVER -NO- RETURN         #
      XREF PROC DB$UAWS;     # CMM INTERFACE -ADJUST WORK SPACE        #
      XREF PROC DB$YES;      # SYNTAX TABLE DRIVER -YES- RETURN        #
# 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     VERSCNT IS INCREMENTED BY ONE IF THE VERSION NAME IS UNIQUE.
* 
* DC  DESCRIPTION 
* 
*     THE VERSION DIRECTORY TABLE IS SEARCHED FOR A VERSION NAME THAT 
*     MATCHES THE ONE WHOSE NAME IS IN VERSNAM. IF A MATCH IF FOUND 
*     EXIT IS TO DB$NO. IF NO MATCH IS FOUND (CURRENT VERSION NAME IS 
*     UNIQUE) CALL DB$UAWS TO ADD SPACE TO THE VDT AND THEN ENTER THIS
*     VERSION NAME INTO THE VDT. INCREMENT VERSCNT BY ONE, AND EXIT TO
*     DB$YES. 
* 
 #
  
      BASED ARRAY VERSDIR [0:0] S(DFMDVDEN);  # VERSION DIRECTORY TABLE#
        BEGIN 
*CALL MDVDTDCLS              VERSION DIRECTORY TABLE
        END 
  
#     LOCAL ITEMS                                                      #
  
      ITEM I;                      # INDEX VARIABLE                    #
      CONTROL EJECT;
      P<VERSDIR> = VERDIRBP + 1;  # POSITION VERSION DIRECTORY TABLE   #
      FOR I = 0 STEP 1
        UNTIL VERSCNT - 1 
      DO
        BEGIN 
        IF MDVDTNAME[I] EQ VERSNAM # IF NAMES MATCH                    #
        THEN
          BEGIN 
          DB$NO;                   # DUPLICATE NAME FOUND              #
  
          END 
        END 
      DB$UAWS(LOC(VERDIRBP),DFMDVDEN);  # ADD 1 ENTRY TO THE VDT       #
      P<VERSDIR> = VERDIRBP + 1;
      MDVDTNAME[VERSCNT] = VERSNAM; # ENTER NAME INTO THE VDT          #
      VERSCNT = VERSCNT + 1;       # UP VERSION COUNTER                #
      IF VERSCNT GQ 4096           # IF VERSION LIMIT EXCEEDED         #
      THEN
        BEGIN 
        DB$DIAG(164);              # ISSUE DIAGNOSTIC                  #
        END 
      DB$YES;                      # RETURN TO STD                     #
  
      END 
      TERM
