例 (DEFINE-!ENDDEFINE コマンド)
例
* Macro without arguments: Specify a group of variables.
DEFINE sesvars ()
age sex educ religion
!ENDDEFINE.
FREQUENCIES VARIABLES=sesvars.
- マクロ名は
sesvarsです。 括弧が空であるため、sesvarsには引数がありません。 マクロ本体は、 年齢、 性別、 デュック、および 宗教の 4 つの変数を定義します。 - マクロ呼び出しは、
FREQUENCIESで指定されます。 呼び出しが実行されると、sesvarsは、変数 age、 sex、 域内、および 宗教に展開されます。 - マクロ展開の後、
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) が含まれています。 - このマクロは 3 回呼び出されます。
checkが検出されるたびに、コマンド・シーケンスSPLIT FILE、FREQUENCIES、DESCRIPTIVES、LIST、SPLIT FILE OFF、およびREGRESSIONに置き換えられます。 マクロ機能を使用するコマンド・シーケンスは、指定されたコマンドが 3 回明示的に指定されているコマンド・シーケンスと同じです。
例
* 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をマクロ引数として定義します。 マクロ呼び出しでは、4 つの変数がマクロmyfreqの引数として指定されます。 プログラムは、myfreqマクロを展開するときに、!varsの代わりに引数age、sex、educ、およびreligionを使用して、結果のコマンドを実行します。