DO SI

La estructura DO IF-END IF ejecuta condicionalmente una o más transformaciones en subconjuntos de casos basados en una o más expresiones lógicas. El mandato ELSE se puede utilizar dentro de la estructura para ejecutar una o más transformaciones cuando la expresión lógica en DO IF no es verdadera. El mandato ELSE IF dentro de la estructura proporciona un control adicional.

DO IF [(]logical expression[)]

transformation commands

[ELSE IF [(]logical expression[)]]

transformation commands

[ELSE IF [(]logical expression[)]]
  .
  .
  .
[ELSE]

transformation commands

END IF

Este mandato no lee el conjunto de datos activo. Se almacena, pendiente de ejecución con el siguiente mandato que lee el conjunto de datos. Consulte el tema Orden de mandatos para obtener más información.

Los siguientes operadores relacionales se pueden utilizar en expresiones lógicas:

Tabla 1. Operadores relacionales
Símbolo Definición
EQ o = Igual a
NE o ~ = o ¬ = o < > No es igual que
LT o < Menor que
LE o < = Menor o igual que
GT o > Mayor que
GE o > = Mayor o igual que

Los siguientes operadores lógicos se pueden utilizar en expresiones lógicas:

Tabla 2. Operadores lógicos
Símbolo Definición
AND o & Ambas relaciones deben ser verdaderas
OR o | Cualquiera de las dos relaciones puede ser verdadera
NO Invierte el resultado de una expresión

Ejemplo

DO IF (YearHired GT 87).
COMPUTE            Bonus = 0.
ELSE IF (Dept87 EQ 3).
COMPUTE            Bonus = .1*Salary87.
ELSE IF (Dept87 EQ 1).
COMPUTE            Bonus = .12*Salary87.
ELSE IF (Dept87 EQ 4).
COMPUTE            Bonus = .08*Salary87.
ELSE IF (Dept87 EQ 2).
COMPUTE            Bonus = .14*Salary87.
END IF.