cdc:nos2.source:nam5871:txvcbnv
Table of Contents
TXVCBNV
Table Of Contents
- [00002] PROC TXVCBNV
- [00003] TXVCBNV - VCB I/O SYMPL TEXT FOR NVF.
- [00007] VCB I/O SYMPL TEXT FOR NVF.
- [00062] VCBIO - A COMMON BLOCK FOR VCB I/O PROCESSING.
- [00073] TVRQ - TEMPLATE FOR VCB READ REQUEST QUEUE.
- [00178] AVST - ACTIVE-VCB-SERIAL-SEARCH-REQUEST-TABLE.
- [00221] VOT AND VDT - VCB ORDINAL TABLE AND
- [00263] VCBFET AND VCBBUFR - FET AND CIRCULAR BUFFER FOR THE VCB.
- [00296] VCBWSA - WORKING STORAGE AREA FOR 1 PRU OF VCB DATA.
Source Code
- TXVCBNV.txt
- *DECK TXVCBNV
- PROC TXVCBNV;
- # TITLE TXVCBNV - VCB I/O SYMPL TEXT FOR NVF. #
- BEGIN # TXVCBNV #
- #
- ** TXVCBNV - VCB I/O SYMPL TEXT FOR NVF.
- *
- * A. LIM. 81/11/04.
- * C. BRION. 82/06/22.
- *
- * THIS PROC GENERATES A SYMPL TEXT FOR COMPILING NVF ACCESS VCB
- * FILE ROUTINES. IT CONTAINS DEFINITIONS OF SYMBOLS, ITEMS, ARRAYS
- * AND COMMON BLOCKS USED FOR THOSE ROUTINES AND VCB I/O PROCESSING.
- *
- * PROC TXVCBNV
- #
- CONTROL STEXT;
- #
- ****
- #
- # *** AVRT *** #
- DEF AVRTMAX$ # 9 #; #AVRT UPPER BOUND = 10 PRUS #
- DEF RDWRITE$ # 0 #; #READ-TYPE: READ FOR A WRITE #
- DEF RDREAD$ # 1 #; # READ FOR READ DATA #
- DEF RDSS$ # 2 #; # READ FOR A SERIAL SEARCH #
- DEF MARKED$ # 5 #; # TYPE 0 CONVERTED TO MARKED$ AFTER PROCD #
- # *** READLIST *** #
- DEF RLMAX$ # 10 #; #READLIST UPPER BOUND (ALSO BOUNDS AVRT) #
- # *** VCB FILE *** #
- DEF VBESIZ$ # 8 #; # VCB ENTRY SIZE #
- DEF VBMXENTRY$ # 7 #; # MAX NO OF VCB ENTRIES PER PRU #
- DEF VBRECD$ # 56 #; # VCB RECORD = VBMXENTRY X VBESIZ$ #
- DEF VBRECD1$ # 55 #; # VBRECD1$ = VBRECD$ - 1 #
- DEF VBRECDCW$ # 58 #; # VBRECDCW$ = VBRECD$ + 2 CONTROL WORDS #
- DEF VBRECDCW1$ # 57 #; # VBRECDCW1$ = VBRECDCW$ - 1 #
- DEF VBBL$ #280 #; # BLOCK LEN = VBMXENTRY$ X VBESIZ$ X 5 #
- DEF VBLNEOR$ # 0 #; # LEVEL NUMBER = EOR #
- DEF VBFETSIZ$ # 7 #; # VCB FET SIZE: L FIELD = VBFETSIZ$ - 5 #
- DEF VBBUFLIM$ #291 #; # CIO BUF UPPER BOUND = 5 X VBRECDCW$ + 1 #
- DEF PRUSIZ$ # 64 #; # PRU SIZE#
- DEF MAXSEC$ #214 #; # MAX NUMBER OF SECTORS PER TRACK #
- # *** VOT AND VDT (SEE NVFIIVT) *** #
- DEF MAXENSEC$ # 8 #; # MAX ENTRIES/SECTOR #
- DEF ACTENSEC$ # 7 #; # ACTUAL ENTRIES/SECTOR = VBMXENTRY$ #
- DEF BITSWORD$ # 48 #; # USEFUL BITS/WORD IN BITMAP #
- DEF VTSIZE$ # 35 #; # VOT AND VDT TABLE SIZE #
- # = WRDS IN *NVFIIVT* #
- DEF DFILE$ # 0 #; # MESSAGE OPTION - DAYFILE #
- DEF VALID$ # 0 #; # MARK DATA IN *VDT* VALID INDICATOR #
- DEF INVALID$ # 1 #; # MARK DATA IN *VDT* INVALID INDICATOR #
- # *** AVST *** #
- DEF AVSTSIZ$ # 3 #; # AVST ENTRY SIZE #
- DEF MAXSSRD$ # 5 #; # MAX NO OF VCB BLOCKS READ AT A TIME #
- #
- ****
- #
- #
- ** VCBIO - A COMMON BLOCK FOR VCB I/O PROCESSING.
- *
- * VCBIO IS A COMMON BLOCK OF DATA/DATA-STORAGE TO BE USED
- * FOR ALL OF THE VCB I/O PROCESSING ROUTINES.
- #
- COMMON VCBIO;
- BEGIN # VCBIO #
- #
- ** TVRQ - TEMPLATE FOR VCB READ REQUEST QUEUE.
- *
- * TVRQ IS THE TEMPLATE FOR THE ABH PORTION (WORD ONE) OF A VCB ENTRY
- * IT CONTAINS ONLY THOSE FIELDS NEEDED BY NVF ACCESS VCB PROCESS.
- #
- BASED ARRAY TVRQ[00:00] S(1);
- BEGIN
- ITEM TVR$WORD U(00,00,60); #FULL WORD REFERENCE #
- ITEM TVR$TYPE U(00,00,06); #READ REQUEST TYPE #
- ITEM TVR$ORD U(00,06,12); #VCB ORDINAL #
- ITEM TVR$RPA U(00,06,09); #RELATIVE PRU ADDRESS #
- ITEM TVR$ENTRY U(00,15,03); #ENTRY NO WITHIN THE PRU #
- ITEM TVR$QADDR U(00,18,18); #QUEUE ADDRESS #
- END
- #
- ** AVRT AND READLIST- ACTIVE-VCB-READ-REQUEST-TABLE AND VCB READLIST.
- *
- * AVRT CONTAINS VCB READ REQUEST(S) THAT IS CURRENTLY BEING PROCESSE
- * IT IS A FIXED SIZE TABLE WITH ONE WORD PER ENTRY.
- * ITS FIELDS ARE: 1) VCB ORDINAL WHICH IS COMPOSED OF:
- * A) RELATIVE PRU ADDRESS, AND
- * B) ENTRY NUMBER WITHIN THE PRU.
- * 2) READ REQUEST TYPE:
- * A) 0 = READ FOR A WRITE,
- * 5 = TYPE 0 CONVERTED TO 5 AFTER ITS BEEN
- * PROCESSED. USED MERELY BY *NVFVDCD*
- * WHEN SCANING THROUGH *AVRT*.
- * B) 1 = READ FOR READING OF DATA, AND
- * C) 2 = READ FOR A SERIAL SEARCH.
- * 3) QUEUE ADDRESS FOR THE DESTINATION OF DATA.
- * NOTE: FOR READ REQUEST TYPE = 0, THIS FIELD
- * IS IMMATERIAL.
- *
- * PRIOR TO ISSUEING THE READLS FUNCTION, AVRT WILL BE SORTED INTO
- * ASCENDING ORDER BY THE ENTIRE ENTRY. THIS PROVIDES MORE EFFICIENT
- * I/O PROCESSING AND ALSO GUARANTEES WRITE (TYPE 0) PRIORITY OVER
- * READ (TYPE 1).
- *
- * READLIST IS THE ACTUAL READ LIST USED BY THE CIO READLS FUNCTION..
- * IT CONTAINS ONLY NON-DUPLICATED RELATIVE PRU ADDRESS PORTION OF
- * THE SORTED AVRT.
- *
- *
- * THE FOLLOWING IS THE FORMAT OF AN AVRT ENTRY. EACH ENTRY
- * IS 1-WORD LONG.
- *
- *
- * 1 2 3 4 5
- * 012345678901234567890123456789012345678901234567890123456789
- *TEXT
- *T,9/RPA,3/EN,6/TYPE,18/QADDR,24/
- *ENDTEXT
- #
- ARRAY AVRT[00:AVRTMAX$] S(1);
- BEGIN
- #
- ****
- #
- ITEM AVR$WORD U(00,00,60); #FULL WORD REFERENCE #
- ITEM AVR$REQ U(00,00,18); #VCB REQUEST = ORD + TYPE #
- ITEM AVR$ORD U(00,00,12); #VCB ORDINAL #
- ITEM AVR$RPA U(00,00,09); #RELATIVE PRU ADDRESS #
- ITEM AVR$ENTRY U(00,09,03); #ENTRY NUM WITHIN THE PRU #
- ITEM AVR$TYPE U(00,12,06); #READ REQUEST TYPE #
- ITEM AVR$QADDR U(00,18,18); #QUEUE ADDRESS #
- #
- ****
- #
- END
- #
- ** THE FOLLOWING IS THE FORMAT OF A READLIST ENTRY. EACH
- * ENTRY IS 1-WORD LONG.
- *
- *
- * 1 2 3 4 5
- * 012345678901234567890123456789012345678901234567890123456789
- *TEXT
- *T,60/RPA
- *ENDTEXT
- #
- ARRAY READLIST[00:RLMAX$] S(1);
- BEGIN
- #
- ****
- #
- ITEM RL$RPA U(00,00,60); #RELATIVE PRU ADDRESS #
- #
- ****
- #
- END
- ITEM AVCOUNT I; #CURRENT COUNT OF NO OF ENTRIES IN AVRT #
- ITEM RLCOUNT I; #CURRENT COUNT OF NO OF PRUS IN READLIST #
- #
- **
- *E
- ** AVST - ACTIVE-VCB-SERIAL-SEARCH-REQUEST-TABLE.
- *
- * AVST CONTAINS VCB SERIAL-SEARCH REQUEST(VSQ ENTRY) WITH ADDITIONAL
- * DATA THAT IS CURRENTLY BEING PROCESSED.
- * IT IS A FIXED-SIZE TABLE.
- *
- *
- * THE FOLLOWING IS THE FORMAT OF AN AVST ENTRY. EACH ENTRY
- * IS 3-WORDS LONG.
- *
- *
- * 1 2 3 4 5
- * 012345678901234567890123456789012345678901234567890123456789
- *TEXT
- *T,WORD0,36/,3/RC,12/VCBLK,6/WORDP,1/ ,1/M,1/S
- *T,WORD1,60/VALUE
- *T,WORD2,60/MASK
- *ENDTEXT
- #
- ARRAY AVST[00:00] S(AVSTSIZ$);
- BEGIN
- #
- ****
- #
- ITEM AVS$WORD0 U(00,00,60); # WORD 0 REFERENCE #
- ITEM AVS$WORD1 U(01,00,60); # WORD 1 REFERENCE #
- ITEM AVS$WORD2 U(02,00,60); # WORD 2 REFERENCE #
- ITEM AVS$APENDF B(00,35,01); # LAST APPL FLAG #
- ITEM AVS$RSSCNT U(00,36,03); # READ-SS-COUNT #
- ITEM AVS$VCBLK U(00,39,12); # NEXT VCB BLOCK TO READ #
- ITEM AVS$WORDP U(00,51,06); # WORD-POSITION #
- ITEM AVS$MTCHF B(00,58,01); # VCB-MATCH-FLAG #
- ITEM AVS$SGLEF B(00,59,01); # SINGLE-ENTRY-FLAG #
- ITEM AVS$VALUE U(01,00,60); # VALUE TO SEARCH #
- ITEM AVS$MASK U(02,00,60); # MASK FOR THE VALUE #
- #
- ****
- #
- END
- #
- ** VOT AND VDT - VCB ORDINAL TABLE AND
- * VCB VALD DATA INDICATOR TABLE.
- *
- * VOT AND VDT CONTAINS STATUS INFORMATION OF VCB ORDINAL
- * AND VCB DATA RESPECTIVELY. BOTH TABLES ARE IN BIT MAP
- * FORMAT WITH 48 BITS/WORD (BITS 12 - 59) OF POSSIBLE
- * INFORMATION, AND THERE IS A ONE-ONE CORRESPONDENCE
- * BETWEEN THE TWO TABLES, I.E. THE ITH BIT IN THE NTH
- * WORD IN BOTH TABLES STANDS FOR THE SAME VCB ORDINAL.
- * VOT CONTAINS THE STATUS FREE/BUSY OF ALL VCB ORDINALS,
- * WHILE VDT CONTAINS THE STATUS INVALD/VALID OF ALL VCB DATA.
- #
- ARRAY VOT[00:VTSIZE$] S(1);
- BEGIN
- ITEM VOT$WORD U(00,00,60); # FULL WORD REFERENCE #
- END
- ITEM AVCBCNT I; # COUNT FOR ACTIVE VCB ORDINALS IN VOT #
- ARRAY VDT[00:VTSIZE$] S(1);
- BEGIN
- ITEM VDT$WORD U(00,00,60); # FULL WORD REFERENCE #
- END
- #
- * DAYFILE MESSAGE ARRAY: "ILLEGAL VCB ORDINAL = XXX"
- #
- ARRAY VCBMSG[00:00] S(4);
- BEGIN
- ITEM V$MSG C(00,00,22);
- ITEM V$ORD C(02,12,03);
- ITEM V$SPC C(02,30,01) = [" "];
- ITEM V$PID C(02,36,07);
- ITEM V$ZERO C(03,18,42) = [0]; # ZERO BYTE TERMINATOR #
- END
- #
- ** VCBFET AND VCBBUFR - FET AND CIRCULAR BUFFER FOR THE VCB.
- *
- * THE VCB FET AND CIRCULAR BUFFER ARE DEFINED IN A GLOBAL LABELLED
- * COMMON AREA BECAUSE THE VCB IS USED BY BOTH THE INITIALIZATION
- * ROUTINES AND BY THE VCB ROUTINES. THESE ARRAYS ARE COMPILED
- * INTO A TEXT. HENCE, ALL PRESETTING MUST BE DONE AT INITIALIZATION
- * TIME.
- #
- ARRAY VCBFET [00:00] S(VBFETSIZ$);
- BEGIN
- ITEM VB$WORD U(00,00,60); #FIRST WORD OF FET #
- ITEM VB$LFN C(00,00,07); #FILE NAME-- WILL BE *VCB* #
- ITEM VB$LNAT U(00,42,08); #COMB LEVEL NR AND ABN TERM CODE#
- ITEM VB$CODE U(00,50,10); #CIO FUNCTION CODE #
- ITEM VB$CBIT B(00,59,01); #FUNCTION COMPLETE BIT #
- ITEM VB$R B(01,12,01); #RANDOM ACCESS FLAG #
- ITEM VB$L U(01,36,06); #FET LENGTH IN EXCESS OF 5 WORDS#
- ITEM VB$FIRST U(01,42,18); #ADDRESS OF FIRST WORD OF BUFFER#
- ITEM VB$IN U(02,42,18); #NEXT DATA IN POINTER #
- ITEM VB$OUT U(03,42,18); #NEXT DATA OUT POINTER #
- ITEM VB$LIMIT U(04,42,18); #LAST WORD ADDRESS + 1 OF BUFFER#
- ITEM VB$LA U(05,42,18); #LIST ADDRESS #
- ITEM VB$W B(06,30,01); # WRITE-IN-PLACE OPERATION #
- ITEM VB$RR U(06,31,29); #RANDOM REQUEST RELATIVE PRU ADR#
- END
- ARRAY VCBBUFR [00:VBBUFLIM$] S(1);
- BEGIN
- ITEM VBR$WORD U(00,00,60); #FULL WORD REFERENCE #
- END
- #
- ** VCBWSA - WORKING STORAGE AREA FOR 1 PRU OF VCB DATA.
- *
- * VCBWSA IS THE WORKING STORAGE AREA FOR 1 PRU OF VCB DATA.
- * THE PRU IS READ IN BY *NVFVDCD* FROM CIO BUFFER WHICH IS
- * READ IN BY THE READLS FUNCTION ISSUED BY *NVFVRVF*.
- #
- ARRAY VCBWSA[01:VBMXENTRY$] S(VBESIZ$);
- BEGIN
- ITEM VBW$WORD U(00,00,60); # FULL WORD REFERENCE #
- ITEM VBW$ORD U(00,48,12); # VCB ORDINAL #
- ITEM VBW$RPA U(00,48,09); # RELATIVE PRU ADDRESS #
- ITEM VBW$ENTRY U(00,57,03); # ENTRY NO WITHIN THE PRU #
- END
- END # VCBIO #
- END # TXVCBNV #
- TERM
cdc/nos2.source/nam5871/txvcbnv.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator