Trailing-Edge
-
PDP-10 Archives
-
BB-Z759A-SM
-
cobol-source/dbsdcl.mac
There are 22 other files named dbsdcl.mac in the archive. Click here to see a list.
; UPD ID= 1499 on 1/22/84 at 11:45 PM by MAGRATH
UNIVERSAL DBSDCL - PARAMETERS FOR DBMS-10 & DBMS-20
SEARCH COPYRT
SALL
; Copyright (C) 1974, 1984 by
; Digital Equipment Corporation, Maynard, Mass.
; *******************************************************************
; NOTE!!! This module is shared by the COBOL and DBMS products. Any
; modification by either group should be immediately reflected in the
; copy of the other group.
; *******************************************************************
SEARCH GENDCL
SEGSYM
;;; ALL DBMS COMPONENTS ARE MAINTAINED AT SAME VERSION
DEFINE DBVER<BYTE (3)CUSVER(9)MAJVER(6)MINVER(18)EDITNO> ;[1100]
DEFINE VERSION(AAA)<
LOC 137
BYTE (3)CUSVER(9)MAJVER(6)MINVER(18)EDITNO
RELOC >
SUBTTL DBCS CONTEXT SWITCHES
;;; I AM NOT SURE IF THERE IS A "CORRECT" WAY TO DO THIS OR IF THIS IS THE CORRECT WAY
;;; BUT THE VARIOUS DBCS-USING UTILITIES DO NEED CERTAIN TAILORED MODULES
;;; IN PARTICULAR, GATE, PORT, & LEAVE
;;; SO, IN THE INTEREST OF MINIMIZING REDUNDANCY
;;; EACH OF THESE (AND EVENTU OTHERS?) WILL BE PREFIXED BY THIS MACRO
DEFINE INIUTIL<
IFNDEF DBINFO,<DBINFO==0>
IFNDEF DBMEND,<DBMEND==0>
IFNDEF V3DBMS,<V3DBMS==0>
IFNDEF DBCONV,<DBCONV==0>
DBCS==1
IFN DBINFO!DBMEND!V3DBMS!DBCONV,<DBCS==0>
IFN DBINFO,<SEARCH INFDCL>
IFN DBMEND,<SEARCH MNDDCL> ;[6%41] V6 uses MNDDCL not MNDSYM
IFN V3DBMS,<SEARCH VTVDCL>
IFN DBCONV,<SEARCH CNVDCL>
>
SUBTTL MISCELLANEOUS SYMBOLS
;;; REC TYP ID'S--MACRO DEFINED IN SCHIO
EXTERN TID.AL,TID.CL,TID.DL,TID.FL,TID.IL,TID.ML,TID.VL,TID.YL ;[6%20]
EXTERN TID.OL,TID.RL,TID.SL,TID.UL,TID.WL,TID.TL,TID.EL,TID.KL
;;; SIMILARLY, THE SET TYPES ARE DEFINED= $ OWNER . MEM
EXTERN $S.A,$S.R,$S.U,$S.E,$S.Y ;[6%20]
EXTERN $R.D,$R.W,$R.O,$R.M
EXTERN $A.W,$D.C,$D.T,$O.M,$O.Y,$M.V,$V.C,$E.K ;[6%20]
; KEY VALUES ASSOCIATED WITH KEYWORDS PASSED AS ARGUMENTS TO DBCS
; THIS IS MASTER DEFINITION -- REFFED EVERYWHERE ELSE
DEFINE KEY(KEYARG),<[$$'KEYARG]> ;MECH OF GETTING AT THEM
HALF==777777 ;NEED HALF WORDS OF THESE GUYS OCCAS
$$ONLY==-^D10
$$SELECT==-^D11
$$FIRST==-^D12
$$LAST==-^D13
$$PRIOR==-^D14
$$NEXT==-^D15
$$DUPLIC==-^D16
;[6%467] Order important for next 4 definitions ($$ALL thru $$SET)
;[6%467] used in range checks for currency suppression arguments
$$ALL==-^D17
$$AREA==-^D18
$$RECORD==-^D19
$$SET==-^D20
$$UPDATE==-^D21
$$RETRIEV==-^D22
$$RUNUNIT==-^D23
$$PROT==-^D24
$$EXCLUSIVE==-^D25
$$CURR==-^D26
$$SHARED==-^D27
$$JOURNAL==-^D28
$$TRANSACTION==-^D29
;;; MISC SYMBOLS PART OF DATA BASE PROCESSING
GREG (BAS,15) ;SCHIO HAS NO STATIC LOW SEG
SKECHN==0
PAGWID==^D26
LINWID==^D35-PAGWID
DPVMOD==1000 ;[6%27] DIR PAG FLAG TO LIVE WITH PAG# IN BH.PAG(TBUF)
SYSNMID==1
SYSTID==40 ;RESERVE THESE FOR SYSTEM USE
TID.ASR==1 ;TID OF AREA-STATUS REC
TIDMAX==777 ;REC TYP ID IS 9 BIT FIELD
DOFFMAX==MAX.XB ;RESTRICT TO THIS VAL PURELY FOR CONVEN...SHOULD BE AMPLE IS 120
USEMAX==20 ;FOR DYN ALLOC OF USE CONDITIONS
TEXMAX==^D100 ;ALLOCATE 20 WORDS A SHOT
LOKMAX==5 ;PRIVACY KEYS/LOCKS, SCAN 5 CHARS ONLY
SIZ.MSK==3 ;[6%19] NUMBER OF MASK WORDS
AREAMAX==<SIZ.MSK*^D36>-1 ;NUM. AREAS REP'ABLE IN BITS AVAIL
;(NEED ONE BIT FOR TABLE RESOURCE)
STKPFRM=^D512 ;[6%22] SIZE OF PAGE STACK FRAME
SHORT==6 ;FORTRAN NAMES MAX LEN
NAMLEN==^D30 ;USUAL MAX NAME LEN
MAXFS20=^D120/CPW
MAXTS20==^D45/CPW ;ALWAYS OF FORM DSK:NAME-ONLY.TMP
MAX.SS==10 ;AT RUN-TIME FOR SETDB/UNSET (RIGHT PLACE?)
FOPSIZ==7 ;FILOP ARG BLK SIZE
TIOSIZ==6 ;[6%27] L/E BLK SIZE FOR TMP AREAS
DF.POLL==^D100000 ;[6%34] DEFAULT POLL RATE IN MSEC
DF.THRESH==^D50 ;[6%34] DEFAULT THRESHOLD IN PAGES
SUBTTL CERTAIN SCHEMA FIELDS CAN TAKE ON A RANGE OF VALUES
;;; USAGE MODES -- EVEN VALS=RETR /ODD=UPDATE
UM.COR==0 ;CONCUR RETR
UM.COU==1 ;CONC UPDATE
UM.PRR==2 ;PROT RETR
UM.PRU==3 ;PROT UPD
UM.EXR==4 ;EXCL RETR
UM.EXU==5 ;EXCL UPDATE
UM.UDED==6 ;EXCLUDED...FOR DBMEND
; *** THE INDIV CASES
UM%OIP==1B0 ;SIGN BIT INDICS OPEN IN PROCESS
UM%TEMP==1B1 ;AREA OPEN FOR TEMP USAGE
UM%ASR=1B2 ;INDIC (DURING OPEN) THAT ASR ACTU UPDATED
UM%CON==1B3
UM%PRO==1B4
UM%EXCL==1B5
UM%RETR==1B6
UM%UPD==1B7
UM%OTH==1B8 ;DBMOC DETERM THAT OTHER R-U CURR HAVE THE AREA OPEN
UM%DIODE=1B9 ;ONE-DIRECTIONAL UM, IE. ONLY CHECK IF SOME ONE ELSE IS UM%CON
UM%AID=1B10 ;[6%27] THERE WAS AN AID FILE REQUEST
UM%XCLU==1B11 ;[6%224] DON'T EVER WRITE IN THIS AREA (DBMEND)
;;; LOCATION MODES
LM.NONE==0 ;NOT POSSIBLE
LM.DIR==1
LM.VIA==2
LM.CAD==3 ;CALC, DUPS ALLOWED
LM.CAND==4 ;CALC, DUPS NOT ALLOWED
;;; [6%19] LOCKING CODES
LK%ARE==1B35 ;USE AREA LOCKS
LK%PAG==1B34 ;USE PAGE LOCKS
LK%RET==1B33 ;LOCK FOR RETRIEVAL (SHARED)
LK%UPD==1B32 ;LOCK FOR UPDATE (EXCLUSIVE)
LK%UPG==1B31 ;UPGRADE LOCK (SHRD TO EXCL)
LK%OPN==1B30 ;LOCK FOR OPEN (USE ENQ/DEQ)
LK%JRN==1B29 ;LOCK FOR JOURNAL
LK%NRL==1B28 ;[6%40] DON'T RELEASE SHARED LOCK
; UNTIL CLOSE TRANSACTION
LK%CBH==1B27 ;[6%142] CLEAR BUFFER HEADER (BH.PAGE)
; AFTER COPYING PAGE NUMBER.
; SET TO INDICATE THAT THE
; BUF. HDR. IS MERELY BEING
; USED TO PASS ARGUMENTS
LK.WAIT==500 ;TIME TO WAIT FOR A LOCK (MILLI-SECS)
;;; SET MEMBERSHIP
SH.AUT==0 ;MEMBERSHIP AUTOMATIC
SH.MAN==1B35
SH.MND==0 ;MANDATORY
SH.OPT==1B34
SH.AM==0
SH.MM==1
SH.AO==2
SH.MO==3
;;; SET ORDERING
OR.NONE==0
OR.1ST==1
OR.LAST==2
OR.NEXT==3
OR.PRIOR==4
OR.SORT==5 ;MEANS NO PHRASE FOLLOWS "ORDER SORTED"
OR.WIN==6 ;"WITHIN" PHRASE FOLLOWS
OR.DBK==7 ;DBKEY PHRASE FOLLOWS
OR.DUP==10 ;DUPS PHRASE FOLLOWS
SRTORD==4 ;NUM OF SORT ORDERINGS
;;; KEY-COMPARISON CONTROL
KC.USER==0 ;DATA FIELDS
KC.KED==1 ;DBKEY OF ACTUAL RECORD
KC.KEX==2 ;DBKEY OF RECORD AS ENCODED IN INDEX BLK
KC.TID==3 ;TID/RECNAME OF RECORD (FROM LINHDR IN EFFECT)
KC.TIX==4 ;TID/RECNAME AS ENCODED IN INDEX BLK
KC.MAX=4
;;; CONTROL OF ORDERING OF DUP RECS
DU.ARB==0 ;ORDER THEM ANY OLD WAY
DU.1ST==1 ;PUT EM FIRST
DU.LAST==2
DU.NOT==3 ;DONT ALLOW
;;; DATA-NAME KEY TYPES
KEY.ASC==1B35
KEY.DESC==1B34
KEY.RANG==1B33 ;IS RANGE KEY
KEY.CALC==1B32
KEY.NORD==1B31 ;ON IF DATUM CTLS MEMBER NOT IN CURR SS
KEY.SOR=1B30 ;IN EFFECT, IMAGE OF VIA.SOR
;;; MEMBER USAGE CTL IS VIA/FOR:
VIA.DIR==1 ;DITTO FOR LM = DIR
VIA.CALC==2 ;DITTO FOR LM = CALC
VIA.MEM==3 ;VIA BLK FROM SOS THRU MEMBER (IE. LM OF OWNER VIA)
VIA.SOR==4 ;THIS VIA BLK ENCODES SORT KEYS
;;; WHAT IS SET OCC SELECT
SOS.CUR==0 ;0 SINCE THE DEFAULT ALSO
SOS.LMO==1
;;; DATA TYPE CONSTANTS
;;; PRECISION/ SCALE CONSTANTS
;;; X=FIXED L=FLOAT B=BIN D=DEC R=REAL C=COMPLEX
; *** BIT COMPONENTS
TY.FLO==1B35
TY.BASE==1B34
TY.PLEX==1B33
; *** ACTUAL POSSIBLE TYPES
DT.STRUC==0 ;NO DATA TYPE MEANS SIZE PHRASE
DT.DBK==^D9
DT.D6==^D10
DT.D7==^D11
DT.D9==^D12
DT.MAX=^D12
ABSXBR==^D35
ABSXDR==^D10
ABSLBR==^D27
XBR.1M==^D35
XBR.1D==^D10 ;SAME THING IN DECIMAL PREC
XBR.2M==^D71
XBR.2D==^D18 ;DITTO BEFORE
XDR.MAX==^D18
;;; THE COMPLEX PREC CHARAS CAN BE DET FROM THE FLOAT COMPON
LBR.1M==^D27
LBR.2M==^D62
SUBTTL EXECUTION-RELATED CONSTANTS
;;; CENTRALLY DEFINE THE SET OF USER ENTRY CLASSES, & CONCOMITANT WITH THAT
;;; EACH VERB (CODASYL STAND) AND EXPLIC ENTRY PT IS GIVEN A CODE
DEFINE VERBS.<
;;; KLUDGE TO GET EXACTLY 2 WORDS PER ENTRY
VERB. (HOST) ;LET THESE HAVE STATUS CODE OF ZERO
VERB. (CLOSE)
VERB. (DELETE)
VERB. (FIND)
VERB. (USER) ;[6%46] FORMERLY "FREE"
VERB. (GET)
VERB. (UNUSED) ;[6%46] FORMERLY "KEEP/RETAIN"
VERB. (INSERT)
VERB. (MODIFY)
VERB. (OPEN)
VERB. (OPNT) ;[6%21] USE UNUSED SLOTS
;[6%21] VERB. (UNUSED)
VERB. (REMOVE)
VERB. (STORE)
VERB. (CLOTR) ;[6%21]
;[6%21] VERB. (UNUSED)
VERB. (DELTR) ;[6%21]
;[6%21] VERB. (UNUSED)
VERB. (BIND)
VERB. (CALL)
>
DEFINE VERB.(TEXT.)<
IFDEF XSTAT.,<
GETLEN <TEXT.>
IFE LEN.-3,<ASCIZ/TEXT. />
IFE LEN.-4,<ASCIZ/TEXT. />
IFE LEN.-5,<ASCIZ/TEXT. />
IFE LEN.-6,<ASCIZ/TEXT. />
IFE LEN.-7,<ASCIZ/TEXT. />
IFE LEN.-8,<ASCIZ/TEXT. />
>
IFNDEF XSTAT.,<FIELD(C.'TEXT.)>
>
VERBS.
BLKSIZ (CODE.V) ;NOT A TRUE SIZE BUT...
;;; SUPPRESS CLAUSE CODES AND BITS
SUP.ALL=$$ALL&HALF
SUP.REC==$$RECORD&HALF
SUP.AREA==$$AREA&HALF
SUP.SET==$$SET&HALF
R.SUP==1B35
A.SUP==1B34
S.SUP==1B33
;;; FIND3 (POSITIONAL) CODES
F3.OFF==1
F3.1ST==$$FIRST&HALF
F3.LAST==$$LAST&HALF
F3.PRIOR==$$PRIOR&HALF
F3.NEXT==$$NEXT&HALF
;;; CLOSE CODES
CL.JRN==$$JOURNAL&HALF
CL.RUN==$$RUNUNIT&HALF
CL.AREA==$$AREA&HALF
CL.ALL==$$ALL&HALF
;;; DELETION CODES
DL.ALL==$$ALL&HALF
DL.ONL==$$ONLY&HALF
DL.SEL==$$SELECTIVE&HALF
DL.SLF==0 ;DELETE JUST SELF, THE IMPLICIT OPTION
;;; OPEN-AREA CODES
OP.PROT==$$PROT&HALF
OP.EXCL==$$EXCL&HALF
OP.RETR==$$RETR&HALF
OP.UPD== $$UPDA&HALF
OP.CON== 0 ;THE IMPLIC OPTION
OP.JRN==$$JOUR&HALF
OP.ALL==$$ALL&HALF
SUBTTL EXECUTION-CONTROLLING FLAGS (SOME DEFINED BY SCHEMA)
;;; FLAG VALUES FOR LEFT HALF OF PORT VECTOR (IE. VFLAGS(X))
; *** IMPORTANT: THESE 3 ACT. FLAGS RESIDE WITH THE VAC. FLAGS IN ACT.XC(SS) AS DETERMINED BY THE USER'S DMCL ENTRIES
; *** BUT THESE HAVE NO IMAGE IN EV.FLAG BUT THE VAC. ONES DO
; *** IN PT OF ACT, EV.FLAG PLACES TOT DIF MEANINGS ON B30-B32
ACT.UAN==1B32 ;UNANTICIPATED EXCEP, EVERYTHING BUT 307=ESA & 326=NRS
ACT.ALL=1B31 ;ANY EXCEPTION
ACT.SYS==1B30 ;THE SYSTEM ERROR (APPROX. 40+)
ACT.JRN==1B29 ;[6%6] SUPPORT OF NOTE JOURNAL
; *** END IMPORTANT
; *** THE DMCL CAN DEFINE ACTIONS FOR EXCEPTIONS ON A VERB BASIS
VAC.UPD==1B35 ;ERROR DURING AN UPDATE VERB
VAC.CALL==1B34 ;ERROR DURING AN EXPLIC CALL (EG. JSTRAN)
VAC.BIND==1B33 ;ERROR DURING BINDING
VACBITS==VAC.UPD!VAC.CALL!VAC.BIND
; *** OTHER VERB-BASED SWITCHES
SCH.IO==1B32 ;TURNED ON TO INDIC X/BAS KLUDGE INVOLVED
OK.NOSS==1B31 ;AT MOMENT SBIND ONLY
OK.SUS==1B30 ;OK TO ENTER AT THIS EP EVEN THO SYS UNDEF STATE
CRU.MUST==1B29 ;CERTAIN VERBS REQUIRE THAT CUR.RU HAVE A VALUE
JR.OVU==1B28 ;ENTRY IS OTHER THAN A VERB UNIT & TOUCHES JOURNAL
;IE. JRDATA/JRTEXT/JSTRAN/JETRAN
;ADDIT, IN DBPORT IT IS TAKEN TO MEAN ANY ENTRY THAT CONTEX ENTERS THIS STATE
;EG. ANY VERB IF NOT JOURNALING
ENQ.J==JR.UPD ;DEFINE AS SAME THING
JR.UPD==1B27 ;DOES THE VERB UPD J (& DATA BASE)
ENQ.X==1B26 ;NEED TO ENQ EXCL IS EQUIV TO JR.UPD EXCEPT
;WHEN (OP/CL) PROCESSING J LAB ONLY
ENQ.SH==1B25 ;ENTRY DOES NO UPDATES BUT DOES ACCESS DB
ENQ.ALT==1B24 ;(EG. OPEN) ENTRY CAN ALTER SIMULT OF R-U, SO PLAY SAFE
;IE. STRONGER THAN ENQ.X
; ENQ.NO==NOT(ENQ.X&ENQ.SH) ;IE. A SERVICE ROUTINE SUCH AS STATS$
; *** NO MORE ROOM IN THIS FLAG VECTOR !!!
;;; INTRA-VERB SWITCHES...
;;; DEFINE LEFT-SIDE SS AS THE FLAG REGISTER WITH THESE FLAGS (18 MAX):
; *** ALSO... LET B0-2 BE COMMAND SPECIFIC (REFFED ONLY IN XXXX$ ENTRY PTS)
; *** USER-RECORD-COMMANDS
LINK.BIT==1B0 ;AT LEAST ONE ACTUAL LINKING OPER (IE.INS/REM) IN THIS VERB
INS.BIT==1B1 ;IS CALL TO CURN.U NECES
CA.BIT==1B2 ;NECESSARY TO (RE)CALC THIS REC BECAUSE ITS KEY HAS CHANGED
; *** BIND CLASS
NAB.BIT==1B0 ;NOOP ACTUBIND (IE. FOR DBINFO VIA SSBIND)
OSS.BIT==1B1 ;GUARAN DON'T PUNISH WRONG SUB-SCH IF BIND FAILURE
; UNUSED==1B2
; *** OPEN CLASS
XCLU.BIT==1B0
FOPN.BIT==1B1 ;ALLOW FH.STAT IN ASR TO BE -1
JRO.BIT==1B2 ;[6%41] Open journal read only
; *** CLOSE CLASS ;[6%127]
ITR.BIT==1B0 ;[6%127] INCOMPLETE TRANSACTION
; REMAINS IN THE JOURNAL
; UNUSED==1B1
; UNUSED==1B2
; *** CALL CLASS ;[6%41]
TRC.BIT==1B0 ;[6%41] TRACE TRANSACTIONS
; UNUSED==1B1 ;[6%41]
; UNUSED==1B2 ;[6%41]
; *** THOSE NOT COMMAND-SPECIFIC
RB.BIT==1B3 ;FORCE TMP.RB TO BE UPDATED
CNEX.BIT==1B4 ;HAVE USED A CANON-NEXT PTR IN GDETTB
NORD.BIT==1B5 ;SET IN DBKITM TO INDIC A CTLER OF INVIS SORTED-SET MODDED
JRV.BIT==1B6 ;JOURNALING BY VERB
BMO.BIT==1B7 ;BUFFER HAS BEEN MODDED
DMO.BIT==1B8 ;DSK HAS BEEN MODDED
XWX.BIT==1B9 ;IF ON AT DBSABO, MEANS HAVE GOTTEN EXCEPTION WHILE PROC EXCEP
UKY.BIT==1B10 ;USER-INTRODUCED DATA BASE KEYS MUST BE SPECIAL CASED
UCR.BIT==1B11 ;UNABLE TO COMPL RESTOR IF ON WHEN EXCEP OCCURS
VRO.BIT==1B12 ;[6%101] THIS VERB IS RETRIEVAL
;...ONLY
MND.BIT==1B13 ; [6%41] Called from DBMEND
DEQ.BIT==1B14 ;THIS VERB MUST CALL IU.DEQ IF ON IN DBLEAV
EOF.BIT==1B15 ;SET WHEN A PAGE ACCESS (IN GET.OS) IS BEYOND EOF
DFT.BIT==1B16 ;[6%19]INDICATES DEFAULT TRN OPN
NJE.BIT==1B17 ;DON'T WRITE TRAILER IN JRN
;;; SUB-SCHEMA STATUS WORD (IE. INTER-VERB SWITCHES)
; *** PERM LOC IS PSW(SS) (IE. PROGRAM-STATUS-WORD PER SS)
; *** RIGHT SIDE ONLY, IE. JUST 18 SWITS AT MOST
; *** INTRA-VERB LOC IS THE LEFT-SIDE OF REG X
PSW.TR==1B35 ;CHKPTING FOR TRANS ONLY
PSW.VER==1B34 ;CHKPTING PER VERB
PSW.CBUU==1B33 ;CANT BACKUP UPDATES
PSW.SUS==1B32 ;SYS IN UNDEF STATE (EG. AFTER ERROR AND CBUU SET)
PSW.MTA==1B31 ;MTA JOURNAL
;[1107] PSW.MTA never set in V6 or later
PSW.JOSH==1B30 ;JOURNAL RETAINED SHARED
PSW.LIM==1B29 ;ACTIVE TRANSAC LIM
PSW.TAC==1B28 ;ON IF "BETWEEN" JSTRAN&JETRAN
PSW.RESH==1B27 ;ONE OR MORE AREAS OP IN RETR OR UPD U-M
;IE. ANY "VULNERABLE" SHARED AREAS (INCL J)
PSW.UPSH==1B26 ;1 OR MORE AREAS OPENED PRU OR COU
;IE. YOUR UPDATES CAN AFFECT OTHER R-U
PSW.ENQ==1B25 ;TURNED ON/OFF ONLY BY IU.ENQ AND IU.DEQ
PSW.CNV==1B24 ;INDIC DEALING WITH CONVERSION DB...NAME.??N
PSW.RAN==1B23 ;[6%101] RETRIEVAL ACCESS TO
; ...NON-EXISTENT PAGES ALLOWED
; ... (BUT NOT PAGE CREATION)
PSW.JRET==1B22 ;J OPENED ONLY FOR RETR
PSW.EAV==1B21 ;ENVIRONMENT ALTERING VERB(OPEN,CLOSE)
PSW.AFE==1B20 ;[6%126] AID FILE EMPTY. SET WHEN AID
; FILE CREATED CLEARED ON FIRST
; CALL TO PUT.RDY
PSW.NRL==1B19 ;[6%323] SET BY DBMEND /DEL TRAN
; MEANS DONT RELEASE LOCKS AT CLODEF
SUBTTL GENERAL STRUCTURES OF THE DATA BASE SYSTEM
;;; FORMAT OF AN AREA STATUS REC (ALWAYS 1STP/1 OF AREA)
;;; STATUS REC IS IN EFFECT FILE(AREA) HEADER
FIELD (FH.STAT) ;0 IF OK, "UNDEF" IF EDITS IN PROGRESS
BYTES (FH,<<FLG,^D18>,<UNU,^D18>>) ;[6%26]
FH%AID==1B17 ;[6%27] AREA WANTS AN AID FILE
FH%PRS==1B16 ;[6%27] OPEN UPDATE NOT SUPERCEDE
;[6%27] CLOSE BUT DONT DELETE TMP FILE
FH%NPR==FH%AID ;[6%27] ALL FLAGS BUT "PRS"
BLKSIZ (SIZ.FH)
;;; FORMAT OF A PAGE'S PAGHDR
FIELD (PH.NUM) ;PAG NUM OF THIS PAGE
BYTES (PH,<<HUSE,^D18>,<1STF,^D18>>)
;HUSE IS HIGHEST LIN NUM USED SO FAR
;THE (1STF)TH WORD OF THE PAGE IS THE 1ST TO CONTAIN NO DATA
BLKSIZ (PH.CALC) ;(FIXED) SIZED IS ALSO OBV OFFS OF THAT WHICH FOLLOWS: 0-N CALC BUCK WORDS
;;; FORMAT OF A LINE HDR
WORD (LH,<<RSIZ,^D12>,<TID,^D9>,<OFFS,^D15>>)
;;; FORMAT OF A DATABASE KEY
WORD (DBK,<<SIGN,1>,<PAG,PAGWID>,<LIN,LINWID>>)
SUBTTL SORTED-SETS
;;; CONSTANTS
TID.XB==2 ;UPPER LEVEL INDEX BLK
TID.XL==3 ;LEAF INDEX BLK (PTS AT DATA RECORDS)
TID.X6L==4 ;[6%20] VERSION 6 THIS BUOY HAS OWNER PTR
MAX.XB==^D120 ;INDEX BLKS ARE MIN(120,16*XNSIZ) BIG
FAU.XN==^D16 ;WILL TRY TO PUT 16 NODES IN INDEX BLK
MAX.XL==10 ;MAX SIZ OF INTERVAL BETWEEN "BUOYS"
; *** FOR MOMEMT INDEX BLK HAS NULL HDR
HDR.XB==0
;;; FORMAT OF A KEY-NODE IN AN INDEX BLK
FIELD (XN.SON) ;PTS AT INDEX-BLK/DATA-REC AT NEXT LOWER LEVEL
BLKSIZ (XN.KEY) ;ALSO 1ST WORD OF VAR LEN FIELD
;;; FORMAT OF A KEY-LEAF (OR "BUOY")
FIELD (XL.NEXT)
FIELD (XL.PRIOR)
FIELD (XL.CNT) ;NUM OF DATA-RECS IN THIS INTERVAL
SIZ.XL==SIZ.X6L-1 ;[6%20]
FIELD (XL.OWNER) ;[6%20]
BLKSIZ (SIZ.X6L) ;[6%20]
REPEAT 0,< ;[1107] Remove Tape Journal support
SUBTTL DAEMDB RELATED SYMBOLS
;[6%34] DEFINE DABNAME<ASCIZ/SYSTEM-DAEMDB/> ;GIVE STANDARD NAME TO DAEMDB PID
;;; DAEMDB ACTION DRIVING CODES
OFFS.==10 ;MAKE COINCIDENCE SOMEWHAT LESS LIKELY
FIELD (DADOPEN)
FIELD (DADCLJ) ;CLOSE-J FLUSHES ALL FROM JT
FIELD (DADCLRU) ;CLOSE-RU JUST COPS THRU JP.BIX-1
BLKSIZ (CODAD)
;;; ERROR CODES FROM DAEMDB
FIELD (DAXOK) ;SUCCESSFUL RETURN
;[6%34] FIELD (DAXNAV) ;NOT-AVAILABLE (SHUTDOWN ALREADY GIVEN)
;[6%34] FIELD (DAXNOM) ;MAGTAPE COULD NOT BE GOTTEN
;[6%34] FIELD (DAXOJT) ;UNABLE TO OPEN JT FILE
;[6%34] FIELD (DAXIDC) ;IMPROPER DEVICE CHARAC AFTER ASSIG/DEFIN
FIELD (DAXNQD) ;NO QUASAR OR DAEMDB
FIELD (DAXMIX) ;DBCS SOFTWARE ERROR DURING MAGTAPE INIT
FIELD (DAXAJD) ;ALREADY JMDISK DONE
;[6%34] FIELD (DAXJQA) ;J QUOTA ALREADY REACHED
;[6%34] FIELD (DAXOTH) ;SOME OTHER ERROR--DAEMDB FAILURE
BLKSIZ (CODAX)
COMMENT\ Edited out for [6%34]
;;; INFO PACKETS FOR DAEMDB COMMUN
FIELD (DABCODE) ;DAD VALUE
FIELD (DABSKE,2) ;SCH NAME IN ASCIZ
BLKSIZ (DABOTH)
; *** THE "CLOSE" STUFF
CLODSZ==DABOTH
; *** THE "OPEN" STUFF FOR THE -10
OFFS.==DABOTH
FIELD (DABMTA) ;PHYS NAME OF MAGTAPE IN 6BIT
FIELD (DABDSK) ;DITTO FOR JT DEVICE
FIELD (DABPPN) ;WRITE RBCNT OF DABDSK AT APPROP TIME
FIELD (DABFIL)
FIELD (DABEXT)
FIELD (DABPRIV)
BLKSIZ (OPNDS1)
IFG <OPNDS1-^D10>,<PRINTX ?DAB TO LONG FOR SHORT PACKET>
; *** THE "OPEN" STUFF FOR THE -20
OFFS.==DABOTH
FIELD (DABMTA,2) ;ASCIZ HERE
FIELD (DABSPEC,^D24)
BLKSIZ (OPNDS2)
IFG <OPNDS2-^D30>,<PRINTX ?DAB TO LONG FOR SHORT PACKET>
; *** THE "FROM" STUFF
FIELD (DABCODE) ;A DAX VALUE
FIELD (DABTHRESH) ;THE INIT THRESHOLD TO PUT IN A J
BLKSIZ (FROMDAB)
\;End edit for [6%34]
;;; [6%34] Basic DAEMDB/QUASAR "Create" Message Description
BYTES (QE,<<CNT,^D18>,<TYP,^D18>>) ; Word Count,,Message Type
.QOCQE==37
FIELD (QE.FLG) ; Flags
FIELD (QE.UDF) ; User Defined Field (not used)
FIELD (QE.FLW) ; Flag Word
FIELD (QE.ARG) ; Argument Count
FIELD (QE.QT) ; Queue Type Block...
.QCQUE==24
FIELD (QE.OBJ) ; Object Code (.OTDBM)
.OTDBM==21
FIELD (QE.FD) ; File Description Block...
.QCFIL==10
OFSFD.==OFFS. ; File Specification (TOPS20)
FIELD (QE.FIL,11) ; ...asciz text equivalent
OFFS.==OFSFD. ; File Specification (TOPS10)
FIELD (QE.STR) ; ...Structure Name in SIXBIT
FIELD (QE.NAM) ; ...File Name in SIXBIT
FIELD (QE.EXT) ; ...Extension in SIXBIT
FIELD (QE.PPN) ; ...Project,,Programmer Number
FIELD (QE.NUS,5) ; ...(not used)
FIELD (QE.FRR) ; Limit Block...
.QCFRR==37
FIELD (QE.COD) ; ...Journal Operation Code
FIELD (QE.PID) ; ...Sender's Process Id (PID)
BLKSIZ (SIZ.QE)
;;; End DAEMDB/QUASAR DECLARATIONS
>; End REPEAT 0 ;[1107] Remove Tape Journal support
SUBTTL JOURNAL RELATED SYMBOLS
;;; THE POSSIBLE JOURNAL-BLK CODES
AI.COD==1
BI.COD==2
CS.COD==3 ;COMMAND START
CE.COD==4 ;COMMAND END
LB.COD==5 ;LABEL (MULTI-REEL)
TS.COD==6
TE.COD==7 ;TRANSACTION START/END CODES
TX.COD==10 ;TEXT COMMENT BLOCK
CU.COD==11 ;CURRENCY-BACKUP BLOCK, USED AT RUN-TIME ONLY
TAI.COD==12 ;AFTER IMAGE FROM TEMP FILE
;(NOW JRN'D BECAUSE OF PRESERVE)
TBI.COD==13 ;BEFORE IMAGE FROM TEMP FILE
HI.COD==13 ;HIGHEST CURRENT CODE
; *** POWER-OF-2 BIT CORRES FOR J CODES
DEFINE C2B(STRING)<STRING'.BIT==1_<STRING'.COD-1>>
C2B(BI)
C2B(AI)
C2B(CS)
C2B(CE)
C2B(LB)
C2B(TS)
C2B(TE)
C2B(TX)
C2B(CU)
C2B(TAI)
C2B(TBI)
;;; THE POSSIBLE JOURNAL-PAGE IDS
EM.PID==0 ;EMPTY PHYSICAL BLK
DT.PID==1 ;1ST LOG BLK IS DATA BLK
LB.PID==2 ;1ST LOG BLK IS LABEL BLK
ER.PID==3 ;PSEUDO-VALUE, USED IN DBMEND FOR ERROR CONTROL
SK.PID==4 ;PSEUDO-VAL, USED IN DBMEND TO SKIP THE (BAD) BLK
;;; MISCELLANEOUS JOURNAL SYMBOLS
JR.PSIZ==1000 ;SIZE OF A JOURNAL PAGE/BUFFER
JR.PRALC==20 ;# OF JPAGES TO PRE-ALLOC, EACH
; TIME RUNOUT, DURING APPLIC
JR.CHUNK==40 ;# OF JPAGES TO COPY FROM A MAG
;TAPE JOURN TO DSK .TMP WHEN
; MERG BEF
EMP.JP==JR.PSIZ-HDR.JP ;AMT OF FREE SPACE ON AN EMPTY
; (IE. DATALESS) J PAGE
BKU.AI==1B35 ;AL-AB.BKU VALUE, BACKUP AFT IMS
BKU.BI==1B34 ;DITTO, BEF IMS
JI.WMAX==^D16 ;CARD IMAGE
JR.BFM==1B35 ;[6%23] JOURNAL BUFFERS MODIFIED
;...SINCE LAST FLUSH
;;; JOURNAL PAGE HEADER
FIELD (JP.BIX) ;BLOCK/JP INDEX, IDENTIFIES
;JOURNAL PAGE
JP.KEY==OFFS. ;FOR COMPARING AGAINST JLANCPID
BYTES (JP,<<ANC,^D18>,<PID,^D18>>)
;LH, PHYSICAL ANCHOR: TELLS
;ABOUT BUF END
;LSS 0: AMOUNT OF POTENTIALLY
;WASTED (IE. INCOMPLETE) DATA
;AT END OF PAGE
;ELSE THE NUM OF UNUSED WORDS
;ON PAGE
;PAGE TYPE ID (SEE BELOW)
JP.NEED=OFFS.
BYTES (JP,<<LSIZ,^D18>,<LCOD,^D18>>)
;SIZE OF LAST LOG BLK STARTING
;ON THIS JP
;ITS LOGICAL CODE
BYTES (JP,<<FLAG,^D18>,<1STH,^D18>>)
;OFFSET OF 1ST LOGBLK HDR ON J
;AGE, OR 0
FIELD (JP.SEQ) ;IF PAGE+1 HAS A LOWER SEQUENCE NUMBER, WILL
;KNOW THIS IS LAST PAGE OF J
FIELD (JP.UNU) ;FOR FUTURE EXPANSION
BLKSIZ (HDR.JP)
JLANCPID=<EMP.JP-SIZ.JL>B17+LB.PID ;ACTS AS KEY TO J FORMAT
;VALIDITY
;IF FORMAT OF JP.KEY CHANGES,
;THIS MUST ALSO
;[6%10] MOVE BUFHDR DESCRIPTION TO DESCRIPTION AB.BUFPT
;;; JOURNALL BLOCK HDR
;[6%10] JOURNAL BLK HDR NO LONGER HAS ALTEREGO OF DBPAGE BUFFER PREFIX
JB.CURR==OFFS.
BYTES (JB,<<CSIZ,^D18>,<CCOD,^D18>>)
;CUR SIZE (IN WORDS) AND CODE
;OF THIS JOURNAL BLK
JB.PREV==OFFS.
BYTES (JB,<<PSIZ,^D18>,<PCOD,^D18>>)
;DITTO, BUT FOR PREV JB
FIELD (JB.RNID) ;FOR SIMUL UPDATE, WHICH RUN-
;UNIT IS CREATOR OF BLK
BLKSIZ (HDR.JB)
;[6%9] DELETED QUEUE-AREA HDR
;;; TEMPLATES FOR EACH TYPE OF JB
; *** IMAGES ARE OF VARIABLE SIZE & ARE FULLY DESCRIBED IN USER SCHEMA
;[6%23] IM.NUM==HDR.JB ;JUST PINPOINT FIRST WORD
; *** LABEL BLK
FIELD (J1.PAG,HDR.JP) ;[6%23] MAKE JLP OFFSETS
;CONSISTENT W/ POS. ON PAGE
FIELD (JB.HDR,HDR.JB)
FIELD (J1.SCH,SHORT/CPW) ;SCHEMA NAME (IN SIXBIT)
FIELD (J1.RUN) ;RUN SEQUENCE NUM, IS INTEGER
FIELD (J1.REEL) ;REEL # (INTEG)
FIELD (J1.DATE,4) ;DATE/TIME IN ASCII
; *** INTERNAL CONTROL INFORMATION
FIELD (J1.RNID) ;ADD 1 AND GIVE NEXT J OPENER
;VAL AS ITS RNID
FIELD (J1.RACT) ;R-U ACTIVE (IE. LE RNID)
;USED TO SET JP.SEQ
FIELD (J1.TRAC) ;# OF TRANSAC WHICH ARE
;IN (IE. HAVE IMAGES IN) THE J
FIELD (J1.HALC) ;H PAGE # ALLOC IN JRT/JRN FILE
;IE. BOUND FOR WHERE UPFGS/
;FILOPS BEGIN
FIELD (J1.MTP) ;P# OF LAST JP MERGED INTO MTA J
FIELD (J1.LIX) ;LAST ACTUAL JP (W/ CURR SEQ#)
;IN (DISK PART OF) JOURNAL
J1.NEED=OFFS. ;FOR CONSIS. THE JP.NEED OF
BYTES (J1,<<ANC,^D18>,<PID,^D18>>) ; OF LAST PAGE (LIX)
FIELD (J1.THRESH) ;[6%34] MTA SPOOLING THRESHOLD
FIELD (J1.POLL) ;[6%34] MSEC MTA POLLING PERIOD
FIELD (J1.R3)
FIELD (J1.R4)
FIELD (J1.R5)
FIELD (J1.R6)
OFFS.==OFFS.-JB.HDR ;[6%44] MAKE LENGTH NOT INCLUDE
;[6%44] ...PAGE HEADER
BLKSIZ (SIZ.JL)
; *** INFO BLK
;[6%23] FIELD (JB.HDR,HDR.JB)
FIELD (JI.LEN) ;IN ITS OWN UNITS
INF.NOP==1B0 ;NON PRINTING INFO
INF.1ST==1B1 ;1ST OF MULTI-BLK INFO
INF.MOR==1B2 ;MIDDLE OF MULTI
INF.LAS==1B3 ;LAST OF MULTI
INF.1P==0 ;NO BITS ON, MEANS SINGLE PRINTING BLK
FIELD (JI.INFO,JI.WMAX)
BLKSIZ (SIZ.JI)
; *** CURRENCY BACKUP BLK
;[6%23] FIELD (JB.HDR,HDR.JB)
FIELD (JU.ADDR) ;LESS THAN 0 IS SET BLK
FIELD (JU.CURR)
FIELD (JU.CNEX) ;MEANINGFUL ONLY FOR SET BLK
BLKSIZ (SIZ.JU)
; *** COMMAND/VERB BLK
;[6%23] FIELD (JB.HDR,HDR.JB)
FIELD (JC.IDX) ;DENOTES THIS IS (I)TH CMD EXEC IN RUN-
;UNIT SINCE STARTED
FIELD (JC.TYP) ;AS IN STANDARD ERROR CODES
BLKSIZ (SIZ.JC)
; *** TRANSACTION BLK
;[6%23] FIELD (JB.HDR,HDR.JB)
FIELD (JT.IDX) ;DITTO FOR TRANSACTION OF THIS TYPE
FIELD (JT.LEN) ;NUM OF CHARS IN TRANS NAME/TYPE
FIELD (JT.NAM,NAMLEN/CPW)
BLKSIZ (SIZ.JT)
; *** DETERM WHICH JB TYPE IS LARGEST SINCE TEMPLATES WILL BE
; *** CO-INCIDENT DURING JOURNAL BUILDING
DEFINE MAXCHK(TYP.)<IRP TYP.,<IFG SIZ.J'TYP.-MAX.JB,<MAX.JB==SIZ.J'TYP.>>>
MAX.JB==0
MAXCHK <I,T,C,U>
SUBTTL IN-CORE SYMBOL DEFINITIONS
;;; COMMON TO AB.,RB., AND OB.
FIELD (SN.IDADR) ;NMID+IDVEC(SS) FOR THIS SYMBOL
BYTES (SN,<<NEXT,^D18>,<LEN,^D18>>)
BLKSIZ (SN.NAM) ;DOUBLES AS OFFSET OF VARIABLE LEN FIELD
;;; AREA IN-CORE BLOCK
FIELD (AB.CUR) ;DBKEY OF CURR REC OF AREA
FIELD (AB.TSC) ;DBKEY OF CURR REC OF AREA AT START OF
; TRANSACTION
FIELD (AB.CHAN) ;CHANNEL/JFN OF THE FILE THAT COMPRISES
;THE AREA
FIELD (AB.MODE) ;USAGE MODES -- SEE UM.XXX
AB.MASK==OFFS. ;->NXT WD ADDXABLE 2 WAYS
;THE LEFT SIDE MAY CONTAIN VARIOUS UM% BITS
BYTES (AB,<<MWD,^D18>,<MBT,^D18>>)
;[6%19] MWD=WHICH LOCK WORK THIS AREA
;USES
;[6%19] MBT=WHICH BIT IN THE WORD REPS
; AREA
FIELD (AB.TRN) ;[6%19]AOBJ PTR TO LIST OF KB'S WHICH
; REF THIS AREA
FIELD (AB.BUFPT) ;AOBJ LIST OF BUFFER PTRS FOR THIS AREA
FIELD (AB.CLPT) ;[6%22]AOBJ LIST OF CLUSTER PTRS FOR
; THIS AREA
; FIELD (AB.FIFO) ;BUF NUM OF NEXT BUF TO OVERWRITE
FIELD (AB.FIL) ;PTR TO FILE SPEC AREA ASSIGNED TO
FIELD (AB.TBUF) ;A "SPECIAL" EXTRA BUFFER IS ALLOC-ED
; FOR A TMP AREA
BYTES (AB,<<NUL,^D17>,<PTF,^D1>,<UNUSED,^D18>>)
;[6%27] NUL AND UNUSED ARE UNUSED
;[6%27] AB.PTF = PRESERVE TMP FILE
FIELD (AB.TOA) ;[6%27] -1,,0 = TMP 0,,-1 = AID -1 =TMP+AID
FIELD (AB.TCHAN) ;IF TEMP AREA, NEED A 2ND CHANNEL
; TCHAN= -1,,CHAN IF TMP
; 0,,CHAN IF AID
FIELD (AB.TLAP) ;THIS 2ND FILE GROWS...NEED LAST ALLOC
; PAGE (1ST PAGE==0)
FIELD (AB.ILAP) ;IN TEMP AREA, HAVE NEVER-NEVER LAND
; WHERE PAGES LT AB.LAP
;HAVEN'T BEEN WRITTEN BECAUSE TEMP FILE
; IS PACKED
;SO IF KNOW HOW BIG .DBS FILE IS, CAN
; DETECT THEM
;IOW, AB.ILAP=AB.LAP AS OF OPEN
FIELD (AB.PINV) ;THE VALUE=AL.PSIZ-AP.PUNR, FOR USE IN
; ALC.REC
; *** START OF BLTTABLE STUFF
AB.BLT==OFFS.
FIELD (AB.1STP) ;P# OF 1ST PAGE OF AREA
FIELD (AB.LASP) ;P# OF LAST DEFINED PAGE
FIELD (AB.PSIZ) ;PAGE SIZE
BYTES (AB,<<ONBUF,^D18>,<SHAR,^D18>>) ;[6%36] FOR SHARING BUFFERS
; ONBUF - AB WHICH OWNS NBUF
; SHAR - RING PTR OF ALL BUF SHAREES
FIELD (AB.DNBUF) ;[6%36] ADDR OF DATANAME WHICH
; CONTAINS NBUF
FIELD (AB.NBUF) ;NUM OF BUFS TO ALLOC
; 0 IF SHARING - USE AB.ONBUF
; ONLY BUFFER "OWNER" IS NONZERO
BYTES (AB,<<PGL,^D18>,<CLUS,^D18>>)
;[6%27]ADDX OF PAGE LIST FOR AREA
;[6%11]CLUSTER SIZE FOR THIS AREA
FIELD (AB.RPP) ;MAX RECS/PAGE TO ALLOW
FIELD (AB.CALC) ;MAX CALC BUCKETS PER PAGE--INIT VAL
; OF PH.1STF=PH.CALC+VAL(AB.CALC)
FIELD (AB.BKU) ;TYPE OF IMAGES TO PUT IN JOURNAL
FIELD (AB.LOK,LOKMAX/CPW * 6) ;TEXT OF LOCKS...S/P/E*R/U=6
; *** END OF BLTABLE STUFF
AB.BE==OFFS.
FIELD (AB.ID) ;START STRLIB SYMBOL NODE
FIELD (AB.NLEN) ;LENGTH OF AREA NAME
FIELD (AB.NAM,NAMLEN/CPW)
BLKSIZ (SIZ.AB) ;MAX SIZE...SHORT AREA NAMES MEANS LESS
; SIZE
; *** ANCILLARY STUFF
;[6%10] MAKE BUFHDR BE A NODE OFF OF AB.BUFPT
BYTES (BH,<<FLG,^D18>,<BUF,^D18>>)
BH%LSH==1 ;[6%22] PAGE LOCK SHARED
BH%LEX==2 ;[6%22] PAGE LOCK EXCLUSIVE
BH%LKS==BH%LSH+BH%LEX ;[6%22] ALL LOCK FLAGS
BH%TOA==4 ;[6%27] INPUT FROM TEMP OR AID FILE
BH%CLR==10 ;[6%32] CLUSTER READ PAGE HAS BEEN ACCESSED
BH%CPP==20 ;[6%120] NOT A FILE PAGE BUT
; A CREATED PROCESS PAGE
;ACTUAL ADDR OF A BUFFER/PAGE
FIELD (BH.PAGE) ;THE PAGE IN THE ASSOCIATED BUFFER
FIELD (BH.LRU) ;IDX TO SHOW WHETHER BUFF IS LEAST RECENTLY USED
FIELD (BH.WRIT) ;SWITCH: -1=MUST WRITE 0=CAN JUST OVWRITE
FIELD (BH.JPAG) ;HIGHEST JP THIS DBPAGE HAS A BEFIM IN
;[6%27] BH.DPAG==BH.JPAG ;SYNONYM: USED FOR DIRECTORY OF TEMP AREA
BH.DPAG==BH.LRU ;[6%27] POINTS TO 1 OF N TMP/AID DIRECTORY PAGES
FIELD (BH.TOA) ;[6%27] PHY PAG # IN TMP/AID FILE
BYTES (BH,<<UNU,^D18>,<AREA,^D18>>) ;[6%1102]
;[6%1102] BH.UNU is unused
;[6%1102] BH.AREA is AREABLK for this buffer
BLKSIZ (SIZ.BH)
;[6%22] CLUSTER HEADER, IS A NODE OFF AB.CLPT, USED IN SAME WAY AS
; BUFFER HEADER, BUT SUMMARIZES INFO FOR CLUSTER
BYTES (CH,<<NUM,^D18>,<BH,^D18>>) ;NUMBER OF BUFFERS IN THIS CLUSTER
;ADDRESS OF FIRST BUFFER HEADER
FIELD (CH.LRU) ;HIGHEST LRU VALUE FOR CLUSTER
FIELD (CH.WRIT) ;AS BH.WRIT, & HIGHEST VALUE
;FOR CLUSTER
FIELD (CH.JPAG) ;HIGHEST JOURNAL PAGE A PAGE IN
;THIS CLUSTER HAS AN IMAGE IN
BLKSIZ (SIZ.CH)
;;;[6%19] TRANSACTION IN-CORE BLOCK [6%19]
BYTES (EB,<<FLAG,^D18>,<IMG,^D18>>) ;FLAG=FLAGS FOR THIS TRN.
EB%RO==1 ;TRANSACTION IS READ ONLY
;IMG=IMAGE MODE FOR THIS TRN
FIELD (EB.KBL) ;AOBJ PTR TO AREA LIST FOR THIS TRN
FIELD (EB.ALK) ;POINTER TO AREA LOCK STRUCTURE
;FOR THIS TRANSACTION
FIELD (EB.ID) ;NAME-ID OF THIS TRN
FIELD (EB.NLEN) ;LENGTH OF NAME
FIELD (EB.NAM,NAMLEN/CPW) ;NAME OF THIS TRANSACTION
BLKSIZE (SIZ.EB)
;;; TRANSACTION-AREA IN-CORE BLOCK [6%19]
BYTES (KB,<<MODE,^D18>,<CLU,^D18>>) ;USAGE-MODE FOR AREA FOR THIS TRN
FIELD (KB.EB) ;PTR TO ASSOC TRN BLK (EB)
;CLUSTER SIZE FOR THIS TRN
FIELD (KB.AREA) ;POINTER TO ASSOC AREA BLK
BLKSIZ (SIZ.KB)
;;; WITHIN IN-CORE BLOCK
FIELD (WB.1STP)
FIELD (WB.LASP)
BYTES (WB,<<RDCODE,^D18>,<RDINC,^D18>>) ;[6%24]
;[6%24] RDCODE - REC DISTRIBUTION CODE
WB.NRP==1 ;[6%24] N RECS PER PAGE
WB.RNP==2 ;[6%24] 1 REC PER N PAGES
WB.SNP==3 ;[6%24] 1 SET PER N PAGES
;[6%24] RDINC - THE N FOR ABOVE
BLKSIZ (SIZ.WB)
;;; RECORD IN-CORE BLOCK
BYTES (RB,<<LM,^D18>,<FLAG,^D18>>)
;LOC MOD CODE
RF.NALC==1B35 ;FLAG SAYS ALLOC OPERS ILLEG (IE. STORE/DELETE)
;...CAUSED BY SET OWNED BY REC NOT BEING IN SS
RF.NAO==1B34 ;FLAG=NOT-ALL-OWNERS IN SS, MEANS CANNOT DELETE THIS REC
;...SINCE WILL BE UNABLE TO REMOVE IT FROM THE "INVIS" SETS IT IS IN
BYTES (RB,<<DOFF,^D18>,<TSIZ,^D18>>)
;TOTAL SIZE OF REC...FROM DSIZ+DOFF
FIELD (RB.CUR) ;DBKEY OF CURR REC OF THIS TYPE
FIELD (RB.TSC) ;DBKEY OF CURR REC OF THIS TYPE
; AT START OF TRANSACTION
FIELD (RB.TID) ;REC TYPE ID
FIELD (RB.MYA) ;AOBJ PTR FOR AREAS CAN BE WITHIN
FIELD (RB.MYD) ;THE DATA-NAMES IN THE REC
FIELD (RB.ION) ;THE SETS I OWN
FIELD (RB.OBY) ;THE SETS I AM OWNED BY
FIELD (RB.LOC) ;PTR TO IN-CORE BLK OF VIA SET, ADDR OF DIRKEY, OR NUM OF CALC FIELDS
FIELD (RB.WID,2) ;STRING PTR TO UWA LOC FOR AREAID OR 0
FIELD (RB.ID) ;SYM NODE
FIELD (RB.NLEN)
FIELD (RB.NAM,NAMLEN/CPW)
BLKSIZ (SIZ.RB) ;MAX SIZE (WILL BE SMALLER IF RB.NLEN IS LESS THAN 26)
;AREA, OWNER BLKS ALSO THIS WAY
; *** ANCILLARY DEFS FOR AOBJ PTS
WORD (RB,<<RMB,^D18>,<MOB,^D18>>) ;FOR OBY
;REC'S MEM BLK(SELF)
;MEM'S OWNER BLK (SELF'S OWNER)
WORD (RB,<<UNU,^D18>,<ROB,^D18>>) ;FOR ION
;RECORD'S OWN BLK (SELF IS OWNER)
WORD (RB,<<UNU,^D18>,<RDB,^D18>>) ;MYD
;RECORD'S DATA BLKS
WORD (RB,<<RWB,^D18>,<RAB,^D18>>) ;MYA
;PTR TO THE WITHIN BLK ITSELF (RWB)
;AREA REC CAN BE WITHIN
WORD (RB,<<NTB,^D18>,<RTB,^D18>>) ;FOR OBY/ION IN V3TOV5
;NEW TENANT BLK/CURR TB
;;; DATA-NAME IN-CORE BLOCK
BYTES (DB,<<TID,^D18>,<OCC,^D9>,<TYP,^D9>>)
;ITS REC'S TID (FOR CONSIS OF GET/MOD LIST)
;DB.OCC FROM DL.OCC
;DATA TYPE--SEE DT.XXX
BYTES (DB,<<CASE,^D18>,<KTYP,^D18>>)
;CASE--PSEUDO? TID/DBKEY? ETC (SEE KC.XXX)
;KTYP--DATA DIRECTED KEY-TYPE ASPECTS (CURR .CALC/.NORD)
;...OTHER PROPS CONTEXT (IE. CTL-LINE) DPEND
; *** NOTE: THESE TWO WORDS CONSTITUTE A STRING PTR IE. THEY MUST BE TOGETHER
FIELD (DB.UWA) ;BYTE PTR TO BOUND ADDR OF D-N
FIELD (DB.SIZ) ;SIZE IN ITS OWN UNITS=DL.SIZ*DL.OCC(DEF 1)
FIELD (DB.OFF) ;BYTE PTR TO SAME, BUT OFFSET FROM BEGIN OF REC
BLKSIZ (SIZ.DB)
;;; OWNER IN-CORE BLOCK
OB.COWN==OFFS. ;...ACTUALLY, OWNER OF CURR SET OCC, IF KNOWN
FIELD (OB.OOFF) ;DEFINED TO HANDLE O/M INDETERMINANCY SIMPLY. SEE TB.XXX BELOW
FIELD (OB.POFF) ;OFFSET OF PRIOR PTR IN AN OWN REC, OR 0
FIELD (OB.NOFF) ;OFFSET OF NEXT PTR
FIELD (OB.XOFF) ;PTR TO HEAD OF INDEX STRUCTURE IF SORTED SET
FIELD (OB.YB) ;[6%20] POINTER TO A Y-BLOCK IF SORTED SET
;[6%20] FIELD (OB.XSIZ) ;NUM OF WORDS IN AN INDEX BLK FOR THIS SET TYPE
;[6%20] FIELD (OB.XNSIZ) ;DITTO FOR AN INDIV NODE
;IF 0, SORTED SET OCC WILL HAVE NO INDEX STRUCT
FIELD (OB.CVIX) ;IF MATCHES VERBIX, PERFORM APPLICABLE CURRENCY OPERATION
;(1) OB.CUR UPDATE IN INSERT, MODIFY
;(2) OB.CUR SUPDATE-SUPPRES IN FIND/STORE
;IF MATCHES -VERBIX, SUPPRESS OB.COWN
FIELD (OB.REC) ;ADDR OF REC BLK OF REC THAT OWNS SET
FIELD (OB.CPRI) ;WILL BE VALID ONLY WHEN CURR OF SET LAST DET BY
;FIND IMMED NEXT RECORD.
FIELD (OB.CUR) ;DBKEY OF CURR OF SET
FIELD (OB.TSC) ;DBKEY OF CURR OF SET
; AT START OF TRANSACTION
FIELD (OB.CNEX) ;RELEVANT IF CURR OF SET DELETED/REMOVED
FIELD (OB.ION) ;ANAL TO RB.ION
FIELD (OB.ID) ;SYMBOL NODE
FIELD (OB.NLEN)
FIELD (OB.NAM,NAMLEN/CPW)
BLKSIZ (SIZ.OB) ;MAX ALLOCATABLE SIZE
; *** ANCILLARY STUFF
WORD (OB,<<MRB,^D18>,<MMB,^D18>>) ;ION
;PTR TO MEM'S RECORD BLK
;PTR TO MEM'S MEMBER BLK
;;; MEMBER IN-CORE BLOCK
FIELD (MB.OOFF) ;OFFS OF OWNER PTR IN A MEM REC, OR 0
FIELD (MB.POFF) ;DITTO BUT FOR PRIOR PTR
FIELD (MB.NOFF) ;OFFS TO NEXT PTR ALWAYS
BYTES (MB,<<FLAG,^D18>,<SHIP,3>,<SOS,3>,<ORD,6>,<DUP,6>>)
;FLAG--FUTURE
;FOR OTHERS, SEE SCHEMA FILE ML. DESC
;??? MF.REORD==1B35 ;MEMBER MUST BE RE-INSERTED SINCE KEY FIELD MODDED
BYTES (MB,<<MYS,^D18>,<MYK,^D18>>)
;MYS=MY SOS CTL BLKS
;MYK=MY (SORT) KEY CTL BLKS
BLKSIZ (SIZ.MB)
WORD (MB,<<IRREV,^D18>,<REST,^D18>>) ;KLUDGE A BIT FOR EFFIC
MB.REST==MB.SHIP
;;; TENANT (PSEUDO!!!) IN-CORE BLOCK
DEFINE FAK.TB(OFF.)<
IRP OFF.,<
TB.'OFF.==MB.'OFF.
IFN TB.'OFF.-OB.'OFF.,<PRINTX ?MEMBER-OWNER PTR OFFSETS MUST AGREE>
>
>
FAK.TB <OOFF,POFF,NOFF>
;;; VIA IN-CORE BLOCK
FIELD (VB.MYC) ;AOBJ PTR TO SORT FIELDS AS THEY APPEAR IN DATA-RECORD
FIELD (VB.MYX) ;DITTO--BUT AS IN INDEX-NODE
BLKSIZ (SIZ.VB)
WORD (VB,<<KTYP,^D18>,<CDB,^D18>>)
;THE MEM DEPEND CHARAC OF A DATA-NAME
;PTR TO ASSOC (PSEUDO-)DATA-BLK
;;; FILE BLOCK
FIELD (FB.DEV)
FIELD (FB.CNT)
FIELD (FB.DIR)
FIELD (FB.FIL)
FIELD (FB.EXT)
FIELD (FB.PRIV)
FIELD (FB.SIZ)
BLKSIZ (SIZ1FB)
OFFS.==-2 ;[6%27]
FB.HDR==-OFFS. ;[6%27] FOR BIND CODE AT JFMERG
FIELD (FB.AOFF) ;[6%27] OFFSET FROM FB.SPEC TO FB.AID
FIELD (FB.FLEN) ;IN -1 WORD SO THAT JSYS USAGE NATURAL
FIELD (FB.SPEC,MAXFS20) ;VARIABLE LENGTH ASCIZ
FIELD (FB.TEMP,MAXTS20) ;...ACTU START PT DETERM BY FB.FLEN
FIELD (FB.AID,MAXTS20) ;[6%27] FILSPEC FOR .AID FILE
BLKSIZ (SIZ2FB)
;[6%20] INDEX (Y) BLOCK
FIELD (YB.FPG) ; FIRST PAGE OF INDEX BLOCK RANGE
FIELD (YB.LPG) ; LAST PAGE OF INDEX BLOCK RANGE
FIELD (YB.EPI) ; MAX # OF KEYS PER IDX BLOCK
FIELD (YB.EPB) ; MAX # OF RECORDS PER BOUY
FIELD (YB.ISIZ) ; INDEX BLOCK SIZE IN WORDS
FIELD (YB.NSIZ) ; INDEX NODE SIZE IN WORDS
FIELD (YB.AB) ; PTR TO AREA BLOCK WHERE REC RESIDES
BLKSIZ (SIZ.YB)
SUBTTL SCHEMA DIRECTORY BLOCKS AND OFFSETS
; SCHEMA BLOCK
FIELD (SL.ASR,SIZ.FH) ;MAKE THIS RECORD DOUBLE AS ASR
;SO THAT .SCH FILE IS .DBS FILE ALSO
FIELD (SL.SYS) ;NMID OF AREA THAT WILL HOLD SYS RECORD
FIELD (SL.HINMID) ;FOR BUILDING RUN-TIME VECTOR
FIELD (SL.HITID) ;FOR BUILDING RECTYP ID VEC
FIELD (SL.NAREA) ;NUM OF AREAS
FIELD (SL.NTRN) ;FOR BUILDINT TRNTYP ID VEC
FIELD (SL.EDIT) ;CHARAC OF ENTIRE SCHEMA OVER TIME
FIELD (SL.RUN) ;DITTO BUT NUMBER OF TIMES SBIND-ED
FIELD (SL.MLAS) ;LAST USED SS (MAX IS 36)
FIELD (SL.JOUR) ;DBKEY OF JOURNAL'S FILE BLK, IF ONE
FIELD (SL.JNBUF) ;[6%9]NUM OF JBUFS TO ALLOC WHEN J OPENED
FIELD (SL.CHKPT) ;SEE CHK.*
FIELD (SL.XACT) ;EXCEPTION ACTION FLAG WORD (SEE VAC.*/ACT.*)
;LEFT=NOTES // R=INTERCEPT
FIELD (SL.JSIZ) ;TELLS DBCS TO LIMIT JRN SIZE TO (N) TRANSAC
;...AND THEN TO BEGIN OVERWRITING AND REPEAT THE CYCLE
BYTES (SL,<<LKS,^D18>,<LNUM,^D18>>) ;[6%17]
; LKS IS SCOPE OF LOCK
LKS.AL==1B0 ; --AREA LOCKS
LKS.PL==1B1 ; --PAGE LOCKS
; LNUM IS MAX NUM OF LOCKS
FIELD (SL.LOK) ;[6%43] PRIVACY LOCK FOR ADMINISTRATION
FIELD (SL.UNU) ;RESERVED FOR FUTURE
BLKSIZ (SIZ.SL)
;;; STANDARD LIST HEADER [6%32]
BYTES (LST,<<BEG,^D18>,<END,^D18>>) ;BEG,,END OFFSETS (SPACE)
BYTES (LST,<<CBEG,^D18>,<CEND,^D18>>) ;CURRENT LIST BEG,,END
BLKSIZ (SIZ.LHD)
SIZ.LE==2 ;LIST ENTRY SIZE
;;;[6%17] FORMAT OF A LOCK BLOCK
FIELD (LK.HEAD,SIZ.LHD) ;STANDARD LIST HEADER
; ( BYTES (LST,<<BEG,^D18>,<END,^D18>>) ;BEG,,END OFFSETS )
; ( BYTES (LST,<<CBEG,^D18>,<CEND,^D18>>) ;CURRENT LIST BEG,,END)
FIELD (LK.AOS) ;SEMAPHORE WORD FOR BLOCK ACCESS
FIELD (LK.ABO) ;ABORT STATUS FIELD
FIELD (LKJ.OWN) ;JRN LK OWNER ID
;[6%464]BYTES (LKJ,<<MODE,^D1>,<HIP,^D35>>) ;JRN LK TYPE
;[6%464] ;HIGHEST PAGE NUMBER IN THIS PAGE
FIELD (LK.LLL) ;[6%464] PID OF LAST LOK-FILE LOCKER
BLKSIZ (LK.HDR) ;ALSO OFFSET TO ACTUAL LOCK STR.
FIELD (LKP.OWN) ;OWNER OF THIS LOCK
BYTES (LKP,<<MODE,^D2>,<QUE,^D2>,<UNU,^D5>,<PAG,^D27>>)
;MODE IS: 0-SHR, 1-EXCLU, 2-NO-RELEASE
LK.SHR==0
LK.EXC==1
LK.NRL==2 ;DON'T RELEASE SHARED LOCK UNTIL
;...THE END OF TRANSACTION (CLOSE TRN)
;QUE IS 0-LOCKED, 1-QUEUED, 2-UPGRADE
LK.LOK==0
LK.QRQ==1
LK.UPG==2
;OWN IS OWNER-ID (PER-RU)
;PAGE IS PAGE NUMBER LOCKED
BLKSIZ (LK.PLK) ;SIZE OF PAGE LOCK BLOCK
FIELD (LKA.OWN) ;OWNER-ID
BYTES (LKA,<<MODE,^D1>,<UNU,^D35>>) ;MODE AS ABOVE
FIELD (LKA.LN,SHORT/CPW) ;LOCK NAME (SCH UNLESS SETDB)
FIELD (LKA.QUE) ;[6%40] 0=LOCK, 1=REQ,
; 2=first of 2 part req, -1=2ND PART REQ
FIELD (LKA.W1,SIZ.MSK) ;AREA LOCK WORDS
BLKSIZE (LK.ALK) ;SIZE OF AREA LOCK BLOCK
;[6%31] FORMAT OF A SHARED TABLE FRAME - TOPS-10 ONLY
BYTES (ST,<<LCLK,^D18>,<CLEN,^D18>>) ;LOW CLOCK
;....CURRENT LENGTH
FIELD (ST.LIST,^D511) ;ACTUAL WORDS OF LIST
BLKSIZ (SIZ.ST)
; ; [6%22] FORMAT OF A PAGE STACK FRAME -TOPS-20 ONLY
;
; FIELD (PF.LST) ;AOBJN PTR TO CURRENT STACK FRAME
; FIELD (PF.NXT) ;POINTER TO NEXT FRAME IF PRESENT
; FIELD (PF.PRI) ;POINTER TO PRIOR FRAME, OR 0 FOR LAST
; FIELD (PF.STK,STKPFRM-OFFS.) ;THE STACK OF PAGE NUMBERS AND LENGTHS
; BLKSIZ (SIZ.PF) ;SIZ.PF SHOULD = STKPFRM
FIELD (PF.RWD,STKPFRM)
BLKSIZ (SIZ.PF)
;SUB-SCHEMA BLOCK
FIELD (UL.MASK) ;ANY BLOCK THAT "OR"S NON-0 WITH THIS IS IN SS
FIELD (UL.LOK,LOKMAX/CPW) ;LOCK FOR PVC KEY
FIELD (UL.NLEN) ;UNPADDED NAME LEN
FIELD (UL.NAM,NAMLEN/CPW) ;ALLOCATION OF SPACE FOR SS NAME
BLKSIZ (SIZ.UL)
;RECORD BLOCK
BYTES (RL,<<IDSET,^D18>,<NMID,^D18>>)
;NMID IS COMMON TO MOST SCHEMA DEFINED BLOCKS
;IDSET IS LAST SET TO WHICH THIS REC WAS ASSOC--FOR TENANT CONSIS
BYTES (RL,<<NDAT,^D9>,<NAREA,^D9>,<NOWN,^D9>,<NMEM,^D9>>)
;EACH IS NUM OF (X) ASSOC WITH THE RECORD
BYTES (RL,<<LM,6>,<DSIZ,^D12>,<DOFF,^D9>,<TID,^D9>>)
;LM IS FOR LOC MODE: 0=UNDEF 1=DIRECT 2=VIA 3=CALCDUP 4=CALCNODUP
;DSIZ IS SIZE OF DATA IN WORDS
;THE (DOFF)TH WORD OF THE LINE CONTAINS 1ST WORD OF DATA
;TID IS THE RECORD TYPE ID (APPEARS IN LINE HDR)
FIELD (RL.SS) ;TELLS WHICH SS THIS REC IN
FIELD (RL.LOC) ;IF VIA, DBKEY OF THAT SET BLK
;IF DIRECT, DBKEY OF ITS ITEM BLK
;IF CALC, NUM OF CALC FIELDS
FIELD (RL.WID) ;DBKEY OF ITEM BLK OF AREA ID, IF ONE
FIELD (RL.NLEN) ;LEN OF REC NAME
FIELD (RL.NAM,NAMLEN/CPW) ;THE REC NAME IN ASCII
BLKSIZ (SIZ.RL)
;AREA BLOCK -- USE MOSTLY FULL WORDS, ASSUME NUM OF AREA BLKS SMALL %
BYTES (AL,<<SYM,^D18>,<NMID,^D18>>)
;AL.SYM USED BY SCHEMA PROCESSOR, PTS TO AREA'S SYMBOL BLK
;AS BEFORE
FIELD (AL.SS) ;SS THIS AREA IS IN
; *** BEGIN BLTTABLE STUFF
AL.BLT==OFFS.
FIELD (AL.1STP) ;1STP IS PAGE NUM OF 1ST PAGE OF AREA
FIELD (AL.LASP) ;LAST PAGE NUM OF THIS AREA
BYTES (AL,<<PUNR,^D18>,<PSIZ,^D18>>)
;UNROUNDED PAGE SIZE--ALLOWS MAKING PART OF PAGE INVIS
;PSIZ=PHYSICAL PAGE SIZE (ACCOR PAGE BUF SIZE)
;[6%36] BYTES (AL,<<SHAR,^D18>,<NBUF,^D18>>)
BYTES (AL,<<ONBUF,^D18>,<SHAR,^D18>>) ;[6%36] FOR SHARING BUFFERS
; ONBUF - AB WHICH OWNS NBUF
; SHAR - NAMID OF "AT AREA..."
FIELD (AL.DNBUF) ;[6%36] DBK OF IL FOR DATANAME
FIELD (AL.NBUF) ;[6%36] NUM OF BUFS TO ALLOC
; NBUF IS 0 IF SHARING BUFS
; ONLY BUFFER "OWNER" IS NONZERO
FIELD (AL.CLUS) ;[6%10]CLUSTER SIZE FOR THIS AREA
FIELD (AL.RPP) ;MAX RECS PER PAGE
FIELD (AL.CALC) ;MAX CALC RECS PER PAGE
FIELD (AL.BKU) ;BACKUP SPEC: 0=NO 1=AFTER 2=BEFORE 3=BOTH
FIELD (AL.LOK,LOKMAX/CPW * 6) ;ALL OF THE LOCKS: PERMUTE CONC/PROT/EXCL UPDATE/RETR
; *** END BLTTABLE STUFF
AL.MASK==OFFS. ;->NXT WD ADDXABLE 2 WAYS
;THE LEFT SIDE MAY CONTAIN VARIOUS UM% BITS
BYTES (AL,<<MWD,^D18>,<MBT,^D18>>)
;[6%19] MWD=WHICH LOCK WORK THIS AREA USES
;[6%19] MBT=WHICH BIT IN THE WORD REPS AREA
FIELD (AL.FIL) ;DBKEY OF FILBLK FOR AREA
FIELD (AL.TMP) ;SS FOR WHICH THIS AREA A TEMP AREA
FIELD (AL.NLEN) ;LEN OF AREA NAME
FIELD (AL.NAM,NAMLEN/CPW) ;THE AREA'S NAME
BLKSIZ (SIZ.AL)
;[6%20] INDEX BLOCK YL.FPG MUST BE FIRST IN Y-LINE
FIELD (YL.FPG) ; FIRST PAGE OF INDEX BLOCK RANGE
FIELD (YL.LPG) ; LAST PAGE OF INDEX BLOCK RANGE
FIELD (YL.EPI) ; MAX# OF INDEX ENTRIES / IDX BLOCK
FIELD (YL.EPB) ; MAX# OF DATA REC ENTRIES / BUOY
FIELD (YL.ISIZ) ; INDEX BLOCK SIZE (WORDS)
FIELD (YL.NSIZ) ; INDEX NODE SIZE (WORDS)
BYTES (YL,<<NUL,^D18>,<ANMID,^D18>>)
; YL.NUL - NOT USED
; YL.ANMID - AREA NAME ID
BYTES (YL,<<SYM,^D18>,<ASYM,^D18>>)
; SYM - ADR OF SETNAME IN SYM TBL
; ASYM - AREA SYM NODE PTR
FIELD (YL.SLEN) ; SET NAME'S LENGTH
FIELD (YL.SNAM,NAMLEN/CPW) ; SET NAME
BLKSIZ (SIZ.YL)
;DATA BLOCK
BYTES (DL,<<IDREC,^D18>,<NMID,^D18>>)
;NMID AS BEFORE
;IDREC--NEED TO VERIFY THAT DN PART OF RIGHT REC OCCAS
BYTES (DL,<<UNU,^D18>,<OCC,^D9>,<PREC,^D9>>)
;UNUSED
;OCC IS # OF OCCURS IF GTR 0
;PREC IS PRECISION, IN COBOL S9(10) FOR EX
BYTES (DL,<<NLEN,6>,<SLEN,6>,<PLEN,6>,<TYP,6>,<CALC,6>,<SCAL,6>>)
;SINCE DATA BLKS ARE PRESUMABLY MOST FREQUENT
;TRY TO SAVE SPACE (HOPEFULLY NOT AN ERROR IN JUDGMENT)
;ALL STRINGS ARE ENCODED AS ONE, WITH SUBSTRING OPERATORS USED TO PULL APART
;NLEN DATA-NAME'S LENGTH
;PLEN PICTURE'S LENGTH
;SLEN PSEUDONYM'S LENGTH
;THE DATA TYPE
;CALC FIELD ORDINALITY
;SCALE FACTOR (IMPLIED DECIMAL PT)
FIELD (DL.SS) ;AS BEFORE
FIELD (DL.OFF) ;A BYTE PTR TO ITEM WITHIN ITS RECORD
FIELD (DL.SIZ) ;IN TERMS OF ITS LOGICAL USE--CHARS,WORDS,ETC
DLSLEN==NAMLEN+NAMLEN+SHORT
FIELD (DL.STRING,DLSLEN/CPW) ;ALL THE STRINGS
BLKSIZ (SIZ.DL)
;OWNER BLOCK
BYTES (OL,<<POFF,^D9>,<NOFF,^D9>,<NMID,^D18>>)
;THE (POFF)TH WORD OF EACH OWNER REC IS THE PRIOR PTR FOR THIS SET, IF ONE
;THE (NOFF)TH WORD IS THE NEXT PTR--ALWAYS NON-0
;NMID--AS BEFORE
BYTES (OL,<<XNSIZ,^D18>,<XOFF,^D18>>)
;LARGEST KEY-NODE SIZE FOR MEMS OF THIS SET (0 IMPLIES: USE NO INDEX STRUCT)
;THE (XOFF)TH WORD IS TOP-LEVEL IDXBLK, IF ONE
FIELD (OL.NMEM) ;# OF MEMS IN SET
FIELD (OL.SS) ;SS MASK FOR THIS SET
FIELD (OL.NLEN) ;SET NAME'S LEN
FIELD (OL.NAM,NAMLEN/CPW) ;SET NAME
BLKSIZ (SIZ.OL)
;MEMBER BLOCK
BYTES (ML,<<IDREC,^D18>,<SHIP,3>,<SOS,3>,<ORD,6>,<DUP,6>>)
;NMID OF REC THAT IS MEM (USED DURING BINDING)
;SHIP: AUTO/MAN AND MAND/OPT
;SOS IS TYPE OF SOS THIS REC HAS 1=CURR 2=LMO
;ORD IS 1 OF 12 POSSIB (2 PATHOL): 1ST/LAST/NEXT/PRIOR ARE POSIT
;SORTED ARE: PLAIN/DBKEY/WITHIN/UNIFIED PLUS EACH WITH USER KEYS
;BUT DBKEY+USER KEY IMPOS & UNIFIED+NO-USER IMPOS
;IF SORTED, DUP = 0 MEANS ANY 1=FIRST 2=LAST 3=NOT
BYTES (ML,<<OOFF,^D9>,<POFF,^D9>,<NOFF,^D9>>)
;OFFSETS ARE AS BEFORE--OOFF IS NON-0 IF LINKED TO OWNER
BLKSIZ (SIZ.ML)
WORD (ML,<<IRREV,^D18>,<REST,^D18>>)
ML.REST==ML.SHIP
;WITHIN BLOCK
BYTES (WL,<<REC,^D18>,<IDAREA,^D18>>)
;SYM OF UNBOUND REC. IOW, NON-0 IF EXPLIC PAGE RANGE
;NMID OF AREA CONNECTED TO
FIELD (WL.1STP) ;IF NOT EXPLIC SPECIFIED, =AL.1STP
FIELD (WL.LASP) ;DITTO AL.LASP
BYTES (WL,<<RDCODE,^D18>,<RDINC,^D18>>) ;[6%24]
;[6%24] RDCODE - REC DISTRIBUTION CODE
; SEE WB.??P FOR DEFINITION
;[6%24] RDINC - THE N FOR ABOVE
BLKSIZ (SIZ.WL)
;VIA BLOCK
BYTES (VL,<<NKEY,^D18>,<TYP,^D18>>)
;TYP IS VIA LINE FOR SOS OR SORT CTL
;NKEY = NUMBER OF ELEMS IN LIST
BLKSIZE (SIZ.VL)
;CONTROL BLOCK
BYTES (CL,<<CASE,^D18>,<KTYP,^D18>>)
;CASE--FOR COMPARISON CTL
;KTYP--ASC/DESC FOR INSTANCE
BYTES (CL,<<IDDAT,^D18>,<IDSET,^D18>>)
;IDSET HERE AS WITH DL.IDREC RL.IDSET
;DITTO IDDAT
FIELD (CL.ALIAS) ;DBKEY OF ITEM LINE IF THERE IS AN ALIAS NAME
FIELD (CL.IDX) ;ORDINALITY OF THIS SUBKEY (START 1)
FIELD (CL.XOFF) ;FOR SORTED SETS (IN VIA.SOR LISTS), WHERE IN INDEX NODE THE KEY IS
FIELD (CL.KSET) ;DBKEY OF SET IT CTLS, USED TO SET KEY.NORD
BLKSIZ (SIZ.CL)
;TEXT BLK
FIELD (TL.SS) ;NOW TEXT CAN BE SPECIFIED ON A SS BASIS
FIELD (TL.TLEN) ;CHARS OF TEXT
FIELD (TL.TEXT,TEXMAX/CPW) ;PERHAPS TOO MUCH, WHO KNOWS
BLKSIZ (SIZ.TL)
;ITEM BLOCK -- ALL RECORD INDEP SYMBOLS ARE DESCRIBED HERE
FIELD (IL.SLEN)
FIELD (IL.PSU,SHORT/CPW) ;ITS PSUEDONYM IF NON-0
FIELD (IL.NLEN) ;AS BEFORE
FIELD (IL.NAM,NAMLEN/CPW) ;AS BEFORE
BLKSIZ (SIZ.IL)
;TRANSACTION BLOCK (EVENT BLOCK) - DEFINES TRANSACTION NAMES AND
; RECOVERY MODES
BYTES (EL,<<NKL,^D18>,<NMID,^D18>>) ;NAME-ID OF TRANSACTION
;NUMBER OF TRN-AREA LINES FOR BIND
FIELD (EL.SS) ;SUB-SCHEMAS IN
BYTES (EL,<<FLAG,^D18>,<IMG,^D18>>) ;FLAGS FOR THIS TRANS
EL%RO==1 ;...Retrieval Only transaction
;IMAGE TYPES FOR THIS TRANS
FIELD (EL.NLEN) ;LENGTH OF NAME
FIELD (EL.NAM,NAMLEN/CPW) ;REAL NAME
BLKSIZ (SIZ.EL)
;TRANSACTION-AREA BLOCK DEFINES AREAS, CLUSTERING AND USAGE PER AREA,
; PER-TRANSACTION
BYTES (KL,<<USG,^D18>,<CLU,^D18>>) ;USAGE MODE (RETR, UPDTE)
FIELD (KL.ARID) ;NAME-ID OF AREA
BLKSIZ (SIZ.KL)
;FILE BLOCK -- SEPARATE IN HOPE OF BETTER OS INDEP
FIELD (FL.DEV)
FIELD (FL.CNT) ;SET ONLY BY CODE
FIELD (FL.DIR)
FIELD (FL.FIL)
FIELD (FL.EXT) ;SET ONLY BY CODE
FIELD (FL.PRIV)
BLKSIZ (SIZ1FL)
BYTES (FL,<<AOFF,^D9>,<FLEN,^D9>,<BLEN,^D18>>)
;[6%27] AOFF IS OFFSET TO .AID FSPEC
;FLEN IS # OF WORDS IN FILE SPEC
;BLEN # WORDS IN FILE SPEC+TMP+AID SPEC
FIELD (FL.SPEC,MAXFS20) ;JUST A LONG ASCIZ STRING FOR TOPS20
FIELD (FL.TEMP,MAXTS20) ; TMP FILSPEC
FIELD (FL.AID,MAXTS20) ;[6%27] AID FILSPEC
;THE ACTUAL SIZES OF THE FIL/TMP SPEC IS DRIVEN BY 1ST WORD
BLKSIZ (SIZ2FL)
;
END