Skip to content

14.2.2 Introduction ​

DEFINE 命令创建一个_宏_(macro),它是称为宏_主体_(body)的一段 PSPP 语法的名称。在 DEFINE 命令之后,语法可以通过名称任意次_调用_该宏。每次调用都将该宏的主体替换(或_展开_)到调用所在的位置,就如同主体被写在那个位置一样。

以下语法定义了一个名为 !vars 的宏,它展开为变量名 v1 v2 v3。宏的名称以‘!’开头,这对宏名是可选的。宏名后面的 () 是必需的:

DEFINE !vars()
v1 v2 v3
!ENDDEFINE.

以下是给定上述定义后调用 !vars 的两种方式:

DESCRIPTIVES !vars.
FREQUENCIES /VARIABLES=!vars.

通过宏展开,上述调用等价于以下内容:

DESCRIPTIVES v1 v2 v3.
FREQUENCIES /VARIABLES=v1 v2 v3.

!vars 宏展开为一个固定的主体。宏可以有更复杂的内容:

许多与宏相关的标识符以‘!’开头,该字符通常不允许出现在标识符中。这些标识符仅保留供宏使用,这有助于避免它们与其他种类的标识符混淆。

以下各节提供关于宏语法和语义的更多细节。

基于 GNU PSPP 2.0.1 手册与入门教程整理