宏自变量 (DEFINE-!ENDDEFINE 命令)
宏定义可以包含宏参数,这些参数可以在宏调用中指定特定值。 有两种类型的参数: 关键字和位置。 在宏定义中为关键字参数指定名称; 在宏调用中,按名称标识关键字参数。 位置自变量在宏定义中的关键字 !POSITIONAL 之后定义; 在宏调用中,它们由它们在宏定义中的相对位置标识。
- 可以在宏中指定的自变量数量没有限制。
- 所有参数都在括号中指定,并且必须用斜杠分隔。
- 如果在同一定义中同时定义了关键字和位置参数,那么必须定义位置参数,在宏主体中使用这些参数,并在关键字参数之前的宏调用中调用这些参数。
示例
* A keyword argument.
DEFINE macname (arg1 = !TOKENS(1))
frequencies variables = !arg1.
!ENDDEFINE.
macname arg1 = V1.
- 宏定义将
macname定义为宏名称,将arg1定义为自变量。 自变量arg1具有一个标记,可以在宏调用中分配任何值。 - 宏调用将展开
macname宏。 该参数由其名称arg1标识,并分配值V1。 只要!arg1出现在宏主体中,就会替换V1。 此示例中的宏主体是FREQUENCIES命令。
示例
* A positional argument.
DEFINE macname (!POSITIONAL !TOKENS(1)
/!POSITIONAL !TOKENS(2))
frequencies variables = !1 !2.
!ENDDEFINE.
macname V1 V2 V3.
- 宏定义将
macname定义为具有两个位置参数的宏名称。 第一个自变量具有一个标记,第二个自变量具有两个标记。 可以在宏调用中为令牌分配任何值。 - 宏调用将展开
macname宏。 这些参数由其位置标识。V1将替换在宏主体中出现的!1任何位置!1。V2和V3将替换为!2,而无论!2出现在宏主体中的位置。 此示例中的宏主体是FREQUENCIES命令。