Normally the identification of the banks belonging to the data-structure to be written out is left to FZOUT itself. Naturally this can cover only logically simple cases, such as the complete d/s supported by the bank at the entry address specified to FZOUT.
The situation does however arise that one needs a more
complex description.
For this the M option has been provided which tells FZOUT
that the user has already marked the banks to be transfered
by setting system status-bit IQMARK (=26)
,
and that he has designated the memory interval which contains
his banks by storing the addresses of the lowest and the highest
bank into the COMMON/ZLIMIT/LLOW,LHIGH
.
Thus in principle one can set up one's selection in full
generality,
except that one must take care that the banks marked
actually form a connected d/s with the entry address LENTRY.
It may however be quite tedious to do this job completely 'by hand'. So one tries to provide some tools for formalizable situations. At present the only such tool is MZMARK, which scans a d/s for marking, but at the start of every new linear structure reached during the scan it checks the Hollerith ID of the start bank with a list to see whether the new sub-structure should be included into the marking process.
To take an example, suppose the header bank at LENTRY
supports 4 primary sub-structures with bank names
RAW
, GEOM
, KIN
, DST
, of which the first 3 support in turn
4 sub-structures with bank names TEC
, BGO
, CAL
, MUC
,
and at the even lower levels there may be any unspecified further
sub-structures.
If now one wants to write out only the data for GEOM
, KIN
, DST
,
and for the first 2 only the BGO
results,
one can do this with
PARAMETER (NID=4) DIMENSION IDLIST(NID) DATA IDLIST / 4HRAW , 4HTEC , 4HCAL , 4HMUC / CALL MZMARK (0,LENTRY,'-',NID,IDLIST) CALL FZOUT (LUN,0,LENTRY,IEVENT,'M',IOCH,NUH,IUHEAD)
Note that we have used the anti-selection option (-
) of MZMARK
to veto at the high levels,
which permits the low level linear stuctures to be accepted without
one having to specify which exactly they are.