宏自变量 (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 任何位置 !1V2V3 将替换为 !2 ,而无论 !2 出现在宏主体中的位置。 此示例中的宏主体是 FREQUENCIES 命令。