IF / ELSE
L'instruction IF permet d'exécuter du code de façon conditionnelle selon qu'une condition est vraie (TRUE) ou fausse. Elle est souvent combinée avec ELSE pour gérer le cas contraire. En COBOL, les conditions utilisent des opérateurs de comparaison (=, >, <, NOT, AND, OR) et peuvent tester des variables numériques, alphanumériques ou des classes (NUMERIC, ALPHABETIC…).
Exemple de code : Contrôle d'âge pour un accès
IDENTIFICATION DIVISION.
PROGRAM-ID. CONDITION-IF-ELSE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 AGE PIC 99 VALUE 00.
01 MANQUANT PIC 99 VALUE 00.
01 MESSAGE-ACCES PIC X(40) VALUE SPACES.
PROCEDURE DIVISION.
DISPLAY "Entrez votre âge : ".
ACCEPT AGE.
IF AGE >= 18
MOVE "Accès autorisé - Bienvenue !" TO MESSAGE-ACCES
DISPLAY MESSAGE-ACCES
ELSE
MOVE "Accès refusé - Vous êtes mineur." TO MESSAGE-ACCES
DISPLAY MESSAGE-ACCES
COMPUTE MANQUANT = 18 - AGE
DISPLAY "Il vous manque " WITH NO ADVANCING
DISPLAY MANQUANT WITH NO ADVANCING
DISPLAY " an(s)."
END-IF
DISPLAY "Fin du programme."
STOP RUN.
Télécharger le code
Résultat attendu à l'exécution (deux cas possibles)
Cas 1 – Âge ≥ 18 :
Entrez votre âge :
21
Accès autorisé - Bienvenue !
Fin du programme.
Cas 2 – Âge < 18 :
Entrez votre âge :
15
Accès refusé - Vous êtes mineur.
Il vous manque 3 an(s).
Fin du programme.
Explication détaillée – focus sur IF / ELSE
IF AGE >= 18
Teste si la variableAGEest supérieure ou égale à 18.
Les opérateurs possibles :=,>,<,>=,<=,NOT =(ou<>sur certains compilateurs).
Pour les débutants : C’est comme demander « Est-ce que l’âge est au moins 18 ? ».MOVE "Accès autorisé - Bienvenue !" TO MESSAGE-ACCES
Si la condition est vraie, on exécute ces instructions (ici une seule ligne, mais on peut en mettre plusieurs).ELSE
Bloc exécuté si la condition est fausse.
Pour les débutants : C’est le « sinon » de la vie réelle.END-IF.
Obligatoire pour fermer le blocIF(sauf dans les anciens COBOL où on utilisait des points et des paragraphes).
Bonne pratique moderne : toujours utiliserEND-IFpour éviter les erreurs d’imbrication.COMPUTE 18 - AGE(dans leELSE)
Calcule combien il manque d’années (on réutiliseCOMPUTEvu précédemment).DISPLAY (18 - AGE) " an(s)."
Affiche directement le résultat du calcul sans le stocker dans une variable intermédiaire (syntaxe autorisée en COBOL moderne).
Points clés pour débutants :
• Toujours terminer par
• On peut imbriquer des
• Pour tester plusieurs conditions :
•
• Toujours terminer par
END-IF.• On peut imbriquer des
IF dans d’autres IF (mais attention à la lisibilité).• Pour tester plusieurs conditions :
IF condition1 AND condition2 ou OR.•
WITH NO ADVANCING évite le saut de ligne après DISPLAY (utile pour coller du texte).
Prochain sujet : EVALUATE (le « switch/case » de COBOL) et les conditions composées avancées.