Archives par mot-clé : IF statement

Maîtriser la logique conditionnelle en COBOL : Guide des instructions IF et EVALUATE

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é : = (ou IS EQUAL TO) pour vérifier si deux valeurs sont identiques.
  • Comparaisons d’inégalité : NOT = (ou IS 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.

💡 Astuce de pro : Lorsque vous utilisez des conditions complexes avec 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 :

  1. Utilisez IF pour les tests binaires ou simples.
  2. N'oubliez jamais le END-IF pour délimiter vos blocs de code.
  3. Privilégiez EVALUATE dè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 !