%NRSTR functions are compilation functions. For more information, see “%STR
and %NRSTR Functions” on page 272.
execution functions
cause the macro processor to treat special characters that result from resolving a
macro expression as text (such as a macro variable reference, a macro invocation, or
the argument of an %EVAL function). They are called execution functions because
resolution occurs during macro execution or during execution of a macro program
statement in open code. The macro processor resolves the expression as far as
possible, issues any warning messages for macro variable references or macro
invocations that it cannot resolve, and quotes the result. The %BQUOTE and
%NRBQUOTE functions are execution functions. For more information, see
“%BQUOTE and %NRBQUOTE Functions” on page 260.
The %SUPERQ function takes as its argument a macro variable name (or a macro
expression that yields a macro variable name). The argument must not be a reference to
the macro variable whose value you are masking. That is, do not include the & before
the name.
Note: Two other execution macro quoting functions exist: %QUOTE and %NRQUOTE.
They are useful for unique macro quoting needs and for compatibility with older
macro applications. For more information, see “%QUOTE and %NRQUOTE
Functions” on page 266.
Passing Parameters That Contain Special Characters and
Mnemonics
Using an execution macro quoting function in the macro definition is the simplest and
best way for the macro processor to accept resolved values that might contain special
characters. However, if you discover that you need to pass parameter values such as or
when a macro has not been defined with an execution macro quoting function, you can
do so by masking the value in the macro invocation. The logic of the process is as
follows:
1. When you mask a special character with a macro quoting function, it remains
masked as long as it is within the macro facility (unless you use the “%UNQUOTE
Function” on page 292).
2. The macro processor constructs the complete macro invocation before beginning to
execute the macro.
3. Therefore, you can mask the value in the invocation with the %STR function. The
masking is not needed when the macro processor is constructing the invocation. The
value is already masked by a macro quoting function when macro execution begins
and therefore does not cause problems during macro execution.
For example, suppose a macro named ORDERX does not use the %BQUOTE function.
You can pass the value or to the ORDERX macro with the following invocation:
%orderx(%str(or))
However, placing the macro quoting function in the macro definition makes the macro
much easier for you to invoke.
84 Chapter 7 • Macro Quoting