示例 (DEFINE-!ENDDEFINE 命令)
示例
* Macro without arguments: Specify a group of variables.
DEFINE sesvars ()
age sex educ religion
!ENDDEFINE.
FREQUENCIES VARIABLES=sesvars.
- 宏名称为
sesvars。 因为括号为空,所以sesvars没有自变量。 宏主体定义四个变量: age, sex, educ和 宗教信仰。 - 宏调用是在
FREQUENCIES上指定的。 执行调用时,sesvars将展开为变量 age, sex, educ和 宗教。 - 在宏扩展之后,将执行
FREQUENCIES。
示例
* Macro without arguments: Repeat a sequence of commands.
DATA LIST FILE = MAC4D /GROUP 1 REACTIME 3-5 ACCURACY 7-9.
VALUE LABELS GROUP 1'normal'
2'learning disabled'.
* Macro definition.
DEFINE check ()
split file by group.
frequencies variables = reactime accuracy
/histogram.
descriptives reactime accuracy.
list.
split file off.
regression variables = group reactime accuracy
/dependent = accuracy
/enter
/scatterplot (reactime, accuracy).
!ENDDEFINE.
check. /* First call of defined macro check
COMPUTE REACTIME = SQRT (REACTIME).
COMPUTE ACCURACY = SQRT (ACCURACY).
check. /* Second call of defined macro check
COMPUTE REACTIME = lg10 (REACTIME * REACTIME).
COMPUTE ACCURACY = lg10 (ACCURACY * ACCURACY).
check. /* Third call of defined macro check
- 宏的名称为
check。 空括号指示宏没有自变量。 - 宏定义 (介于
DEFINE和!ENDDEFINE之间) 包含要重复的命令序列:SPLIT FILE,FREQUENCIES,DESCRIPTIVES,LIST,SPLIT FILE和REGRESSION。 - 宏被称为三次。 每次迂到
check时,都会将其替换为命令序列SPLIT FILE,FREQUENCIES,DESCRIPTIVES,LIST,SPLIT FILE OFF和REGRESSION。 使用宏工具的命令序列与明确声明指定命令三次的命令序列相同。
示例
* Macro with an argument.
DEFINE myfreq (vars = !CHAREND('/'))
frequencies variables = !vars
/format = notable
/statistics = default skewness kurtosis.
!ENDDEFINE.
myfreq vars = age sex educ religion /.
- 宏定义将
vars定义为宏自变量。 在宏调用中,将四个变量指定为宏myfreq的自变量。 当程序展开myfreq宏时,它将替换!vars的自变量age,sex,educ和religion,并执行生成的命令。