*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