The format of the MF keyword for the list form is:
MF={L|(L,address[,label])}
where:
- L
- specifies that this is the list form of the macro.
If
you code MF=L, without the
address parameter, then,
- Register notation and expressions that generate S-type address
constants cannot be used
- The parameter list is built in line, which means that the program
is not reentrant if the parameter list is modified at execution.
- address
- specifies the address of a remote area in which
the macro expansion builds a parameter list. Coding the address parameter
will result in generating executable code to initialize the remote
parameter list. You can modify this parameter list with later calls
to the execute form or update it with later invocations of the list
form using the same address parameter. The area must begin
on a fullword boundary and be large enough for the parameter list.
You can specify the address in register notation or as an expression
valid for a relocatable A-type address constant or a direct or indirect
S-type address constant.
- label
- specifies a unique name used in an EQU instruction in the expansion
of the macro. Label is equated to the length of the parameter
list. You do not have to know the length of the parameter list if
you code label; the expansion of the macro determines the
amount of storage required.
The size, in fullwords, of a parameter list is:
- For GENCB, 4, plus 3 times the number of ACB, EXLST, or RPL keywords
specified (plus 1 for DDNAME, EODAD, JRNAD, LERAD, or SYNAD)
- For MODCB, 3, plus 3 times the number of ACB, EXLST, or RPL keywords
specified (plus 1 for DDNAME, EODAD, JRNAD, LERAD, or SYNAD)
- For SHOWCB, 5, plus 2 times the number of fields specified in
the FIELDS keyword
- For TESTCB, 8 (plus 1 for either DDNAME, STMST, EODAD, JRNAD,
LERAD, or SYNAD).
If you code MF=(L,address,label), the parameter list is built in
the remote area specified. The expansion of the macro equates label with
the length of the parameter list.