Cómo: |
Una expresión condicional asigna un valor basado en el resultado de una expresión lógica. El valor asignado puede ser numérico o alfanumérico.
Nota: A diferencia de los criterios de selección que utilizan IF, todos los valores alfanuméricos en expresiones condicionales deben estar entre comillas sencillas. Por ejemplo, IF COUNTRY EQ 'ENGLAND'.
IF expression1 THEN expression2 [ELSE expression3]
donde:
Note que el último informe final organizado puede mostrar valores mixtos. Esto depende de si se utiliza un DEFINE o un COMPUTE, y de si se evalúa un registro de datos antes o después de la agregación.
Las expresiones THEN y ELSE siguientes deben resultar en un formato compatible con el formato asignado al campo. Cada una de estas expresiones puede ser una expresión condicional por sí sola. Sin embargo, la expresión después de IF no puede ser una expresión IF ... THEN ... ELSE (por ejemplo, IF ... IF ...).
El ejemplo siguiente utiliza una expresión condicional para asignar el valor NONE al campo BANK_NAME, cuando le falta un valor de datos (es decir, el campo no tiene datos en el origen de datos):
DEFINE FILE EMPLOYEE BANK_NAME/A20 = IF BANK_NAME EQ ' ' THEN 'NONE' ELSE BANK_NAME; END TABLE FILE EMPLOYEE PRINT CURR_SAL AND BANK_NAME BY EMP_ID BY BANK_ACCT END
La salida es:
EMP_ID BANK_ACCT CURR_SAL BANK_NAME ------ --------- -------- --------- 071382660 $11,000.00 NONE 112847612 $13,200.00 NONE 117593129 40950036 $18,480.00 STATE 119265415 $9,500.00 NONE 119329144 160633 $29,700.00 BEST BANK 123764317 819000702 $26,862.00 ASSOCIATED 126724188 $21,120.00 NONE 219984371 $18,480.00 NONE 326179357 122850108 $21,780.00 ASSOCIATED 451123478 136500120 $16,100.00 ASSOCIATED 543729165 $9,000.00 NONE 818692173 163800144 $27,062.00 BANK ASSOCIATION
Puede definir una condición como verdadera o falsa y después probarla para controlar el resultado de informe. El ejemplo siguiente le asigna el valor TRUE al campo MYTEST si cualquiera de las expresiones relacionales en paréntesis es verdadera. Después prueba el valor de MYTEST:
DEFINE FILE EMPLOYEE MYTEST= (CURR_SAL GE 11000) OR (DEPARTMENT EQ 'MIS'); END TABLE FILE EMPLOYEE PRINT CURR_SAL AND DEPARTMENT BY EMP_ID IF MYTEST IS TRUE END
La salida es:
EMP_ID CURR_SAL DEPARTMENT ------ -------- ---------- 071382660 $11,000.00 PRODUCTION 112847612 $13,200.00 MIS 117593129 $18,480.00 MIS 119329144 $29,700.00 PRODUCTION 123764317 $26,862.00 PRODUCTION 126724188 $21,120.00 PRODUCTION 219984371 $18,480.00 MIS 326179357 $21,780.00 MIS 451123478 $16,100.00 PRODUCTION 543729165 $9,000.00 MIS 818692173 $27,062.00 MIS
Nota: El examinar por una condición TRUE o FALSE es válido sólo con el comando IF. No es válido con el comando WHERE.
WebFOCUS |