SPSS Macro Arguments
Macro Definition
Arguments are passed using a macro function that is included on the macro definition itself.
define !foo(bar=!cmdend()) compute baz=!bar. enddefine.
The available functions are:
Function |
Behavior |
!tokens(N) |
Consume N tokens |
!charend('C') |
Consume all tokens until C |
!enclose('S','E') |
Consume all tokens starting from S until E |
!cmdend |
Consume all tokens until the end of the command |
Note that arguments are tokenized before being exposed to the macro expansion.
Named Arguments
Arguments can be set into named variables using a key = function pattern.
define !generate(var1=!tokens(1) /var2=!tokens(1)) compute !var1=0. compute !var2=0. !enddefine. !generate var1=foo var2=bar. !generate var2=bar var1=foo.
Note that the arguments are accessed in the program by prepending the name with an exclamation mark (!).
Also note that arguments can be specified in any order.
Positional Arguments
Arguments can be set into positional variables (!1, !2, and so on) using the !POSITIONAL keyword.
define !generate(!positional !tokens(1) /!positional !tokens(1)) compute !1=0. compute !2=0. !enddefine. !generate foo bar.
All positional arguments can be accessed as a blank-delimited string with !*.