cdc:nos2.source:nam5871:nvfvwvf
Table of Contents
NVFVWVF
Table Of Contents
- [00005] PROC NVFVWVF(SWTESS)
- [00006] NVFVWVF - WRITE THE VCB FILE.
- [00010] WIRTES THE VCB DATA FROM VWBT BACK TO THE VCB FILE.
- [00051] PROC ABORT
- [00052] PROC MESSAGE
- [00053] PROC NVFVRVF
- [00054] PROC REWRITR
- [00055] PROC SSTATS
- [00056] PROC WRITEW
Source Code
- NVFVWVF.txt
- *DECK NVFVWVF
- USETEXT TEXTNVF
- USETEXT TXVCBNV
- PROC NVFVWVF(SWTESS);
- # TITLE NVFVWVF - WRITE THE VCB FILE. #
- BEGIN # NVFVWVF #
- #
- ** NVFVWVF - WIRTES THE VCB DATA FROM VWBT BACK TO THE VCB FILE.
- *
- * A. LIM. 81/12/04.
- *
- * THIS PROCEDURE WRITES THE VCB DATA FROM *VWBT* BACK TO THE
- * VCB FILE.
- *
- * PROC NVFVWVF(SWTESS)
- *
- * ENTRY *VWBT* (VCB WRITE BLOCK TABLE)IN TEXTNVF CONTAINS
- * BLOCKS(PRUS) OF VCB DATA.
- * *ICFLAG* IS A FLAG INDICATING IF THIS IS INITIAL CALL
- * OF THIS PROC.
- * *VWBTIDX* AND *MXVWBTIDX* IS THE CURRENT INDEX OF VWBT
- * AND THE MAXIMUM INDEX OF VWBT RESPECTIVELY.
- *
- * EXIT FORMAL RETURN PARAMETER ARRAY SWTESS IS SET AS FOLLOWS:
- * - IF ALL DATA IN *VWBT* HAVE BEEN WRITTEN TO VCB FILE,
- * SWTESS IS SET SO THAT PROC *NVFVRVF* IS CALLED WHEN
- * *VRQ* NOT EMPTY.
- * - WHEN WAITING FOR CIO FUNCTION REWRITR TO COMPLETE,
- * SWTESS IS SET SUCH THAT THIS ROUTINE WILL AGAIN BE
- * CALLED WHEN THE FET COMPLETE BIT IS SET.
- *
- * METHOD THIS PROC PROCESSES ONE BLOCK OF DATA FROM *VWBT* AT A
- * TIME. EACH TIME, IT WILL ISSUE A CIO REWRITR
- * FUNCTION TO REWRITE DATA FROM *VWBT* BACK TO DISK
- * FILE, THEN GOES TO SLEEP WAITING FOR THE CIO FUNCTION
- * TO COMPLETE. IT KEEPS PROCESSING DATA IN THIS MANNER
- * UNTIL *VWBT* IS EXHAUSTED.
- #
- #
- **** PROC NVFVWVF - XREF LIST BGEGIN.
- #
- XREF
- BEGIN
- PROC ABORT; # MACREL - ABORT TASK #
- PROC MESSAGE; # MACREL - ISSUE MESSAGE #
- PROC NVFVRVF; # NVF - READ VCB FILE #
- PROC REWRITR; # MACREL - REWRITE END OF RECORD #
- PROC SSTATS; # SS-ALLOCATE TABLE SPACE (DECRS OR INCRS)#
- PROC WRITEW; # MACREL - WRITE DATA FROM WORKING BUFFER #
- END
- #
- ****
- #
- # ITEM #
- ITEM I I; # INDUCTION VARIABLE #
- ITEM ICFLAG B=TRUE; # FLAG SET IF THIS IS INIT CALL OF PROC #
- ITEM VWBTIDX I; # CURRENT INDEX OF VWBT #
- ITEM MXVWBTIDX I; # MAX VALUE OF THE ABOVE INDEX #
- $BEGIN
- #
- * DAYFILE MESSAGE ARRAY: "VWBT EMPTY - FALSE INVOKE OF NVFVWVF".
- #
- ARRAY VWMSG[00:00] S(4);
- BEGIN
- ITEM VW$MSG C(00,00,36)
- = ["VWBT EMPTY - FALSE INVOKE OF NVFVWVF"];
- ITEM VW$ZERO U(03,18,42) = [0]; # ZERO BYTE TERMINATOR #
- END
- $END
- *CALL SWTESS
- CONTROL EJECT;
- IF VWBLNGTH NQ 0
- THEN
- BEGIN # LOOKING GOOD. VWBT NOT EMPTY #
- IF ICFLAG
- THEN
- BEGIN # INITIAL CALL OF THIS PROC #
- VWBTIDX = 0;# INIT VWBT INDEX TO 0 #
- MXVWBTIDX = VWBLNGTH/VBRECDN$; # CALC MAX VALUE OF VWBT INDX#
- ICFLAG = FALSE; # CLEAR INITIAL CALL FLAG #
- END
- IF VWBTIDX LS MXVWBTIDX
- THEN
- BEGIN # MORE DATA TO PROCESS #
- WRITEW(VCBFET,VWBT[VWBTIDX],VBRECDN$); # TRFR DATA TO C-BUF #
- VB$W[0] = TRUE; # SET W IN VCB FET #
- VB$RR[0] = VWB$RPA[VWBTIDX] + 1; # SET RR IN VCB FET #
- REWRITR(VCBFET,VBLNEOR$); # REWRITE DATA BACK TO VCB FILE #
- VWBTIDX = VWBTIDX + 1; # BUMP VWBT INDEX #
- # WAKE THIS PROC UP AGAIN WHEN CIO REWRITR COMPLETES. #
- STE$ADDR1[0] = LOC(VCBFET);
- STE$ADDR2[0] = 0;
- STE$RTN[0] = LOC(NVFVWVF);
- STE$INIT1[0] = VB$WORD[0];
- STE$CBIT1[0] = FALSE;
- STE$INIT2[0] = 0;
- RETURN; # EXIT #
- END
- ELSE
- BEGIN # DONE PROCESSING VWBT #
- SSTATS(P<VWBT>, -VWBLNGTH); # CLEAR VWBT #
- END
- END
- ELSE
- BEGIN
- $BEGIN # VWBT EMPTY #
- MESSAGE(VWMSG[0],DFILE$);
- ABORT;
- $END
- END
- #
- * SET-UP TO INVOKE NVFVRVF.
- #
- ICFLAG = TRUE; # RESET FLAG FOR NEXT FRESH START-UP #
- STE$ADDR1[0] = LOC(INVVRVF); # WATCH INTERRUPT CELL FOR VRQ #
- STE$ADDR2[0] = 0; # AND WATCH ONLY ONE CELL #
- STE$RTN[0] = LOC(NVFVRVF); # WAKE NVFVRVF UP WHEN VRQ NQ 0 #
- STE$INIT1[0] = 0;
- STE$INIT2[0] = 0;
- END # NVFVRVF #
- TERM
cdc/nos2.source/nam5871/nvfvwvf.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator