*DECK     NVFURDS 
USETEXT  TXVCBNV
PROC NVFURDS(VCBORD,STATS); 
# TITLE NVFURDS - RETURNS VCB DATA STATUS(VALID/INVALID). # 
  
      BEGIN    # NVFURDS #
# 
**    NVFURDS - RETURNS VCB DATA STATUS(VALID/INVALID). 
* 
*     A. LIM    81/07/21
*     C. BRION  82/06/22
* 
*     THIS PROCEDURE RETURNS THE STATUS(VALID/INVALID) OF 
*     VCB DATA IN VCB-VALID-DATA-INDICATOR-TABLE(VDT).
* 
*     PROC NVFURDS(VCBORD,STATS)
* 
*     ENTRY    VCBORD = VCB ORDINAL 
* 
*     EXIT     STATS = STATUS OF THE ORDINAL
*                      1 = INVALID, AND 0 = VALID.
* 
*     NOTES    NONE.
* 
*     METHOD   1) VERIFY IF VCB ORDINAL IS LEGAL. 
*              IF NOT, ISSUE DAYFILE MESSAGE AND ABORT NVF. 
*              ELSE, RETURN THE STATUS OF THE ORDINAL.
* 
# 
  
  
# 
****  PROC NVFURDS 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; 
  
  
      # ACTUAL PARAMETERS # 
  
      ITEM WORD       I;
      ITEM BITN       I;
      ITEM STATS      B;
  
  
      # 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] = "NVFURDS"; 
  
        MESSAGE(VCBMSG[0],DFILE$);
        ABORT;
        END 
      $END
  
      SSBTBW(VDT[WORD],BITN,STATS);    # GET VCB DATA STATUS           #
      RETURN; 
  
      END  # NVFURDS #
  
      TERM
