SUBTRACT |
Soustraction |
|---|---|
| Cobol | |
Syntaxe
|
SUBTRACT identifier1 [,identifier2] ... FROM identifierm [ROUNDED] [;ON SIZE ERROR imperativestatement] |
|
SUBTRACT identifier1 [,identifier2] ... FROM identifierm GIVING identifiern ROUNDED [;ON SIZE ERROR imperativestatement] |
|
SUBTRACT (CORRESPONDING|CORR) identifier1 FROM identifierm [ROUNDED] [;ON SIZE ERROR imperativestatement] |
Paramètres
| Nom | Description |
|---|---|
| identifier1, identifier2, ... | Ce paramètre permet d'indiquer les valeurs à soustraire. Ces valeurs peuvent être des variables, des littéraux ou des expressions numériques. Vous pouvez spécifier plusieurs identifiants (séparés par des virgules) pour effectuer une soustraction multiple, c'est-à-dire soustraire plusieurs valeurs successivement d'une autre variable ou d'une autre expression. |
| identifierm | Ce paramètre permet d'indiquer la variable cible à partir de laquelle les valeurs spécifiées dans identifier1, identifier2, ... seront soustraites. C'est la valeur de départ étant réduite en fonction des valeurs à soustraire. Par exemple, si vous écrivez SUBTRACT A FROM B, cela signifie que vous soustrayez la valeur de A à B, et le résultat sera entreposé dans B. |
| ROUNDED | Ce paramètre permet d'indiquer que le résultat de la soustraction doit être arrondi au chiffre le plus proche selon les règles définies par la clause PICTURE de la variable cible. Si ce paramètre n'est pas utilisé, le résultat sera simplement tronqué, ce qui peut être problématique pour des calculs financiers ou des opérations nécessitant une précision spécifique. |
| imperativestatement | Ce paramètre permet d'indiquer un bloc d'instructions à exécuter si un dépassement de capacité se produit lors de la soustraction. Par exemple, si le résultat de la soustraction est trop grand ou trop petit pour être contenu dans la variable cible (identifierm), le programme exécute les instructions définies ici. Cela permet de gérer des erreurs liées aux types de données ou à des erreurs d'arithmétique, comme une tentative de soustraction entraînant un dépassement. |
| identifiern | Ce paramètre permet d'indiquer la variable où le résultat de la soustraction sera entreposé. Au lieu de modifier directement la valeur de identifierm, le résultat est placé dans identifiern. Cela peut être utile lorsque vous souhaitez conserver les valeurs originales intactes, ou lorsque vous effectuez des calculs et entreposez les résultats dans une autre variable. |
| CORRESPONDING ou CORR identifier1 | Ce paramètre permet de soustraire les valeurs des variables correspondantes entre deux groupes de données. Si CORRESPONDING est utilisé, chaque champ de identifier1 sera soustrait du champ correspondant dans identifierm. Cela est particulièrement utile lorsqu'on travaille avec des structures de données complexes, comme des tableaux ou des enregistrements (records), et que l'on souhaite effectuer des soustractions entre champs ayant des noms similaires ou des positions correspondantes. |
Description
Cette instruction permet la soustraction d'une valeur numérique à une autre.
Remarques
- Flexibilité dans les opérations de soustraction : L'instruction SUBTRACT en COBOL permet de soustraire une ou plusieurs valeurs (identifier1, identifier2, ...) d'une autre valeur (identifierm). Cela donne une grande flexibilité pour effectuer des soustractions multiples en une seule opération. Par exemple, vous pouvez soustraire plusieurs valeurs d'un seul champ ou d'une expression, ce qui simplifie l'écriture du code et réduit les erreurs potentielles dues à des soustractions successives manuelles.
- Manipulation des résultats via GIVING : L'option GIVING permet de spécifier une autre variable (identifiern) dans laquelle le résultat de la soustraction est entreposé, au lieu de modifier directement la variable cible (identifierm). Cela peut être utile lorsque vous souhaitez préserver l'intégrité des données d'origine tout en calculant un résultat séparé. Cela permet de garder une trace des valeurs d'entrée tout en obtenant les résultats souhaités dans des variables distinctes.
- Arrondi des résultats avec ROUNDED : L'option ROUNDED permet d'arrondir les résultats de la soustraction en fonction de la précision définie par la clause PICTURE de la variable cible. Sans cet arrondi, le résultat sera tronqué, ce qui peut poser problème dans des contextes nécessitant une précision numérique stricte, par exemple, dans les calculs financiers ou les applications où l'exactitude des résultats est cruciale. Cette option garantit que les valeurs sont arrondies au chiffre le plus proche, conformément aux attentes des utilisateurs.
- Gestion des erreurs avec ON SIZE ERROR : L'instruction SUBTRACT dispose de la possibilité d'ajouter un bloc d'instructions à exécuter en cas d'erreur de dépassement de taille, via le paramètre ON SIZE ERROR. Si la soustraction génère un résultat qui ne peut pas être contenu dans la variable cible (identifierm), par exemple en cas de débordement de capacité, ce bloc permet de gérer l'erreur de manière contrôlée. Cela évite les plantages du programme et permet d'implémenter des mécanismes de correction ou d'alerte.
- Utilisation de CORRESPONDING pour les structures de données : L'option CORRESPONDING ou CORR permet de soustraire les valeurs des variables correspondantes entre deux groupes de données. Cela est particulièrement utile lorsque l'on travaille avec des enregistrements complexes ou des tableaux dans lesquels les variables sont structurées de manière similaire. En utilisant CORRESPONDING, chaque élément de données d'un enregistrement ou tableau est soustrait de manière appropriée à son homologue dans un autre groupe de données.
- Soustraction de multiples valeurs : L'instruction SUBTRACT en COBOL permet d'ajouter plusieurs valeurs à soustraire d'une seule variable cible. Ce mécanisme est utile pour les calculs complexes où plusieurs valeurs doivent être soustraites en une seule étape. Par exemple, dans un contexte de traitement financier ou d'analyse de données, vous pourriez soustraire plusieurs montants ou ajustements d'une valeur de base, ce qui rend le code plus lisible et plus efficace.
- Comportement par défaut sans ROUNDED : Si l'option ROUNDED n'est pas utilisée, le résultat de la soustraction sera simplement tronqué au lieu d'être arrondi. Cela peut être problématique dans des situations où des calculs financiers ou d'autres types de calculs nécessitent une précision supplémentaire. Le troncage peut entraîner une perte d'information importante, notamment dans les calculs monétaires où les petites différences peuvent avoir un impact significatif.
- Soustraction des valeurs entre différents types de données : En utilisant l'instruction SUBTRACT, vous pouvez soustraire des valeurs de différents types de données, tels que des entiers, des décimaux ou même des champs de type date. Cela permet de traiter une variété de cas d'utilisation sans avoir besoin de conversions complexes. Cependant, il est important de s'assurer que les types de données sont compatibles pour éviter les erreurs à l'exécution, en particulier lorsqu'on effectue des calculs entre des types numériques et des champs de date.
Dernière mise à jour : Jeudi, le 28 juillet 2011