NQSTOR number of the latest store initialized (NQSTOR = 0, 1, ..., 15) set to -1 by MZEBRA NQOFFT(J+1) table off-set KQT for store J, J=0,1,...,NQSTOR NQOFFS(J+1) store off-set KQS for store J, = LQSTOR - LQASTO NQALLO(J+1) allocation status of store J: = 0: normal, this store belongs to the running process for exclusive use -1: store disconnected -2: read-only store attached by MZATTM -3: store attached by MZATTM NQIAM process identifier, currently zero and unused LQATAB = LOCF(IQTABV(0)) absolute adress-1 of the store control table for the primary store LQASTO = LOCF(LQ(0)) absolute adress-1 of the general store base LQBTIS = LQATAB - LQASTO off-set for the primary table to the store base LQWKTB adr of the Zebra working area IQWKTB rel. to /ZEBQ/, ie. LQ(LQWKTB) is word IQWKTB(1) NQWKTB size of IQWKTB available to MQ, NORMALLY = 2560 may be reduced temporarily by FQ NQWKTT total size of IQWKTB, = 2560 LQWKFZ adr of the FZ work area in IQWKTB rel. to /ZEBQ/ MQKEYS(3) check on MZEBRA initialization already done NQINIT initialization status NQTSYS size of each system table = LOCF(IQDN2(21)) - LOCF(IQTABV(1)) NQM99 unused NQPERM = zero: normal, error exit to ZFATAL = 1: permit error return (used at the moment only in NZNEED for MZGAR1) NQFATA number of words to be printed from IQUEST on fatal error termination; zero during normal operation NQCASE fatal error case; zero during normal operation NQTRAC number of active trace words MQTRAC(44) ZEBRA internal trace words
When a particular store is selected by the user, and if it changes, these numbers are collected into here for easy access. Also, the parameters relevant for the division whose free reserve space has been calculated last, are kept in here.
JQSTOR number of the current store KQT table off-set for the current store KQS store off-set for the current store JQDIVI number of the current division JQDIVR division whose free space has last been calculated JQKIND = JBYT (IQKIND(JQDIVR),21,4) JQMODE = JBIT (IQMODE(JQDIVR),1) JQDIVN neighbour division of division JQDIVR at the moving end JQSHAR = JQDIVN if the two divisions share the same reserve area = zero otherwise JQSHR1 = forward division sharing the reserve area with JQDIVI JQSHR2 = reverse division sharing the reserve area with JQDIVI NQRESV free space available to division JQDIVR IQCUR(1->12) this vector receives a copy of IQTABV(1->12), see just below
primary current store IQTABV IQCUR (1) LQPSTO LQSTOR = LOCF(LQ(@0)), absolute adr-1 of store (2) NQPFEN NQFEND number of fence words preceding the store (3) NQPSTR NQSTRU number of structural permanent links (4) NQPREF NQREF number of permanent links (5) NQPLK NQLINK number of permanent + working space links (6) NQPMIN NQMINR minimum size of the reserve area (7) LQP2E LQ2END minimum value of LQEND(2) (8) JQPDVL JQDVLL last low division (9) JQPDVS JQDVSY system division, also: first high division (10) NQPLOG NQLOGL log level for this store (11) NQPNAM(2) NQSNAM(2) printing name of the store (13) IQTABV(13) lowest possible origin-adr for the store (14) IQTABV(14) highest possible origin-adr for the store (15) IQTABV(15) initial allocation to last division created (16) IQTABV(16) table-offset J of the table, if contained in store ie. LQ(@J+1) is the first word of the table, unless J = 0: the table is not contained in the store
This table exists for each store in the 'system table' at the end of the space provided for the store by the user in the call to MZSTOR, except for the primary store when it is held in /MZCC/.
For a particular store JQSTOR
, acces to a particular number,
say IQTABV(J)
, is via
KQT = NQOFFT(JQSTOR+1) IVAL = IQTABV(KQT+J)ie. by off-setting to the store control table for the primary store. In the following we give simply the structure of this primary store control table; exactly the same structure is repeated in every store control table.
IQTABV(16) store parameters, see the separate IQTABV vector description on the previous page LQSYSS( ) store system links, see the separate LQSYS vector LQSYSR( ) descriptions on the next page LQSTA(21) start adr of division J, J=1,2,...20 LQSTA(21) is end-of-store+1 LQEND(20) end+1 adr of division J NQDMAX(20) maximum size of division J IQMODE(20) mode of the division J bit 1 = 0 / 1 division forward / reverse IQKIND(20) kind of the division J JBYT(IQKIND(J),21,4)= 1 user short-range division 2 user long-range division 4 package division 8 system division JBIT(IQKIND,J) = 1, other bits 1 to 20 are zero IQRCU(20) division bits: 'references to' are active, globals unfolded IQRTO(20) division bits: 'references to' are active IQRNO(20) division bits: 'references to' are permitted (mask) NQDINI(20) initial size of division J NQDWIP(20) number of times 'wipe' executed NQDGAU(20) number of times user garbage collection NQDGAF(20) number of times forced garbage collection for no space NQDPSH(20) number of times 'push' executed with relocation pass NQDRED(20) number of times 'reduced' NQDSIZ(20) maximum size of the division seen IQDN1(20) chars 1:4 IQND2(20) 5:8 of the printing name of the division Primary store only: KQFT such that LQFSTA(1) is LQSTA(KQFT+1) (=342 at present) LQFSTA(21) used in MZCOPY
The vectors LQSYSS and LQSYSR are the system link areas attached to each store. Their words are reserved as follows:
1 : system bank holding the link area descriptions 2 LQMST : working link for MQ 3 LQT : TZ package support link 4 LQFS : FZ package support link 5 LQFORM: MZFORM format d/s support link 7 LQRS : RZ package support link 10 LQZEP : ZEP support link
1 + 2 : 2 working links for MZ 4 LQFF: FZ, last control-bank retrieved 5 LQFI: FZ, control-bank for current input unit 6 LQFX: FZ, control-bank for current output unit 7 LQRRF: RZ package working link
This table, one for each store,
is held in a bank in the system division of the store;
its address is L = LQSYSS(KQT+1)
.
The table contains one entry of 5 words for each link area as follows:
word 1: LLA for LQ(@LLA) being the first word, 2: LLAE for LQ(@LLAE-1) being the last word of the area 3: bits 1-15: number of structural links bit 31 = 0 if permanent link area = 1 if temporary link area 4: characters 1:4 5: 5:8 of the printing name of the area
The first entry of the table describes the permanent links plus the working space links of the store; this area may be of length zero. The second entry describes the system links contained in the store control table for this store. Further entries appear in the order in which they have been created by either MZLINK or MZLINT.
The table as a whole in the bank at L
is as follows:
IQ(L+1) NWU active size of the table of n entries, NWU = 5*n + 1 entry 1 +2) LLA = 1 +3) LLE = 1 + NQLINK +4) number of permanent structural links +5) 4HQWSP +6) blank entry 2 +7) LLA = LOCF(LQSYSS(KQT+1)) - LQSTOR +8) LLE = LLA + number of system links +9) number of structural system links +10) 4HQLAS +11) 4HYST entry 3 +12) LLA = LOCF(first word) - LQSTOR ... ... entry i IQ(L+5i-3) LLA for entry i ... ...