Proceso condicional (DEFINE-!ENDDEFINE, mandato)

La construcción !IF especifica condiciones para el proceso. La sintaxis es la siguiente:

!IF (expression) !THEN statements
                [!ELSE statements]
!IFEND
  • !IF, !THENy !IFEND son todos necesarios. !ELSE es opcional.
  • Si el resultado de la expresión es true, se ejecutan las sentencias que siguen a !THEN . Si el resultado de la expresión es falso y se especifica !ELSE , se ejecutan las sentencias que siguen a !ELSE . De lo contrario, el programa continúa.
  • Los operadores válidos para las expresiones son !EQ, !NE, !GT, !LT, !GE, !LE, !OR, !NOTy !AND, o =, ~ = (¬ =), >, <, > =, < =, |, ~ (¬) y &.
  • Cuando se expande una macro, las construcciones de proceso condicional se interpretan después de que se sustituyan los argumentos y se ejecuten las funciones.
  • Las sentencias !IF se pueden anidar siempre que sea necesario. Se pueden utilizar paréntesis para especificar el orden de evaluación. El orden predeterminado es el mismo que para las transformaciones: !NOT tiene prioridad sobre !AND, que tiene prioridad sobre !OR.

Ejemplo

DEFINE mymacro(type = !DEFAULT(1) !TOKENS(1))
!IF (!type = 1)!then 
frequencies variables=varone.
!ELSE 
descriptives variables=vartwo.
!IFEND
!ENDDEFINE.