*DECK DB$SR73 
USETEXT MD10CTX 
USETEXT UTMPTTX 
USETEXT MDBCMTX 
      PROC DB$SR73; 
      BEGIN 
 #
* *   DB$SR73 - COMPLETE VIT FOR CURRENT VERSION PAGE  1
* *   J. G. SERPA                                DATE  09/26/80 
* *   BOB MCALLESTER - TABLE SEGMENTATION        DATE  03/30/84 
* 
* DC  PURPOSE 
* 
*     COMPLETE THE VERSION INFORMATION TABLE FOR THE CURRENT VERSION. 
* 
* DC  ENTRY CONDITIONS
* 
*     AREACNT - CONTAINS THE NUMBER OF ENTRIES IN THE AREA DIRECTORY
*     VERSCNT - CONTAINS THE NUMBER OF ENTRIES IN THE VERSION DIRECTORY 
* 
* DC  EXIT CONDITIONS 
* 
*     THE VERSION INFORMATION TABLE FOR THE CURRENT VERSION HAS BEEN
*     COMPLETED.
* 
* DC  CALLING ROUTINES
* 
*     DB$SNTX - SYNTAX CRACKER (SYNGEN) 
* 
* DC  CALLED ROUTINES 
* 
# 
      XREF PROC DB$NO;             # SYNTAX TABLE DRIVER -NO- RETURN   #
      XREF PROC DB$UAOS;           # ADJUST TABLE OFFSET               #
# 
* 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     A PASS IS MADE THROUGH THE VERSION INFORMATION TABLE FOR THE
*     CURRENT VERSION. FOR EACH EMPTY ENTRY IN THE VIT (VIT IS ORDERED
*     BY AREA IDS) TAKE THE CORRESPONDING ENTRY IN THE VIT FOR THE
*     MASTER VERSION AND COPY IT TO THIS EMPTY SLOT. THEN INCREMENT 
*     THE FIELD IN THE PIT THAT KEEPS TRACK OF THE NUMBER OF VERSIONS 
*     WHICH SHARE THE SAME PERMANENT FILE INFORMATION (MDPITNOVER). 
* 
 #
  
  
      BASED ARRAY VERINFO [0:0] S(DFMDVIEN);  # VERSION INFO TABLE     #
        BEGIN 
*CALL MDVITDCLS              VERSION INFORMATION TABLE
        END 
  
#     LOCAL VARIABLES                                                  #
  
      ITEM I;                      # INDEX TO CURRENT AREA             #
      ITEM IV;                     # INDEX TO CURRENT VERSION          #
      ITEM OFFSET;                 # TABLE OFFSET FOR PIT              #
      ITEM OFFSETV;                # TABLE OFFSET FOR VIT              #
  
  
  
  
#     B E G I N   D B $ S R 7 3   E X E C U T A B L E   C O D E .      #
  
  
      VERSORD = VERSCNT;           # STORE VERSION NAME                #
      OFFSETV = (VERSCNT - 1) * AREACNT   # OFFSET TO CURRENT VERSION  #
                              * DFMDVIEN; 
      P<TLC> = B<42,18>VERINFBP;
      DB$UAOS(OFFSETV);            # ADJUST OFFSET FOR SWAPPED SEGMENTS#
      IV = OFFSETV / DFMDVIEN;     # CONVERT OFFSET TO INDEX           #
      P<VERINFO> = P<TLC> + TLCHLEN[0];  # SET VIT POINTER             #
      FOR I = AREACNT -1 STEP -1 UNTIL 0
      DO
        BEGIN 
        IF MDVIT1WRD[IV + I] EQ 0  # IF SLOT IS EMPTY                  #
        THEN
          BEGIN 
          OFFSETV = 0;             # OFFSET TO MASTER VERSION          #
          P<TLC> = B<42,18>VERINFBP;
          DB$UAOS(OFFSETV);        # LOAD THE MASTER VERSION SEGMENT   #
          MDVIT1WRD[IV + I] = MDVIT1WRD[I];  # COPY FROM MASTER        #
          MDVIT2WRD[IV + I] = MDVIT2WRD[I]; 
  
          P<TLC> = B<42,18>PITBP;  # TLC HEADER FOR THE PIT            #
          OFFSET = MDVITFOFF[IV + I] - DFPITHDR;
  
          DB$UAOS(OFFSET);         # ADJUST OFFSET FOR SWAPPED SEGMENTS#
  
                                   # SET PERM FILE INFO POINTER        #
          P<PFINFO> = LOC(TLC) + TLCHLEN[0] + DFPITHDR + OFFSET;
          IF OFFSET + DFPITHDR LS TLCBSBW[0]
            AND TLCHLEN[0] GR DFTLCHL 
          THEN
            BEGIN 
            TLCDSMF[0] = TRUE;     # SET DISK SEGMENT MODIFIED FLAG    #
            END 
  
          MDPITNOVER[0] = MDPITNOVER[0] + 1; # UPDATE NBR OF VERSIONS  #
          END 
        END 
      DB$NO;
  
      END 
      TERM
