VARYING |
Variable |
|---|---|
| Cobol | |
Syntaxe
|
SEARCH identifier [VARYING identifier] [[AT] END statementlist] WHEN condition(statementlist|NEXT SENTENCE [END-SEARCH] |
|
PERFORM procedurename1 [(THROUGH|THRU) procedurename2] VARYING identifier2 FROM identifier3 BY identifier4 UNTIL condition1 [AFTER identifier5 FROM identifier6 BY identifier7 UNTIL condition2 [AFTER identifier8 FROM identifier9 BY identifier10 UNTIL condition3]] |
Paramètres
| Nom | Description |
|---|---|
| VARYING identifier | Ce paramètre permet d'indiquer la variable qui sera modifiée automatiquement pendant l'exécution de l'instruction (dans SEARCH ou PERFORM). |
| FROM identifier3 | Ce paramètre définit la valeur de départ que prendra la variable spécifiée dans VARYING. Il initialise la boucle avec cette valeur. |
| BY identifier4 | Ce paramètre indique l'incrément (ou le décrément) à appliquer à la variable VARYING à chaque itération de la boucle. |
| UNTIL condition1 | Ce paramètre précise la condition de fin de boucle. L'exécution continue tant que cette condition n'est pas satisfaite. |
| AFTER identifier5 | Ce paramètre introduit une variable secondaire de contrôle, utilisée une fois que la première boucle a terminé. Cela permet des boucles imbriquées. |
| FROM identifier6 | Ce paramètre assigne la valeur initiale à la variable secondaire spécifiée après AFTER. |
| BY identifier7 | Ce paramètre indique le pas d'incrément pour la variable secondaire dans la boucle imbriquée. |
| UNTIL condition2 | Ce paramètre indique la condition de fin pour la variable secondaire. Il s'évalue à chaque itération de cette boucle imbriquée. |
| procedurename2 | Ce paramètre permet d'indiquer le nom de la deuxième procédure. |
Description
Cette instruction permet d'associer une variable avec une recherche.
Remarques
- L'instruction VARYING est essentielle pour le contrôle des boucles dans COBOL, notamment avec les instructions PERFORM et SEARCH. Elle permet d'automatiser l'évolution d'une variable, généralement utilisée comme compteur ou index, sans avoir à écrire manuellement l'incrémentation. Cela rend la structure des boucles plus claire et plus concise.
- Dans le cas de PERFORM ... VARYING, cette instruction fonctionne comme une boucle for dans d'autres langages. Elle définit un point de départ (FROM), un pas (BY) et une condition de sortie (UNTIL), ce qui permet de parcourir un ensemble d'actions de manière répétitive et contrôlée. C'est une manière structurée de gérer les répétitions.
- L'utilisation de plusieurs clauses AFTER permet de gérer des boucles imbriquées directement dans une seule instruction PERFORM. Cela permet, par exemple, de simuler des boucles à deux ou trois dimensions sans avoir à dupliquer manuellement les blocs de code. Cela simplifie le traitement de tableaux complexes ou de grilles.
- Avec SEARCH, l'instruction VARYING est utilisée pour parcourir dynamiquement un tableau indexé, généralement jusqu'à ce qu'une condition soit satisfaite. Elle permet de ne pas se limiter à une seule position et d'éviter l'utilisation de structures de contrôle manuelles pour explorer les éléments d'un tableau.
- Le couple VARYING/UNTIL améliore la lisibilité par rapport à des structures de boucle PERFORM UNTIL classiques avec incrémentation manuelle dans le corps. Le programmeur peut voir d'un coup d'oil les bornes de la boucle et la logique de répétition sans avoir à chercher dans le corps du code.
- La clause THROUGH ou THRU dans PERFORM associée à VARYING permet d'exécuter une séquence de paragraphes pour chaque itération. Cela est utile pour des traitements séquentiels ou répétitifs appliqués à différents éléments de données, notamment dans des processus de génération de rapports ou de traitements par lot.
- Le mot clef BY dans VARYING n'est pas limité à l'incrémentation de 1 : on peut l'utiliser pour compter par 2, 10, ou même décrémenter avec une valeur négative. Cela offre une grande flexibilité dans le contrôle du flux, surtout lorsque les pas ne sont pas constants ou qu'on doit parcourir les données en sens inverse.
- Un bon usage de VARYING permet de produire des programmes plus compacts et évite les erreurs fréquentes liées à l'oubli d'incrémentation ou à des conditions mal formulées. C'est une pratique recommandée pour toute boucle répétitive, surtout dans les traitements de fichiers ou de tableaux, car elle s'intègre naturellement dans la syntaxe structurée de COBOL.
Dernière mise à jour : Jeudi, le 28 juillet 2011