LINEDIT Macro Then, the line is displayed in accordance with the CP EMSG setting.
If EMSG is set to ON, then the entire message is displayed; if EMSG is set to TEXT, then only the message portion is displayed; if EMSG is set to CODE, then only the lO-character code is displayed. Use the BUFF! operand to specify the address of a buffer into which the
edited message is to be written. The message is copied into the
indicated buffer, as well as being used as specified in the DISP operand. The format of the BUFFA operand is: BUFF!={addreSS} (reg) When the text is copied into the buffer, the length of the message
text is inserted into the first byte of the buffer, and the remainder of
the text is inserted in subsequent bytes.
If you use register notation to indicate the buffer address, the code
generated will not be reentrant. To suppress the MNJTE that informs you
that code is not reentrant, use the RENT=NO operand. Use the MF operand to specify the macro format when you want to code
list and execute forms when you write reentrant programs. The format of
the MF operand is: } MF= L (E,faddr \l ( l (reg) f
MF=I (Standard form)
generates an inline operand list for the macro instruction,
and calls the routine that displays the message. This is the
default. It qenerates reentrant code, except under the following
circumstances: When you specify more than one SUbstitution list When you use register notation with the TEXTA or BUFF! operands
MF=L (List form)
generates a parameter list to be filled in when the execute form of
the macro is used.
The size of the area reserved
substitutions to be made, which you
operand. For example:
LINEDIT MF=L,MAXSUBS=5 depends upon the
can specify with
number of
the KAXSUBS reserves space for
substitution lists.
macro instructions.
a parameter list
This same list may
that may hold up to five
be used by several LINEDIT
328 IBM VM/37Q eMS Command and Macro Reference
LINEDIT Macro MF= address) (Execute form)
generates code to fill in the parameter list at tne specified and calls the routine that displays the message text.
The address specified (either a symbolic address or in register
notation) indicates the location of the list form of the macro.
The following example shows how you might use the list and execute
forms of the LINEDIT macro to write reentrant code: WRITETOT LINEDIT TEXT='SUBTOTAL ••••• TOTAL ••••• ', SUB= (DEC, (4) ,DEC, (5t),MF=(E,LINELIST) LINELIST LINEDIT MF=L,MAISUBS=6 When the execute form of the LINEDIT macro instruction is used, the
parameter list for the message is built at label LIMELIST, where
the list form of the macro was coded. Use the MAISUBS operand when you code the list form (MF=L) -form of the
LINEDIT macro instruction. The format of the MAISUBS operand is: MAXSUBS=number where number specifies the maximum number of substitutions that will be
made when the execute form of the macro is used. Use the RENT operand when you are going to use the standard form of the
LINEDIT macro instruction and you do not care whether the code that is
generated is reentrant. The format of the RENT operand is:
When RENT=YES (the default) is in effect, the LINEDIT macro expansion
issues an message indicating that nonreentrant code is being generated. This occurs when you use the standard form of the macro
instruction and you specify one of the following: TEXTA= (reg) BOFFA= (reg) More than one substitution pair
If you do not care whether the code is reentrant, and you do not wish
to have the MNOTE appear, code RENT=NO. The RENT=NJ coding merely
suppresses the MNOTE statement; it has no effect on the expansion of the
LINEDIT macro instruction.
section 6. CMS Macro Instructions 329
Previous Page Next Page