Exercice 11 : subtract

Micro-exercice

Objectif : utiliser SUBTRACT pour faire une soustraction simple. Vous allez saisir un montant total et un montant à retirer, puis calculer le reste. C’est un exercice très concret : solde, stock, différence, “ce qu’il reste”.

Ce que vous pratiquez

  • Déclarer des variables numériques adaptées.
  • Saisir deux valeurs avec ACCEPT.
  • Calculer un reste avec SUBTRACT ... FROM ....

Repère sur les colonnes

  • Zone A : colonnes 8 à 11 (7 espaces pour divisions et déclarations).
  • Zone B : colonnes 12 à 72 (11 espaces pour instructions).

Le bloc <pre> conserve les espaces pour garder un rendu “code réel”.

Exemple minimal COBOL Format fixe
Télécharger le code
       IDENTIFICATION DIVISION.
       PROGRAM-ID. EXO-SUBTRACT-11.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  WS-TOTAL             PIC 999 VALUE 000.
       01  WS-RETRAIT           PIC 999 VALUE 000.
       01  WS-RESTE             PIC 999 VALUE 000.

       PROCEDURE DIVISION.
           DISPLAY "Entrez un total (000 a 999) : "
           ACCEPT WS-TOTAL
           DISPLAY "Entrez un retrait (000 a 999) : "
           ACCEPT WS-RETRAIT

           MOVE WS-TOTAL TO WS-RESTE
           SUBTRACT WS-RETRAIT FROM WS-RESTE

           DISPLAY "Reste : " WS-RESTE
           STOP RUN.

Lecture simple

On copie d’abord le total dans WS-RESTE. Ensuite SUBTRACT WS-RETRAIT FROM WS-RESTE enlève le retrait du reste. Cela évite de “détruire” la valeur originale du total, ce qui est pratique pour relire et déboguer.

À retenir : SUBTRACT A FROM B signifie : “B = B - A”. C’est une écriture typique COBOL : on lit “retirer A de B”.

Votre micro-exercice

Faites ces 3 modifications :

  1. Ajoutez un message si le retrait est supérieur au total (afficher “Retrait trop grand”).
  2. Affichez aussi le total original après le calcul, pour vérifier qu’il n’a pas changé.
  3. Testez avec un total 050 et un retrait 060 pour voir ce qui se passe, puis corrigez votre logique.

Erreur fréquente à éviter

Se tromper de sens : écrire SUBTRACT WS-TOTAL FROM WS-RETRAIT par erreur. Vous auriez alors un calcul inverse et un résultat incohérent.

Autre piège : choisir une variable trop courte. Si vous autorisez 999, il faut au moins PIC 999. Si vous mettez PIC 99, vous limitez à 99 et vous créez des dépassements.

Conseil : gardez toujours une variable “originale” et une variable “résultat”. C’est plus simple pour vérifier vos calculs.