« COBOL/Conditions » : différence entre les versions

Contenu supprimé Contenu ajouté
Guillpetiot (discussion | contributions)
mAucun résumé des modifications
maintenance
Ligne 24 :
Une condition est utilisée au sein d'une structure en <code>IF / ELSE</code>, dite structure conditionnelle. Une telle structure se présente sous cette forme :
 
{{définition
| contenu =
<source lang="cobol">
IF condition
THEN instructions
[ELSE instructions]
END-IF.
</source>
}}
 
 
Si la condition suivant le <code>IF</code> est vérifiée, alors les instructions suivant le <code>THEN</code> sont exécutées, celles suivant éventuellement le <code>ELSE</code> sont ignorées. Sinon, si la condition n'est pas vérifiée, alors les instructions suivant le <code>THEN</code> sont ignorées et celles suivant le <code>ELSE</code> sont exécutées. Voici un exemple simple de condition :
 
{{exemple
| contenu =
<source lang="cobol">
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. ex-condition.
Ligne 44 ⟶ 50 :
000009 END-IF.
000010 STOP RUN.
000011 END PROGRAM ex-condition.
</source>
}}
 
 
Ligne 53 ⟶ 61 :
Il est également possible d'imbriquer les conditions : placer des structures en <code>IF / ELSE</code> après des <code>THEN</code> ou des <code>ELSE</code>. Voici à quoi cela pourrait ressembler :
 
{{exemple
| contenu =
<source lang="cobol">
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. ex-condition.
Ligne 73 ⟶ 83 :
000018 END-IF.
000019 STOP RUN.
000020 END PROGRAM ex-condition.
</source>
}}
 
 
Ligne 82 ⟶ 94 :
Voici un autre exemple, utilisant la conjonction de conditions, dans lequel on teste si un entier est supérieur ou égal à 4 ET inférieur ou égal à 7 :
 
{{exemple
| contenu =
<source lang="cobol">
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. ex-condition.
Ligne 98 ⟶ 112 :
000014 END-IF.
000015 STOP RUN.
000016 END PROGRAM ex-condition.
</source>
}}
 
 
Ligne 105 ⟶ 121 :
Le langage nous offre une autre instruction, plus générale, pour tester des conditions : l'instruction <code>EVALUATE</code>.
 
{{définition
| contenu =
<source lang="cobol">
EVALUATE Z|condition|TRUE|FALSE
WHEN condition|TRUE|FALSE|{[NOT] X [THRU Y]}
Ligne 111 ⟶ 129 :
...
WHEN OTHER instructions
END-EVALUATE.
</source>
}}
 
 
Cette forme est très générale, on peut en distinguer 2 formes particulières. Voici la première :
 
{{définition
| contenu =
<source lang="cobol">
EVALUATE Z
WHEN [NOT] X [THRU Y]
Ligne 122 ⟶ 144 :
...
WHEN OTHER instructions
END-EVALUATE.
</source>
}}
 
 
Ligne 129 ⟶ 153 :
Voici un exemple présentant ces deux possibilités :
 
{{exemple
| contenu =
<source lang="cobol">
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. ex-evaluate.
Ligne 146 ⟶ 172 :
000015 END-EVALUATE.
000016 STOP RUN.
000017 END PROGRAM ex-evaluate.
</source>
}}
 
 
Voici la deuxième manière d'utiliser l'instruction <code>EVALUATE</code> :
 
{{définition
| contenu =
<source lang="cobol">
EVALUATE condition|TRUE|FALSE
WHEN condition|TRUE|FALSE
Ligne 157 ⟶ 187 :
...
WHEN OTHER instructions
END-EVALUATE.
</source>
}}
 
 
Ligne 164 ⟶ 196 :
Voici un autre exemple, pour illustrer cette possibilité :
 
{{exemple
| contenu =
<source lang="cobol">
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. ex-evaluate.
Ligne 182 ⟶ 216 :
000016 END-EVALUATE.
000017 STOP RUN.
000018 END PROGRAM ex-evaluate.
</source>
}}
 
 
Ligne 191 ⟶ 227 :
Il est possible de créer des variables conditionnelles, elles sont définies dans la <code>DATA DIVISION</code> et ont pour niveau 88. Elles doivent être rattachées à d'autres variables de niveau inférieur.
 
{{exemple
| contenu =
<source lang="cobol">
77 x PIC ...
88 nom-variable1 VALUE valeur1.
88 nom-variable2 VALUE valeur2.
...
</source>
}}
 
 
Le booléen <code>TRUE</code> est assigné à la variable conditionnelle dont la valeur correspond à la valeur de la variable dont les variables conditionnelles dépendent (ici x), le booléen <code>FALSE</code> est assigné à toutes les autres variables conditionnelles. Les valeurs des variables conditionnelles doivent correspondre à l'image de la variable dont elles dépendent. Elles peuvent être une valeur littérale, une liste de valeurs ou un ensemble de valeurs. Le format général de la déclaration d'une variable conditionnelle est donc :
 
{{exemple
| contenu =
<source lang="cobol">
88 nom-variable VALUE littéral [THRU littéral].
88 nom-variable VALUE littéral [, ...].
</source>
}}
 
 
Il est possible de mettre explicitement une variable conditionnelle à <code>TRUE</code>, toutes les autres variables conditionnelles qui lui sont apparentées seront automatiquement mises à <code>FALSE</code>. L'instruction qui permet cela est <code>SET</code>.
 
{{définition
| contenu =
<source lang="cobol">
SET nom-condition ... TO TRUE.
</source>
}}
 
 
Ligne 216 ⟶ 265 :
Voici un exemple dans lequel vous voyez les possibilités de définitions des variables conditionnelles et leur évaluation via une structure <code>EVALUATE</code> (vous pouvez faire de même avec une structure en <code>IF / ELSE</code>) :
 
{{exemple
| contenu =
<source lang="cobol">
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. ex-condition.
Ligne 237 ⟶ 288 :
000019 END-EVALUATE.
000020 STOP RUN.
000021 END PROGRAM ex-condition.
</source>
}}