Création d'une expression conditionnelle

Comment :

Une expression conditionnelle attribue une valeur selon le résultat d'une expression logique. La valeur attribuée peut être numérique ou alphanumérique.

Remarque : contrairement aux critères de sélection utilisant IF, toutes les valeurs alphanumériques dans les expressions conditionnelles doivent être entourées de guillemets simples. Par exemple, IF COUNTRY EQ 'ENGLAND'.


Haut de page

x
Syntaxe : Écrire une expression conditionnelle
IF expression1 THEN expression2 [ELSE expression3]

où :

expression1
est l'expression évaluée afin de déterminer si l'on attribue au champ la valeur de expression2 ou de expression3.
expression2
Est une expression qui a comme résultat un format compatible avec celui attribué au champ. Cela peut être une expression conditionnelle et en ce cas, vous devez la mettre en paranthèses.
expression3
Est une expression qui a comme résultat un format compatible avec celui attribué au champ. L'utilisation des paranthèses autour d'une expression est facultative.
ELSE
est facultatif, aussi bien que expression3. Cependant, si vous ne spécifiez pas une condition ELSE et que la condition IF n'est pas satisfaite, la valeur est prise de la dernière condition évaluée.

Notez que le rapport trié final peut afficher des valeurs variées. Cela varie selon qu'on utilise DEFINE ou COMPUTE, et selon qu'on évalue un rapport de données avant ou après l'agrégation.

Les expressions qui suivent THEN et ELSE doivent avoir comme résultat un format compatible avec celui attribué au champ. Chacune de ces expressions peut être elle-même une expression conditionnelle. Toutefois, il se peut que l'expression qui suit IF ne soit pas une expression IF ... THEN ... ELSE (par exemple, IF ... IF ...).



Exemple : Fourniture d'une valeur avec une expression conditionnelle

L'exemple ci-après se sert d'une expression conditionnelle afin d'attribuer la valeur NONE au champ BANK_NAME lorsque une valeur de données lui manque (c-à-d, lorsque le champ n'a pas de données dans la source de données).

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 sortie est :

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


Exemple : Définition d'une condition vraie ou fausse

Vous pouvez définir une condition vraie ou fausse et puis la tester afin de contrôler la sortie du rapport. L'exmple ci-après attribue la valeur TRUE au champ MYTEST si n'importe laquelles des expressions relationnelles entre paranthèses est vraie. Ensuite, il teste la valeur 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 sortie est :

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       

Remarque : le test d'une condition TRUE ou FALSE n'est valide qu'avec la commande IF. Le test n'est pas valide avec la commande WHERE.


WebFOCUS