WHEN
Quand
When
En bref
La commande WHEN permet d'évaluer une expression logique et, selon le résultat, de traiter ou non des commandes dans un programme CL ou une procédure CL ILE.
Syntaxe minimale
WHEN COND(…)
Paramètres
Astuce : dans une session 5250, tapez WHEN puis F4 pour
l'invite de saisie, et F1 sur un paramètre pour son aide.
Aide IBM i de la commande
Texte du F1, IBM i 7.5 en français
(bibliothèque QSYS)
Où s'exécute :
- Programme batch (*BPGM)
- Programme interactif (*IPGM)
La commande WHEN permet d'évaluer une expression logique et, selon le résultat, de traiter ou non des commandes dans un programme CL ou une procédure CL ILE. Si la condition de l'expression logique est vérifiée (1 logique), la commande (ou le groupe de commandes d'un groupe DO) indiquée dans le paramètre THEN est exécutée, tandis que toutes les commandes WHEN et OTHERWISE du groupe de commandes SELECT sont ignorées. Si le résultat de l'expression logique est faux (0 logique), le contrôle passe à la prochaine commande séquentielle WHEN ou OTHERWISE dans le groupe SELECT.
Lorsqu'une commande IF, DO, DOWHILE, DOUNTIL ou DOFOR est indiquée au paramètre THEN, l'intégralité du groupe de commandes est ignoré si le résultat de l'expression logique est faux. Le contrôle passe alors à la commande WHEN, OTHERWISE ou ENDSELECT qui suit.
Lorsque le traitement de la commande ou du groupe DO indiqué par le paramètre THEN est terminé, le contrôle passe à la commande qui suit la commande ENDSELECT et le traitement se poursuit à partir de cette commande.
Restrictions :
- Cette commande est valide uniquement dans un programme CL ou une procédure CL ILE.
- Elle n'est admise que dans un groupe de commandes SELECT-ENDSELECT.
Condition (COND)
Indique l'expression logique à utiliser pour déterminer une condition dans le programme et définir le traitement qui doit s'ensuivre. Pour obtenir la description des expressions logiques, reportez-vous à la rubrique correspondante du manuel Rubriques CL de la catégorie Programmation de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/. Notez que ces dernières peuvent contenir des variables, des constantes et les fonctions intégrées %SUBSTRING, %SWITCH et %BINARY.
Pour déterminer si une valeur NULL a été affectée à un pointeur, la variable de pointeur CL peut être comparée à la valeur spéciale *NULL, sous réserve que le source CL soit compilé avec la commande CRTCLMOD (Créer un module CL) ou la commande CRTBNDCL (Créer un programme CL lié). Si le source CL est compilé avec la commande CRTCLPGM (Créer un programme CL), comparez la variable de pointeur CL à une autre variable de pointeur CL qui a été déclarée avec ADDRESS(*NULL) et n'a pas été modifiée.
Ce paramètre est obligatoire.
- valeur-logique
- Indiquez le nom d'une variable logique CL ou une expression logique.
Commande (THEN)
Indique la commande ou le groupe de commandes (dans un groupe DO ou IF) traités si l'expression logique est vérifiée. Après traitement, le contrôle passe à la commande figurant après la commande ENDSELECT associée à cette commande WHEN. Si la commande indiquée à ce paramètre est une commande DO, DOWHILE, DOUNTIL ou DOFOR, toutes les commandes du groupe DO sont considérées comme étant la commande spécifiée au paramètre.
Si aucune commande n'est indiquée au paramètre THEN (THEN est indéfini), le contrôle passe à la commande suivante située après la commande ENDSELECT associée à cette commande WHEN.
Si vous indiquez une commande DO, entourez uniquement celle-ci de parenthèses (et non les autres commandes faisant partie du groupe DO). Par exemple :
WHEN COND(&A *EQ &B) THEN(DO) CMD1 CMD2 ... ENDDO
Si l'expression logique est vraie et si aucune commande n'est indiquée au paramètre THEN (THEN est indéfini), le contrôle passe à la commande suivante située après la commande ENDSELECT associée à cette commande WHEN.
Vous pouvez indiquer toute commande CL au paramètre THEN, sauf les commandes suivantes :
- ELSE
- PGM, ENDPGM
- ENDDO
- MONMSG
- DCL, DCLF
- WHEN, OTHERWISE, ENDSELECT
Exemples
DCL VAR(&NAME) TYPE(*CHAR) LEN(10)
DCL VAR(&INT) TYPE(*INT) LEN(4)
:
SELECT
WHEN COND(&NAME *EQ *CMD) THEN(DO)
: (groupe de commandes CL)
ENDDO
WHEN COND(&INT *EQ 1 & &NAME *EQ *PGM) THEN(DO)
: (groupe de commandes CL)
ENDDO
ENDSELECT
WHEN indique la commande à exécuter si sa condition est vérifiée lors de l'évaluation. Les commandes WHEN d'un groupe SELECT sont évaluées dans leur ordre d'apparition. Si une condition WHEN n'est pas remplie, le traitement se poursuit avec la prochaine commande qui suit ENDSELECT.
Messages d'erreur
Aucun
© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.