END-PERFORM |
Fin de traitement |
|---|---|
| Cobol | |
Syntaxe
|
PERFORM procedurename1 [(THROUGH|THRU) procedurename2] END-PERFORM |
|
PERFORM procedurename1 [(THROUGH|THRU) procedurename2] identifier1 TIMES END-PERFORM |
|
PERFORM procedurename1 [(THROUGH|THRU) procedurename2] UNTIL condition1 END-PERFORM |
|
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]] END-PERFORM |
Paramètres
| Nom | Description |
|---|---|
| procedurename1 | Ce paramètre permet d'indiquer le nom de la procédure à exécuter en boucle ou de façon conditionnelle via l'instruction PERFORM. |
| procedurename2 | Ce paramètre permet de spécifier la dernière procédure à exécuter lorsqu'une plage de procédures est définie (avec THROUGH ou THRU). |
| identifier1 | Ce paramètre permet d'indiquer le nombre de fois que la procédure ou le bloc doit être exécuté lorsque la clause TIMES est utilisée. |
| condition1 | Ce paramètre permet de définir une condition logique qui, lorsqu'elle est vraie, met fin à l'exécution répétée de la procédure dans une boucle UNTIL. |
| identifier2 | Ce paramètre permet d'indiquer la variable de contrôle utilisée pour faire varier la boucle dans une structure VARYING. |
| identifier3 | Ce paramètre permet d'indiquer la valeur initiale de la variable de contrôle dans une boucle VARYING. |
| identifier4 | Ce paramètre permet de spécifier le pas d'incrémentation de la variable de contrôle dans la boucle VARYING. |
| identifier5 à identifier10 | Ces paramètres permettent de gérer des boucles imbriquées dans une structure VARYING...AFTER. Chacun correspond à une nouvelle variable de contrôle, sa valeur initiale, son incrément, et sa condition de fin. |
Description
Cette instruction permet d'indiquer la fin d'une instruction PERFORM.
Remarques
- L'instruction END-PERFORM est indispensable pour délimiter clairement la fin d'une boucle PERFORM, notamment dans les structures complexes. Elle évite l'ambiguïté lorsqu'un bloc de code contient plusieurs instructions imbriquées, surtout si le mot-clef PERFORM ne tient pas sur une seule ligne ou contient plusieurs conditions.
- END-PERFORM remplace l'utilisation de la clause PERFORM... avec un point final, ce qui améliore la lisibilité du code. Dans les anciens standards COBOL, un point marquait la fin d'un bloc PERFORM. L'usage de END-PERFORM est plus explicite et rend la structure logique du programme plus compréhensible pour les développeurs.
- La présence de END-PERFORM est particulièrement utile lorsqu'on utilise des instructions conditionnelles ou des boucles imbriquées à l'intérieur du bloc. Cela garantit que la portée exacte du PERFORM est bien identifiée, évitant des erreurs d'interprétation dans l'exécution.
- Cette syntaxe permet une meilleure compatibilité avec les normes modernes de COBOL, comme COBOL 85 et suivantes. L'usage d'instructions de fin explicites comme END-PERFORM, END-IF, END-EVALUATE est encouragé pour produire un code plus structuré et maintenable.
- Lorsque plusieurs variantes de PERFORM sont utilisées (avec UNTIL, TIMES, VARYING...), END-PERFORM sert de point de repère clair pour savoir jusqu'où s'applique l'itération. Cela est crucial pour la détection d'erreurs logiques ou de débordements lors de la compilation.
- L'usage de END-PERFORM améliore la détection des erreurs à la compilation, en signalant un PERFORM non fermé. Le compilateur peut ainsi fournir des messages plus précis en cas d'oubli ou de mauvaise imbrication dans la structure du programme.
- END-PERFORM rend également le code plus modulaire et plus facile à commenter ou à déplacer. En ayant des bornes claires, un bloc PERFORM peut être copié, réorganisé ou documenté sans risque de couper accidentellement l'instruction.
- Dans des blocs de traitement longs, l'instruction END-PERFORM évite de perdre la trace du début et de la fin de la boucle. Elle facilite ainsi le travail d'équipe, la relecture du code, et la maintenance dans les projets COBOL de grande envergure.
Dernière mise à jour : Jeudi, le 28 juillet 2011