8.8 LES INSTRUCTIONS CONDITIONNELLES

Il existe différents types de conditions en COBOL. Une condition peut-être :
– de relation
– de classe
– de signe

Une condition de relation a la structure suivante :

IF MONTANT IS EQUAL TO 25.00 ….
IF TOTAL > MONTANT ….
IF SALAIRE-BRUT NOT < LIMITE ….

Une condition de classe a la structure suivante :

IF CODE-PROV IS NOT ALPHABETIC ….
IF MONTANT IS NUMERIC ….

Une condition de signe a la structure suivante :

L ’item doit être numérique (PIC 9)

IF TOTAL-CREDITS IS NEGATIVE ….
IF MONTANT IS POSITIVE ….
IF MONTANT-EN-CAISSE - DEBOURSES IS NOT ZERO ….

Les conditions peuvent être combinées pour former des conditions complexes avec AND et OR .

IF MOYENNE = 0 AND NBR-ETUDIANT NOT EQUAL TO ZERO ….
IF A = B OR C > D ….

La structure de sélection est traduite en COBOL par l ’énoncé IF :

IF condition
THEN Instruction impérative ….
[ELSE Instruction impérative ….]
END-IF

Exemple :

IF HRES-TRAV > 40 THEN
    COMPUTE HRES-SUPP = HRES-TRAV - 40
    COMPUTE PAYE-SUPP = HRES-SUPP * TAUX-HOR
    MOVE 40 TO HRES-REG
ELSE
    MOVE ZERO TO PAYE-SUPP
    MOVE HRES-TRAV TO HRES-REG.
    COMPUTE PAYE-REG = HRES-REG * TAUX-HOR.
    COMPUTE PAYE-TOTALE = PAYE-REG + PAYE-SUPP
END-IF.

Il est possible de donner un nom à une condition et d ’utiliser celui-ci à sa place.
Un nom de condition est défini à l ’aide du niveau 88.

88 nom-condition VALUE const-1 [{THRU} const-2 ….]

La description de niveau 88 doit suivre immédiatement celle de l ’item élémentaire auquel on fait référence. La constante doit être du même type.

05 note PIC X.
88 echec VALUE ‘E’.

Quand le nom de condition est utilisé, la valeur de l ’item et la valeur indiquée dans la description de niveau 88 sont comparées.

IF echec THEN
    PERFORM traiter-echec

ELSE PERFORM traiter-reussite
END-IF.

EVALUATE

Il est utilisé pour représenter une structure de sélection de type ‘CASE’ :

EVALUATE CHOIX
    WHEN ‘A’ PERFORM TRAITER-AJOUT
    WHEN ‘M’ PERFORM TRA