Verbe arithmétique SUBTRACT

Comprendre SUBTRACT N1 FROM N2 en COBOL

La forme de base SUBTRACT N1 FROM N2 signifie : « soustraire N1 de N2 », c’est-à-dire que N2 devient N2 - N1 après l’instruction.

Syntaxe simple Visualisation des valeurs
Suis pas à pas le passage de N1 et N2 avant et après SUBTRACT.
Simulation des valeurs N1 et N2
N1 10
Valeur à soustraire
N2 (avant) 30
Valeur de départ
N2 (après) ?
Résultat N2 - N1
SUBTRACT N1 FROM N2N2 = N2 - N1
Visualisation de l'exécution
Avant SUBTRACT : N1 = 10 N2 = 30 Après SUBTRACT N1 FROM N2 : N2 = ?

SUBTRACT N1 FROM N2 pas à pas

Étape 1 – Lire la syntaxe

SUBTRACT N1 FROM N2 se lit de droite à gauche : on part de N2 et on lui enlève N1, le résultat est recodé dans N2.

Après l’instruction, la valeur initiale de N2 est perdue : N2 contient désormais N2 - N1.

Étape 2 – Exemple numérique

Si N1 vaut 10 et N2 vaut 30, alors SUBTRACT N1 FROM N2 donne N2 = 20.

On obtient exactement l’opération arithmétique 30 - 10 = 20, stockée dans N2.

Étape 3 – Variantes fréquentes

On peut soustraire plusieurs valeurs en une fois : SUBTRACT A B FROM C signifie C = C - A - B.

Pour préserver les entrées, on utilise plutôt SUBTRACT ... FROM ... GIVING résultat, ce qui évite de modifier directement N2.

Exemple 1 – SUBTRACT N1 FROM N2
* N2 devient N2 - N1 WORKING-STORAGE SECTION. 01 N1 PIC 9(3) VALUE 010. 01 N2 PIC 9(3) VALUE 030. PROCEDURE DIVISION. DISPLAY "Avant : N1 = " N1 " N2 = " N2. SUBTRACT N1 FROM N2. DISPLAY "Après SUBTRACT N1 FROM N2 : N2 = " N2.
Exemple 2 – SUBTRACT avec GIVING
* Préserver N2 en stockant le résultat * dans une troisième variable WORKING-STORAGE SECTION. 01 N1 PIC 9(3) VALUE 010. 01 N2 PIC 9(3) VALUE 030. 01 RESULT PIC 9(3). PROCEDURE DIVISION. SUBTRACT N1 FROM N2 GIVING RESULT. DISPLAY "N2 est toujours : " N2. DISPLAY "Résultat = " RESULT.
Exemple 3 – Plusieurs valeurs soustraites
* SUBTRACT A B FROM C -> C = C - A - B WORKING-STORAGE SECTION. 01 A PIC 9(3) VALUE 005. 01 B PIC 9(3) VALUE 010. 01 C PIC 9(3) VALUE 050. PROCEDURE DIVISION. SUBTRACT A B FROM C. * Ici : C = 50 - 5 - 10 = 35 DISPLAY "C après SUBTRACT A B FROM C : " C.