*DECK     NVFUROS 
USETEXT  TXVCBNV
PROC NVFUROS(VCBORD,STATS); 
# TITLE NVFUROS - RETURNS VCB ORDINAL STATUS(FREE/BUSY). #
  
      BEGIN    # NVFUROS #
# 
**    NVFUROS - RETURNS VCB ORDINAL STATUS(FREE/BUSY).
* 
*     A. LIM    81/07/21
*     C. BRION  82/06/22
* 
*     THIS PROCEDURE RETURNS THE STATUS(FREE/BUSY) OF VCB ORDINAL.
* 
*     PROC NVFUROS(VCBORD,STATS)
* 
*     ENTRY    VCBORD = VCB ORDINAL 
* 
*     EXIT     STATS = STATUS OF VCB ORDINAL
*                      1 = FREE, AND 0 = BUSY.
* 
*     NOTES    NONE 
* 
*     METHOD   1) VERIFY IF VCB ORDINAL IS LEGAL. 
*              IF NOT, ISSUE DAYFILE MESSAGE, AND 
*              ABORT NVF.  ELSE RETURN THE STATUS 
*              OF VCB ORDINAL.
* 
# 
  
  
# 
****  PROC NVFUROS XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        PROC ABORT;                    # MACREL - ABORT TASK           #
        PROC MESSAGE;                  # MACREL - ISSUE MESSAGE        #
        PROC SSBTBW;                   # SS - TEST BIT IN WORD         #
        FUNC XCDD C(10);               # MACREL-CNVRT INT TO DEC DSP CD#
        END 
# 
****
# 
  
  
  
      # FORMAL PARAMETERS # 
  
      ITEM VCBORD    I; 
      ITEM STATS     B; 
  
  
      # ACTUAL PARAMETERS # 
  
      ITEM WORD       I;
      ITEM BITN       I;
  
  
      # INDUCTION VARIABLES # 
  
      ITEM I          I;               # DUMMY                         #
  
  
      # ITEMS # 
  
      ITEM TEMP       C(10);
  
  
  
  
  
      WORD = 0; 
      BITN =VCBORD; 
      FOR I = 0 WHILE (BITN-48) GR 0    # CONVERT ORDNL TO WORD/BIT    #
      DO
        BEGIN 
        BITN = BITN -48;
        WORD = WORD + 1;
        END 
  
  
#     VERIFY VCB ORDINAL               #
      $BEGIN
      IF    WORD GR VTSIZE$ 
         OR (BITN - BITN/MAXENSEC$ * MAXENSEC$) EQ 0
         OR (BITN - BITN/MAXENSEC$ * MAXENSEC$) GR ACTENSEC$
      THEN
        BEGIN 
        TEMP = XCDD(VCBORD);
        V$MSG[0] = "ILLEGAL VCB ORDINAL = ";
        V$ORD[0] = C<7,3>TEMP;
        V$PID[0] = "NVFUROS"; 
        MESSAGE(VCBMSG[0],DFILE$);
        ABORT;
        END 
      $END
  
      SSBTBW(VOT[WORD],BITN,STATS);    # GET STATUS OF VCB ORDINAL     #
      RETURN; 
  
      END  # NVFUROS #
  
      TERM
