Example 1
This example shows how macro definitions and invocations may
be nested. It also shows examples of the various forms of
parameter passing.
.MACRO OP1 A,B=R4,?C
C: ADDL R2, B, R3
.MACRO OP'B
TRAPB
.ENDM OP'B
ADDL A, R2, R3
OP'B
.MDELETE OP'B
.ENDM OP1
When OP1 is invoked "OP1 R0", the text expands to:
33000$: ADDL R2, R4, R3
.MACRO OPR4
TRAPB
.ENDM
ADDL R0, R2, R3
OPR4
.MDELETE OPR4
Processing this text will cause OPR4 to be expanded to TRAPB;
the final text will be:
33000$: ADDL R2, R4 R3
ADDL R0, R2, R3
TRAPB
Example 2
The following example shows macro redefinition:
.MACRO INITIALIZE
.MACRO INITIALIZE ;Redefine to nothing
.ENDM INITIALIZE
X=0
Y=1
Z=-1
.ENDM INITIALIZE
Note that while the redefined version of the macro immediately
supersedes the previous definition in any subsequent
invocation, the invocation of the original definition expands
to completion.
Example 3
This example shows a recursive macro:
.MACRO FACTORIAL N
.IF EQUAL <N>,0 ;Basis step; stop at zero
F=1
.ELSE
FACTORIAL <N-1>
F = F * <N>
.ENDC
.ENDM FACTORIAL