Aller au contenu

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

  • COND Condition obligatoire
  • THEN Commande

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)
Compatible multitâche : Oui

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.

Paramètres

Mot-clé Description Valeurs possibles Remarques
COND Condition Valeur logiqueLogical value Obligatoire, positionnel 1
THEN Commande Chaîne de commandeCommand string Facultatif, positionnel 2

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.

© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.