*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