*DECK     NVFUAFV 
USETEXT  TXVCBNV
PROC NVFUAFV(VCBORD,ERROR); 
# TITLE NVFUAFV - ASSIGNS A FREE VCB ORDINAL. # 
  
      BEGIN  # NVFUAFV #
# 
**    NVFUAFV - ASSIGNS A FREE VCB ORDINAL. 
* 
*     A. LIM    81/07/21
* 
*     THIS PROCEDURE ASSIGNS A FREE VCB IF ONE IS AVAILABLE.
* 
*     PROC NVFUAFV(VCBORD,ERROR)
* 
*     ENTRY    NONE 
* 
*     EXIT     VCBORD = VCB ORDINAL ASSIGNED
*              ERROR = FALSE/TRUE, ASSIGNED/NOT-AVAILABLE 
* 
*     NOTES    NONE 
* 
*     METHOD   SEARCH VCB-ORDINAL-TABLE(VOT) FOR A FREE VCB ORDINAL.
*              IF FOUND, MARK IT BUSY, INCREMENT ACTIVE-VCB-COUNT 
*              (AVCBCNT), AND RETURN THE VALUE OF THE ORDINAL, ELSE 
*              EXIT WITH ERROR = TRUE.
* 
# 
  
  
  
# 
****  PROC NVFUAFV XREF BEGIN.
# 
      XREF
        BEGIN 
        PROC SSBFPB;                   # SS - FIND PRORITY BIT         #
        PROC SSBCBW;                   # SS - CLEAR BIT IN WORD        #
        END 
# 
****
# 
  
      # FORMAL PARAMETERS # 
  
      ITEM VCBORD     I;               # VCB ORDINAL                   #
      ITEM ERROR      B;               # ERROR CODE                    #
  
  
      # ACTUAL PARAMETERS # 
  
      ITEM WORD       I;               # WORD BIT IN                   #
      ITEM BITN       I;               # BIT NUMBER WITHIN WORD        #
  
  
  
  
  
      FOR WORD = 0 STEP 1 UNTIL VTSIZE$    #SEARCH VOT FOR A FREE VCB # 
      DO
        BEGIN 
        IF VOT$WORD[WORD] NQ 0 THEN 
          BEGIN                        # FOUND                         #
          SSBFPB(VOT[WORD],BITN);      # LOCATE THE FREE VCB           #
          VCBORD = 48 * WORD +BITN;    # RETURN THE VCB ORDINAL        #
          ERROR = FALSE;               # WITH NO ERROR                 #
          SSBCBW(VOT[WORD],BITN);      # MARK THE ORDINAL BUSY         #
          AVCBCNT = AVCBCNT + 1;       # INCR COUNT OF ACTIVE VCB      #
          GOTO EXIT;
          END 
        END 
  
      ERROR = TRUE; 
EXIT: 
      RETURN; 
  
      END  # NVFUAFV #
      TERM
