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:
| 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:
| 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.