« COBOL/Opérations arithmétiques » : différence entre les versions

Contenu supprimé Contenu ajouté
catégorisation - Modif. navigateur chapitre
Guillpetiot (discussion | contributions)
mAucun résumé des modifications
Ligne 12 :
L'instruction MOVE permet d'affecter la valeur d'une variable ou d'un littéral à une ou plusieurs variables :
 
<source lang="cobol">MOVE x TO var1 var2 ...</source>
 
Cette instruction va associer la valeur de x à chacune des variables situées après le TO et séparées par des espaces.
Ligne 20 :
Il est permis d'affecter des expressions plus complexes à des variables après un calcul. Pour cela, nous utilisons l'instruction COMPUTE, dont le format est le suivant :
 
<source lang="cobol">
COMPUTE {identificateur [ROUNDED]} ... = expression arithmétique
[SIZE ERROR instructions]
[END-COMPUTE].</source>
 
Les expressions arithmétiques intervenant dans un COMPUTE peuvent utiliser les opérateurs suivants : + (addition) - (soustraction) * (multiplication) / (division) ** ou ^ (exponentiation).
Ligne 36 ⟶ 37 :
L'instruction ADD permet d'ajouter une liste de valeurs à une liste de variables :
 
<source lang="cobol">
ADD a1 a2 ... TO {identificateur [ROUNDED]} ...
[SIZE ERROR instructions]
[END-ADD].</source>
 
Dans ce cas, une somme intermédiaire a1 + a2 + ... sera calculée puis ajoutée à chaque variable placée après le TO (chacune pouvant éventuellement être arrondie).
Ligne 46 ⟶ 48 :
L'instruction SUBTRACT permet de soustraire une liste de valeurs d'une liste de variables :
 
<source lang="cobol">
SUBTRACT a1 a2 ... FROM {identificateur [ROUNDED]} ...
[SIZE ERROR instructions]
[END-SUBTRACT].</source>
 
Dans ce cas, une somme intermédiaire a1 + a2 + ... sera calculée puis soustraite à chaque variable placée après le FROM.
Ligne 56 ⟶ 59 :
L'instruction MULTIPLY permet de multiplier une valeur à une liste de variables :
 
<source lang="cobol">
MULTIPLY x BY {identificateur [ROUNDED]} ...
[SIZE ERROR instructions]
[END-MULTIPLY].</source>
 
Dans ce cas, chacune des variables placées après le BY est multipliée par x. Il est également possible de stocker le résultat de cette multiplication dans d'autres variables, pour cela, nous utilisons le format suivant :
 
<source lang="cobol">
MULTIPLY x BY y GIVING {identificateur [ROUNDED]} ...
[SIZE ERROR instructions]
[END-MULTIPLY].</source>
 
Dans ce cas, le produit de x par y sera affecté à chaque variable placée après le GIVING.
Ligne 72 ⟶ 77 :
Ici aussi, nous avons 2 formats possibles. Voici le premier :
 
<source lang="cobol">
DIVIDE diviseur INTO {identificateur [ROUNDED]} ...
[SIZE ERROR instructions]
[END-DIVIDE].</source>
 
Dans ce cas, chaque variable située après INTO sera divisée par la valeur placée avant INTO. La division effectuée est une division euclidienne, ou division entière : on ne garde que la partie entière du quotient, le reste de cette division n'est pas récupéré.
Ligne 80 ⟶ 86 :
Il est également possible de stocker le résultat de cette division dans d'autres variables, pour cela nous utilisons le second format de l'instruction DIVIDE :
 
<source lang="cobol">
DIVIDE x BY y GIVING {identificateur [ROUNDED]} ...
[REMAINDER reste]
[SIZE ERROR instructions]
[END-DIVIDE].</source>
 
Dans ce cas, le résultat de la division de x par y sera affecté à toutes les variables situées après GIVING. Si la clause REMAINDER est présente, alors une seule variable pourra stocker ce résultat. Le reste de la division sera stocké dans la variable suivant le REMAINDER.
Ligne 93 ⟶ 100 :
Voici un programme récapitulatif qui reprend toutes ces notions. Cette mini-calculatrice vous demande de saisir deux opérandes et un opérateur, puis vous affichera le résultat du calcul ou un message d'erreur. Essayez de refaire ce programme vous-mêmes pour vous exercer ou améliorez-le.
 
<source lang="cobol">
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. calculatrice.
000003
000004 DATA DIVISION.
000005 WORKING-STORAGE SECTION.
000006 77 a PIC 99.
000007000006 77 ba PIC 99.
000008000007 77 opb PIC X99.
000008 77 op PIC X.
000009 77 result PIC S9999 VALUE 0.
000010
000011 PROCEDURE DIVISION.
000012 saisie.
000013 DISPLAY "1er opérande : " NO ADVANCING ACCEPT a.
000014 DISPLAY "Opérateur : " NO ADVANCING ACCEPT op.
000015 DISPLAY "2nd opérande : " NO ADVANCING ACCEPT b.
000016 evaluation.
000017 EVALUATE op
000018 WHEN "+" ADD a b TO result
000019 WHEN "-"
000020 MOVE a TO result SUBTRACT b FROM result
000021 WHEN "*" MULTIPLY a BY b GIVING result
000022 WHEN "/" DIVIDE a BY b GIVING result
000023 WHEN "^" COMPUTE result = a ^ b
000024 WHEN "%"
000025 DIVIDE a BY b GIVING result REMAINDER result
000026 WHEN OTHER DISPLAY "Opérateur incorrect !"
000027 END-EVALUATE.
000028 affichage.
000029 DISPLAY a SPACE op SPACE b " = " result.
000030 STOP RUN.
000031 END PROGRAM calculatrice.</source>
 
[[Catégorie:COBOL]]