By following the structural links, MZFLAG sets the selected status-bit into the status words of all the banks of the data-structure supported by the down-links of the specified start bank. Optionally it can include into the marking also the banks of the linear structure supported by link 0 of the start bank and all their dependents. The start bank itself may or may not be marked.
The request is
CALL MZFLAG (IXSTOR,!L,IBIT,chOPT)
with
IXSTOR index of the store or of any division in this store, zero for the primary store !L address of the start bank supporting the partial data-structure; no action if L=0. IBIT the bit-number of the status-bit to be set chOPT character string of options: default mark the bank at L (and its down dependents), the 'next' link of this bank is not followed, status-bit ITBIT is set to one L mark the linear structure pointed to by L ie. the 'next' link of the bank at L is followed V mark only the partial data-structure dependent vertically downwards from the bank at L, but not the bank itself Z set to zero bit IBIT in each bank to be marked
MZFLAG will store into the two words of the common /ZLIMIT/ the addresses of the lowest and of the highest bank marked during the scan, ready for use by the table-building routines of FZOUT for example.
MZFLAG is not a routine commonly called directly by the users; its main current use is as a service routine to MZDROP.
Similarly, the routine MZMARK described below is not normally needed by the users except for a special problem mentioned there. MZMARK is also used as a service routine by FZOUT.
The function MZVOLM walks through a data-structure to calculate the space occupied, returning the number of words as the function value.
MZVOLMNWORDS = MZVOLM (IXSTOR,!L,chOPT)
with
IXSTOR index of the store or of any division in this store, zero for the primary store !L address of the start bank supporting the partial data-structure; no action if L=0. chOPT character string of options: default the 'next' link of the bank at L is not followed L the 'next' link of the bank at L is followed
Examples:
CALL MZFLAG (0,LQMAIN,IQDROP,'L')this will scan the banks of the data-structure supported by the bank at LQMAIN and its sisters (option L), setting the system bit IQDROP to be 'on' in each bank found. This is equivalent to
CALL \Rind{MZDROP
(0,LQMAIN,'L')},
except that it does not set the contents of the word LQMAIN to zero.
PARAMETER (NID=3) DIMENSION IDLIST(NID) DATA IDLIST / 4HBGO , 4HTEC , 4HMUC / CALL MZMARK (0,LQMAIN,'L-',NID,IDLIST)this will scan the banks of the data-structure supported by the bank at
LQMAIN
and its sisters (option L),
but exclude (option -
) from the scan any lower level linear structure
starting with a bank whose IDH
is any of BGO
,
TEC
, MUC
(and its dependents),
setting in each bank found system status bit IQMARK
to be 'on'.
The primary purpose of MZMARK is to give the user a possibility
to select parts of a data-structure for output with FZOUT.
The selection works on IDH
, the Hollerith ID
, of the first bank
of each linear sub-structure of the full data-structure.
For convenience,
one may give to MZMARK either the list of the IDH
's to be included
into the scan, or the list of the IDH
's to be excluded from the scan;
hopefully one gets away with a short list by selecting the right
mode.
MZMARK is a modified version of MZFLAG, it is simpler in that
the bit-number and the bit value are not parameterized:
the bit is IQMARK
and the value is 1, as needed by FZOUT;
it is more complex in that linear structures can be selected
or anti-selected.
The request is
CALL MZMARK (IXSTOR,!L,chOPT,NID,IDLIST)
with
IXSTOR index of the store or of any division in this store, zero for the primary store !L address of the start bank supporting the data-structure; no action if L=0. chOPT character string of options: default mark the bank at L (and its down dependents), the 'next' link of this bank is not followed, lower level linear structures are accepted only if they start with a bank whose IDH appears in the list IDLIST (or if NID=0) L mark the linear structure pointed to by L ie. the 'next' link of the bank at L is followed V mark only the partial data-structure dependent vertically downwards from the bank at L, but not the bank itself - accept a lower level linear structure only if it starts with a bank whose IDH does n o t appear in IDLIST NID number of elements in the list IDLIST, if =zero all banks are accepted ('-' option ignored) IDLIST list of the Hollerith ID for selection
On return |lit(2) contains the total number of words occupied by all the banks marked (unless L is zero on entry).
As for MZFLAG, the addresses of the lowest and the highest bank are stored into /ZLIMIT/, ready for FZOUT.