COBOL/Opérations arithmétiques

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Opérations arithmétiques
Icône de la faculté
Chapitre no 7
Leçon : COBOL
Chap. préc. :Tableaux
Chap. suiv. :Opérations sur les chaînes
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « COBOL : Opérations arithmétiques
COBOL/Opérations arithmétiques
 », n'a pu être restituée correctement ci-dessus.

Affectation[modifier | modifier le wikicode]

L'instruction MOVE permet d'affecter la valeur d'une variable ou d'un littéral à une ou plusieurs variables :


Cette instruction va associer la valeur de x à chacune des variables situées après le TO et séparées par des espaces.

Calcul et affectation[modifier | modifier le wikicode]

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 :


Les expressions arithmétiques intervenant dans un COMPUTE peuvent utiliser les opérateurs suivants : + (addition) - (soustraction) * (multiplication) / (division) ** ou ^ (exponentiation).

La valeur calculée de l’expression arithmétique à droite du signe d'égalité sera affectée à chaque variable situé à gauche de ce signe. Chacune de ces variables peut éventuellement être suivie de ROUNDED, qui arrondit arithmétiquement la valeur obtenue.

La clause optionnelle SIZE ERROR intercepte une erreur de dépassement de capacité du résultat. Si une telle erreur se produit, les instructions suivant cette clause sont exécutées.

L'instruction COMPUTE est utile pour des évaluations complexes, mais si vous n'avez pas besoin de cette "puissance", COBOL met à votre disposition d'autres instructions, plus spécialisées, qui consomment moins de ressources que COMPUTE.

Addition[modifier | modifier le wikicode]

L'instruction ADD permet d'ajouter une liste de valeurs à une liste de variables :


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).

Soustraction[modifier | modifier le wikicode]

L'instruction SUBTRACT permet de soustraire une liste de valeurs d'une liste de variables :


Dans ce cas, une somme intermédiaire a1 + a2 + ... sera calculée puis soustraite à chaque variable placée après le FROM.

Multiplication[modifier | modifier le wikicode]

L'instruction MULTIPLY permet de multiplier une valeur à une liste de variables :


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 :


Dans ce cas, le produit de x par y sera affecté à chaque variable placée après le GIVING.

Division[modifier | modifier le wikicode]

Ici aussi, nous avons 2 formats possibles. Voici le premier :


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é.

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 :


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.

Une division par zéro déclenche la clause SIZE ERROR.

Exemple : une calculatrice basique[modifier | modifier le wikicode]

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.

Début de l'exemple
Fin de l'exemple