(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 FILEFREQUENCIESDESCRIPTIVESLISTSPLIT FILE、および REGRESSION) が含まれています。
  • このマクロは 3 回呼び出されます。 check が検出されるたびに、コマンド・シーケンス SPLIT FILEFREQUENCIESDESCRIPTIVESLISTSPLIT 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 の代わりに引数 agesexeduc、および religionを使用して、結果のコマンドを実行します。