Ejemplos (mandato SELECT IF)

Cómo trabajar con expresiones lógicas simples

SELECT IF (SEX EQ 'MALE').
  • Todos los procedimientos posteriores sólo utilizarán casos en los que el valor de SEX sea MALE.
  • Puesto que las mayúsculas y minúsculas se tratan de forma diferente en las comparaciones de variables de cadena, los casos para los que el valor de SEX es masculino no se seleccionan.
    SELECT IF (INCOME GT 75000 OR INCOME LE 10000).
  • La expresión lógica prueba si un caso tiene un valor mayor que 75.000 o menor o igual que 10.000. Si cualquiera de las dos relaciones es verdadera, el caso se utiliza en análisis posteriores.
    SELECT IF (V1 GE V2).
  • Este ejemplo selecciona casos en los que la variable V1 es mayor o igual que V2. Si falta V1 o V2 , la expresión lógica es indeterminada y el caso no está seleccionado.
    SELECT IF (SEX = 'F' & INCOME <= 10000).
  • La expresión lógica comprueba si la variable de serie SEX es igual a F y si la variable numérica INCOME es menor o igual que 10.000. Los casos que cumplen ambas condiciones se incluyen en los análisis posteriores. Si falta SEX o INCOME para un caso, el caso no se selecciona.
    SELECT IF (SYSMIS(V1)).
  • La expresión lógica prueba si V1 es un valor perdido del sistema. Si falta el sistema, el caso se selecciona para los análisis posteriores.
    SELECT IF (VALUE(V1) GT 0).
  • Los casos se seleccionan si V1 es mayor que 0, incluso si el valor de V1 se ha declarado como perdido por el usuario.
    SELECT IF (V1 GT 0).
  • Los casos no se seleccionan si V1 es perdido por el usuario, incluso si el valor perdido por el usuario es mayor que 0.
    SELECT IF ((V1-15) LE (V2*(-0.001))).
  • La expresión lógica compara si V1 menos 15 es menor o igual que V2 multiplicado por −0.001. Si es true, se selecciona el caso.
    SELECT IF ((YRMODA(88,13,0) - YRMODA(YVAR,MVAR,DVAR)) LE 30).
  • La expresión lógica resta el número de días que representan la fecha (YVAR, MVARy DVAR) del número de días que representan el último día de 1988. Si la diferencia es menor o igual que 30, se selecciona el caso.

Comprender y cambiar el orden de evaluación

SELECT IF (RECEIV GT DUE AND (REVNUS GE EXPNS OR BALNCE GT 0)).
  • De forma predeterminada, AND se ejecuta antes que OR. Esta expresión utiliza paréntesis para cambiar el orden de evaluación.
  • El programa primero prueba si la variable REVNUS es mayor o igual que la variable EXPNSo la variable BALNCE es mayor que 0. En segundo lugar, el programa comprueba si RECEIV es mayor que DUE. Si una de las expresiones entre paréntesis es verdadera y RECEIV es mayor que DUE, se selecciona el caso.
  • Sin los paréntesis, el programa probaría primero si RECEIV es mayor que DUE y si REVNUS es mayor o igual que EXPNS. En segundo lugar, el programa comprobaría si BALNCE es mayor que 0. Si las dos primeras expresiones son verdaderas o si la tercera expresión es verdadera, se selecciona el caso.

Selección de casos basándose en su secuencia en un archivo

COMPUTE  #CASESEQ=#CASESEQ+1.
SELECT IF (MOD(#CASESEQ,2)=0).
  • Este ejemplo calcula una variable reutilizable, #CASESEQ, que contiene los números de secuencia para cada caso. Se seleccionan todos los demás casos, empezando por el segundo caso.
  • #CASESEQ debe ser una variable reutilizable para que no se reinicialice para cada caso. Una alternativa es utilizar el mandato LEAVE .

Utilización de SELECT IF dentro de una estructura DO IF

DO IF  SEX EQ 'M'.
+   SELECT IF PRESTIGE GT 50.
ELSE IF  SEX EQ 'F'.
+   SELECT IF PRESTIGE GT 45.
END IF.
  • Los mandatos SELECT IF dentro de la estructura DO IF seleccionan hombres con puntuaciones de prestigio por encima de 50 y mujeres con puntuaciones de prestigio por encima de 45.