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-echecELSE 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