L’instruction GO TO provoque un saut inconditionnel vers un paragraphe. Si elle est utilisée de manière désordonnée, elle rend le code difficile à lire, à comprendre et à maintenir.
GO TO et EXIT : pièges, usages recommandés et alternatives
Dans l’histoire du langage COBOL , les instructions GO TO et EXIT ont longtemps été utilisées pour organiser le flux du programme. Cependant, avec l’arrivée de la programmation structurée, leur usage est devenu marginal, voire déconseillé, au profit d'instructions plus lisibles comme PERFORM , IF , ou EVALUATE .
GO TO est dangereux
L’instruction GO TO provoque un saut inconditionnel vers un paragraphe. Si elle est utilisée de manière désordonnée, elle rend le code difficile à lire, à comprendre et à maintenir.
PROCEDURE DIVISION.
GO TO CALCUL.
AFFICHAGE.
DISPLAY "Affichage".
CALCUL.
DISPLAY "Calcul".
GO TO FIN.
FIN.
STOP RUN.
Le flux d’exécution devient ici imprévisible. Imaginez la difficulté de comprendre un programme de 10 000 lignes structuré de cette façon !
PERFORM
Pour structurer votre code, utilisez plutôt PERFORM :
PROCEDURE DIVISION.
PERFORM CALCUL.
PERFORM AFFICHAGE.
PERFORM FIN.
STOP RUN.
CALCUL.
DISPLAY "Calcul".
AFFICHAGE.
DISPLAY "Affichage".
FIN.
DISPLAY "Fin du programme".
Ce code est plus lisible, plus simple à tester, et permet un débogage plus fiable.
GO TO malgré tout ?Quelques cas restent acceptables :
EXIT
L’instruction EXIT termine proprement un paragraphe ou une section. Elle ne provoque pas de saut, elle sert simplement à signifier la fin d’un bloc de code.
CALCUL-TOTAL.
COMPUTE TOTAL = PRIX * QUANTITE.
EXIT.
Elle est surtout utile dans les sections longues, ou lorsqu’un paragraphe est appelé depuis plusieurs endroits du programme.
GO TO rend le code difficile à suivre → à éviter PERFORM est la solution moderne, claire et structurée EXIT peut être utilisé pour délimiter logiquement un paragraphe
Dans les prochaines sections, vous apprendrez à combiner PERFORM , IF , et EVALUATE pour construire des programmes robustes, lisibles et conformes aux standards professionnels actuels.