Bienvenue dans ce nouveau module d’apprentissage ! Si vous lisez ceci, c’est sans doute que vous avez déjà fait vos premiers pas et que vous avez dit Bonjour tout le monde ! à l’univers fascinant du mainframe. La programmation COBOL ne se résume pas seulement à déclarer des variables ou à manipuler des fichiers ; le véritable cœur d’un programme réside dans sa capacité à prendre des décisions. Pour qu’un logiciel bancaire puisse autoriser ou refuser une transaction, il doit être capable d’évaluer des conditions. Dans ce guide, nous allons explorer ensemble les deux piliers de la logique décisionnelle : l’instruction IF et la puissante instruction EVALUATE.
L’instruction IF : La base de la prise de décision en programmation COBOL
L’instruction IF est l’outil le plus fondamental pour introduire de la logique dans vos programmes. Son rôle est simple : tester une condition (une expression booléenne) et exécuter un bloc d’instructions si cette condition est vraie.
En programmation COBOL, la structure de base d’un IF suit une logique très lisible, presque proche de l’anglais courant. Voici la syntaxe fondamentale :
IF condition THEN
instruction-1
ELSE
instruction-2
END-IF.
L’utilisation du mot-clé THEN est optionnelle dans de nombreuses versions de COBOL, mais il est fortement recommandé de l’utiliser pour améliorer la lisibilité de votre code, surtout lorsque vous débutez. L’élément le plus crucial, et souvent celui où les débutants commettent des erreurs, est le END-IF.
Sans le END-IF, le compilateur pourrait inclure des instructions non désirées dans la portée de votre condition, créant ainsi ce que l’on appelle du « code spaghetti ». Une fois que vous maîtrisez les bases de la structure de vos données (n’hésitez pas à consulter notre guide sur Maîtriser la DIVISION DATA en COBOL), l’instruction IF devient votre outil principal pour manipuler ces données selon des règles métier précises.
Complexifier la logique avec les opérateurs logiques
Une simple comparaison (comme vérifier si un solde est supérieur à zéro) est rarement suffisante dans un environnement industriel. La programmation COBOL nécessite souvent de combiner plusieurs critères. Pour cela, nous utilisons les opérateurs logiques : AND, OR, et NOT.
Ces opérateurs permettent de créer des conditions complexes. Par exemple, vous pourriez vouloir vérifier si un client est « Premium » ET que son solde est supérieur à 1000 euros.
Voici les principaux types de comparaisons que vous rencontrerez fréquemment :
- Comparaisons d’égalité :
=(ouIS EQUAL TO) pour vérifier si deux valeurs sont identiques. - Comparaisons d’inégalité :
NOT =(ouIS NOT EQUAL TO) pour détecter une différence. - Comparaisons de grandeur :
<,>` ,<=,>=pour les tests de seuils numériques. - L'opérateur AND : Pour exiger que toutes les conditions soient remplies simultanément.
- L'opérateur OR : Pour qu'au moins une des conditions soit satisfaite.
En combinant ces opérateurs, vous pouvez modéliser des règles de gestion extrêmement fines, essentielles pour la robustesse des systèmes critiques que COBOL gère au quotidien.
AND et OR, utilisez des parenthèses pour grouper vos expressions. Cela évite les erreurs de priorité logique et rend votre code bien plus facile à maintenir pour vos collègues.
L'instruction EVALUATE : L'alternative puissante et élégante
Si vous venez d'un langage comme C, Java ou Python, vous connaissez l'instruction switch ou match. En COBOL, nous avons l'instruction EVALUATE. Bien que l'on puisse techniquement remplacer chaque EVALUATE par une longue série de IF...ELSE IF...ELSE, l'instruction EVALUATE est bien plus performante et surtout, beaucoup plus lisible.
L'instruction EVALUATE permet de tester une variable (ou un groupe de variables) par rapport à plusieurs valeurs ou plages de valeurs de manière structurée. Sa syntaxe utilise le mot-clé WHEN pour chaque cas spécifique.
Voici un exemple de structure EVALUATE :
EVALUATE WS-TYPE-CLIENT
WHEN 'VIP'
PERFORM TRAITER-CLIENT-PREMIUM
WHEN 'STANDARD'
PERPERFORM TRAITER-CLIENT-NORMAL
WHEN 'PROBATION'
PERFORM TRAITER-CLIENT-ALERTE
WHEN OTHER
PERFORM TRAITER-CLIENT-INCONNU
END-EVALUATE.
L'avantage majeur de EVALUATE réside dans la clause WHEN OTHER. Elle agit comme un "cas par défaut", garantissant que votre programme gère toujours une situation imprévue, ce qui est vital pour la sécurité des processus bancaires.
Exemple complet : Programme de vérification de compte
Pour bien comprendre comment ces deux instructions cohabitent, voici un programme complet et fonctionnel. Ce code simule une vérification de solde bancaire en utilisant à la fois un IF pour une condition simple et un EVALUATE pour la gestion des types de comptes.
IDENTIFICATION DIVISION.
PROGRAM-ID. VERIF-SOLDE.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-VARIABLES.
05 WS-SOLDE PIC 9(5)V99 VALUE 1250.50.
05 WS-TYPE-COMPTE PIC X(10) VALUE 'PREMIUM'.
05 WS-MESSAGE PIC X(50).
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY "--- DEBUT DE LA VERIFICATION ---".
*> Utilisation de l'instruction IF pour une condition simple
IF WS-SOLDE < 0 THEN
MOVE "ALERTE : SOLDE DEFENICITAIRE !" TO WS-MESSAGE
ELSE
MOVE "SOLDE SUFFISANT." TO WS-MESSAGE
END-IF.
DISPLAY "STATUS SOLDE : " WS-MESSAGE.
*> Utilisation de EVALUATE pour la logique multi-critères
EVALUATE WS-TYPE-COMPTE
WHEN 'PREMIUM'
DISPLAY "ACCES : SERVICES VIP ACTIFS."
WHEN 'STANDARD'
DISPLAY "ACCES : SERVICES STANDARDS."
WHEN 'PROBATION'
DISPLAY "ACCES : SURVEILLANCE ACTIVE."
WHEN OTHER
DISPLAY "ACCES : TYPE DE COMPTE INCONNU."
END-EVALUATE.
DISPLAY "--- FIN DU PROGRAMME ---".
STOP RUN.
Dans ce programme, nous avons d'abord utilisé un IF pour tester si le solde est négatif. C'est une décision binaire (vrai ou faux). Ensuite, nous avons utilisé EVALUATE pour traiter les différents types de comptes, ce qui permet d'étendre facilement le programme si un nouveau type de compte (comme "GOLD") est créé à l'avenir.
Conclusion et prochaines étapes
Maîtriser la logique conditionnelle est une étape décisive dans votre apprentissage de la programmation COBOL. L'instruction IF vous permet de gérer les embranchements simples, tandis que l'instruction EVALUATE vous offre la structure nécessaire pour gérer la complexité des règles métier modernes sans transformer votre code en un labyrinthe illisible.
En résumé, retenez bien ces trois points :
- Utilisez
IFpour les tests binaires ou simples. - N'oubliez jamais le
END-IFpour délimiter vos blocs de code. - Privilégiez
EVALUATEdès que vous avez plus de deux cas de figure pour maintenir une clarté maximale.
Vous vous sentez prêt à relever de nouveaux défis ? Pour continuer votre progression, je vous invite à explorer nos autres guides sur la gestion des fichiers et la manipulation des structures de données complexes. La route est longue, mais avec une base solide, le mainframe n'aura plus de secrets pour vous !
Vous avez aimé cet article ? Abonnez-vous à notre newsletter pour ne manquer aucun module de formation COBOL !