WHEN |
Quand |
|---|---|
| Cobol | |
Syntaxe
|
EVALUATE (identifier1|TRUE|FALSE) [ALSO identifier2|TRUE|FALSE] WHEN evaluatephrase [ALSO evaluatephrase] statementlist [WHEN OTHER statementlist] [END-EVALUATE] |
|
SEARCH field AT END statement1 WHEN condition statement2 END-SEARCH. |
|
SEARCH identifier [VARYING identifier] [[AT] END statementlist] WHEN condition(statementlist|NEXT SENTENCE [END-SEARCH] |
Paramètres
| Nom | Description |
|---|---|
| identifier1 | Ce paramètre représente une valeur ou variable à évaluer dans l'instruction EVALUATE. Il est comparé à des valeurs spécifiques définies dans chaque WHEN. |
| TRUE / FALSE | Ce paramètre permet de tester directement une condition booléenne dans une clause EVALUATE ou WHEN. Il est souvent utilisé dans des contrôles logiques. |
| ALSO identifier2 | Ce paramètre permet d'évaluer une deuxième expression en parallèle de la première. Il est utilisé pour des comparaisons multiples dans une même clause WHEN. |
| evaluatephrase | Ce paramètre désigne l'expression ou la constante attendue dans un cas spécifique. Chaque WHEN evaluatephrase définit un cas à gérer dans un EVALUATE. |
| WHEN OTHER | Ce paramètre agit comme un cas par défaut. Il est exécuté quand aucune des conditions des WHEN précédents n'est satisfaite. |
| statementlist | Ce paramètre représente la ou les instructions à exécuter si la condition de la clause WHEN est remplie. |
| AT END | Ce paramètre est utilisé dans SEARCH pour gérer le cas où aucune condition WHEN n'est satisfaite. Il assure une alternative si la recherche échoue. |
| condition | Ce paramètre définit la condition logique à vérifier sur un élément de tableau (dans un SEARCH). Si elle est vraie, le bloc statement2 est exécuté. |
| NEXT SENTENCE | Ce paramètre indique que le traitement doit passer à la phrase suivante si la condition du WHEN est remplie. Cela permet de simplifier certains cas. |
Description
Cette instruction permet d'indiquer quand effectuer l'évaluation.
Remarques
- L'instruction WHEN est utilisée dans deux contextes principaux en COBOL : avec EVALUATE et avec SEARCH. Dans EVALUATE, elle permet de spécifier les cas particuliers à traiter selon la valeur d'une ou plusieurs expressions. Dans SEARCH, elle permet de définir la condition à remplir pour arrêter la recherche dans un tableau.
- Dans une structure EVALUATE, chaque clause WHEN agit comme un IF conditionnel, mais permet une écriture plus compacte et lisible. Cela rend la structure EVALUATE très utile pour remplacer des chaînes longues et imbriquées de IF, surtout quand plusieurs conditions doivent être comparées simultanément.
- La clause WHEN OTHER permet de capturer tous les cas non couverts par les WHEN précédents. Elle fonctionne comme un ELSE final, garantissant qu'une action sera exécutée même si aucune des conditions précédentes n'est remplie, évitant ainsi des situations non gérées.
- Dans le contexte d'un SEARCH, l'instruction WHEN est essentielle car elle détermine la condition d'arrêt de la recherche dans un tableau. Dès que la condition est vraie pour l'élément courant, le traitement associé est exécuté. Si aucun élément ne satisfait la condition, la clause AT END est déclenchée.
- La syntaxe WHEN condition (statementlist | NEXT SENTENCE) permet de définir un bloc d'instructions ou une redirection lorsqu'une condition est remplie. Cette flexibilité permet d'exécuter immédiatement une suite logique ou de simplement passer au paragraphe suivant selon le besoin.
- Dans EVALUATE, la clause ALSO utilisée avec WHEN permet de traiter des comparaisons multiples, comme un tableau à double entrée. Cela est très utile lorsque deux ou plusieurs variables doivent être évaluées ensemble pour déterminer le traitement approprié.
- L'utilisation de WHEN améliore la lisibilité du code COBOL car elle permet de regrouper logiquement les tests de conditions. Cela est particulièrement bénéfique dans les systèmes complexes où les règles métier sont nombreuses et où la clarté du traitement est essentielle.
- Il est important de noter que les tests WHEN dans EVALUATE sont évalués dans l'ordre, et dès qu'un WHEN correspond, les autres ne sont pas testés. Cela signifie qu'un ordre mal choisi peut produire des résultats inattendus si plusieurs conditions peuvent être vraies en même temps.
Dernière mise à jour : Jeudi, le 28 juillet 2011