As previously shown, a macro body may contain a fragment of a PSPP command (such as a variable name). A macro body may also contain full PSPP commands. In the latter case, the macro body should also contain the command terminators.
Most PSPP commands may occur within a macro. The DEFINE
command itself is one exception, because the inner !ENDDEFINE
ends the outer macro definition. For compatibility, BEGIN
DATA
…END DATA.
should not be used within a macro.
The body of a macro may call another macro. The following shows one way that could work:
DEFINE !commands() DESCRIPTIVES !vars. FREQUENCIES /VARIABLES=!vars. !ENDDEFINE. * Initially define the 'vars' macro to analyze v1...v3. DEFINE !vars() v1 v2 v3 !ENDDEFINE. !commands * Redefine 'vars' macro to analyze different variables. DEFINE !vars() v4 v5 !ENDDEFINE. !commands
The !commands
macro would be easier to use if it took the
variables to analyze as an argument rather than through another macro.
The following section shows how to do that.