Expresiones lógicas

Las expresiones lógicas pueden aparecer en los mandatos COMPUTE, IF, SELECT IF, DO IF, ELSE IF, LOOP IFy END LOOP IF . Una expresión lógica se evalúa como verdadera o falsa, o como que falta si es indeterminada. Una expresión lógica devuelve 1 si la expresión es verdadera, 0 si es falsa o falta el sistema si falta. Por lo tanto, las expresiones lógicas pueden ser cualquier expresión que produzca esta lógica de tres valores.

  • La expresión lógica más simple es una variable lógica. Una variable lógica es cualquier variable numérica que tenga los valores 1, 0 o perdidos del sistema. Las variables lógicas no pueden ser series.
  • Las expresiones lógicas pueden ser simples variables lógicas o relaciones, o pueden ser pruebas lógicas complejas que implican variables, constantes, funciones, operadores relacionales, operadores lógicos y paréntesis para controlar el orden de evaluación.
  • En un mandato IF , una expresión lógica que es verdadera hace que se ejecute la expresión de asignación. Una expresión lógica que devuelve que falta tiene el mismo efecto que una que es falsa, es decir, la expresión de asignación no se ejecuta y el valor de la variable de destino no se altera.
  • En un mandato DO IF , una expresión lógica que es verdadera provoca la ejecución de los mandatos inmediatamente después de DO IF, hasta el siguiente ELSE IF, ELSEo END IF. Si es false, se evalúa el siguiente mandato ELSE IF o ELSE . Si la expresión lógica devuelve que falta para cada uno de ellos, se omite toda la estructura.
  • En un mandato SELECT IF , una expresión lógica que es verdadera hace que se seleccione el caso. Una expresión lógica que devuelve perdidos tiene el mismo efecto que una que es falsa, es decir, el caso no está seleccionado.
  • En un mandato LOOP IF , una expresión lógica que es verdadera hace que el bucle empiece (o continúe). Una expresión lógica que devuelve que falta tiene el mismo efecto que una que es falsa, es decir, se omite la estructura.
  • En un mandato END LOOP IF , una expresión lógica que es falsa devuelve el control al mandato LOOP para esa estructura y el bucle continúa. Si es true, el bucle se detiene y la estructura termina. Una expresión lógica que devuelve un valor perdido tiene el mismo efecto que uno que es verdadero, es decir, la estructura termina.

Ejemplo

DATA LIST FREE (",") /a.
BEGIN DATA
1, , 1 , ,
END DATA.
COMPUTE b=a.
* The following does NOT work since the second condition
  is never evaluated.
DO IF a=1.
COMPUTE a1=1.
ELSE IF MISSING(a).
COMPUTE a1=2.
END IF.
* On the other hand the following works.
DO IF MISSING(b).
COMPUTE b1=2.
ELSE IF b=1.
COMPUTE b1=1.
END IF.
  • El primer DO IF nunca producirá un valor de 2 para a1 porque si falta a , DO IF a=1 se evalúa como perdido y el control pasa inmediatamente a END IF. Por lo tanto, a1 será 1 o perdido.
  • En el segundo DO IF, sin embargo, nos ocupamos primero de la condición que falta; por lo tanto, si falta el valor de b , DO IF MISSING(b) se evalúa como true y b1 se establece en 2; de lo contrario, b1 se establece en 1.