*DECK NVFUMVD
USETEXT TXVCBNV
PROC NVFUMVD(VCBORD,INDICATOR);
# TITLE NVFUMVD - MARKS VCB DATA AS VALID/INVALID. #
BEGIN # NVFUMVD #
#
** NVFUMVD - MARKS VCB DATA AS VALID/INVALID.
*
* A. LIM 81/07/21
* C. BRION 82/06/22
*
* THIS PROCEDURE MARKS THE VCB DATA AS VALID/INVALID.
*
* PROC NVFUMVD(VCBORD,INDICATOR)
*
* ENTRY VCBORD = VCB ORDINAL
* INDICATOR = 0/1 FOR VALID/INVALID.
*
* EXIT VCB DATA MARKED.
*
* NOTES NONE
*
* METHOD 1) VERIFY THAT VCB ORDINAL IS LEGAL,
* 2) VERIFY THAT VCB ORDINAL IS ASSIGNED, AND
* 3) VERIFY THAT VCB ORDINAL IS NOT ALREADY
* IN PRESENT STATE.
* IF EITHER ONE OF THE ABOVE FAILS, ISSUE
* DAYFILE MESSAGE AND ABORT NVF. ELSE
* MARK THE DATA IN VCB-VALID-INDICATOR-TABLE(VDT)
* AS VALID/INVALID.
*
#
#
**** PROC NVFUMVD XREF LIST BEGIN.
#
XREF
BEGIN
PROC ABORT; # MACREL - ABORT TASK #
PROC MESSAGE; # MACREL - ISSUE MESSAGE #
PROC SSBCBW; # SS - CLEAR BIT IN WORD #
PROC SSBSBW; # SS - SET BIT IN WORD #
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 INDICATOR B;
# ACTUAL PARAMETERS #
ITEM WORD I;
ITEM BITN I;
ITEM VOTSTS B; # STATUS OF VCB ORD IN VOT #
ITEM VDTSTS B; # STATUS OF VCB DATA IN VDT #
# 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
#
* 1) VERIFY THAT VCB ORDINAL IS LEGAL,
* 2) VERIFY THAT VCB ORDINAL IS ASSIGNED, AND
* 3) VERIFY THAT VCB ORDINAL IS NOT ALREADY IN PRESENT STATE.
#
$BEGIN
SSBTBW(VOT[WORD],BITN,VOTSTS);
SSBTBW(VDT[WORD],BITN,VDTSTS);
IF WORD GR VTSIZE$
OR (BITN - BITN/MAXENSEC$ * MAXENSEC$) EQ 0
OR (BITN - BITN/MAXENSEC$ * MAXENSEC$) GR ACTENSEC$
OR VOTSTS
OR (INDICATOR AND VDTSTS)
OR (NOT INDICATOR AND NOT VDTSTS)
THEN
BEGIN
TEMP = XCDD(VCBORD);
V$MSG[0] = "ILLEGAL VCB ORDINAL = ";
V$ORD[0] = C<7,3>TEMP;
V$PID[0] = "NVFUMVD";
MESSAGE(VCBMSG[0],DFILE$);
ABORT;
END
$END
IF INDICATOR THEN
BEGIN
SSBSBW(VDT[WORD],BITN); # MARK DATA AS INVALID #
END
ELSE
BEGIN
SSBCBW(VDT[WORD],BITN); # MARK DATA AS VALID #
END
RETURN;
END # NVFUMVD #
TERM