DIVIDE |
Divise |
|---|---|
| Cobol | |
Syntaxe
|
DIVIDE identifier1 INTO identifier2 [ROUNDED] [; ON SIZE ERROR imperativestatement] |
|
DIVIDE identifier1 INTO identifier2 [ROUNDED] GIVING identifier3 [ROUNDED] [; ON SIZE ERROR imperativestatement] |
Paramètres
| Nom | Description |
|---|---|
| identifier1 | Ce paramètre permet d'indiquer le diviseur, c'est-à-dire la valeur par laquelle on souhaite diviser. Il s'agit généralement d'une variable ou d'un littéral numérique. C'est la valeur placée à droite dans une division mathématique classique : par exemple, dans 10 ÷ 2, le diviseur est 2, donc ici identifier1. |
| identifier2 | Ce paramètre permet d'indiquer le dividende, soit la valeur à diviser. En COBOL, lorsque l'on écrit DIVIDE A INTO B, cela signifie : diviser B par A, puis remplacer le contenu de B par le résultat de cette division. Ce comportement peut surprendre, car il inverse l'ordre habituel des termes dans une division. |
| identifier3 | Ce paramètre permet d'indiquer le résultat de la division n'écrase pas le dividende (identifier2), mais est plutôt entreposé dans une nouvelle variable spécifiée ici (identifier3). Cela rend l'instruction plus claire et sûre, surtout lorsqu'on souhaite conserver les données originales intactes. |
| ROUNDED | Ce paramètre permet d'arrondir le résultat de la division au chiffre le plus proche, selon la précision définie dans la clause PICTURE de la variable cible. Sans ce mot, le résultat est tronqué. L'arrondi est particulièrement utile pour éviter les erreurs d'arrondi dans les calculs monétaires ou comptables. |
| ON SIZE ERROR | Ce paramètre permet de gérer les cas où une erreur de dépassement se produit, notamment si le résultat ne peut pas être contenu dans la variable cible. Par exemple, diviser un grand nombre par un très petit peut donner un résultat trop grand pour la variable. En cas d'erreur, on peut exécuter une ou plusieurs instructions spécifiées. |
| imperativestatement | Ce paramètre permet d'indiquer l'instruction COBOL (ou la liste d'instructions) à exécuter en cas d'erreur, comme définie par ON SIZE ERROR. Cela peut être une gestion de message, une assignation d'une valeur par défaut, ou même un arrêt du programme avec un message d'alerte. |
Description
Cette instruction permet d'effectuer la division de données numériques.
Remarques
- L'ordre des termes dans DIVIDE peut porter à confusion : Contrairement aux conventions mathématiques classiques, COBOL inverse souvent les opérandes. Par exemple, DIVIDE A INTO B signifie que B est divisé par A, et non l'inverse. Cela peut désorienter les nouveaux programmeurs, surtout ceux venant d'autres langages, et nécessite une attention particulière pour éviter des résultats inattendus.
- L'utilisation de GIVING rend le code plus lisible et sûr : Lorsque l'on utilise DIVIDE A INTO B GIVING C, le résultat est entreposé dans C, ce qui évite de modifier la valeur originale de B. Cette approche améliore la clarté du programme et permet un meilleur suivi des données, notamment dans des calculs complexes ou en chaîne.
- Le mot clef ROUNDED évite les pertes de précision : Si la variable de destination ne peut pas représenter tous les chiffres du résultat (exemple : un PICTURE limité), utiliser ROUNDED permet d'arrondir le résultat au lieu de le tronquer. C'est particulièrement utile dans les applications financières, où un centime d'écart peut avoir de grandes conséquences.
- Le traitement des erreurs de dépassement est essentiel : Avec des valeurs extrêmes ou mal formatées, une division peut dépasser la capacité d'une variable. L'option ON SIZE ERROR permet d'anticiper ces cas sans planter le programme. Cela renforce la robustesse du code, en garantissant que l'exécution continue ou se termine proprement.
- L'instruction DIVIDE peut être utilisée sans GIVING mais avec prudence : Sans GIVING, la valeur du dividende est écrasée directement par le résultat. Cela peut être pratique, mais aussi dangereux si l'on a besoin de conserver la valeur initiale pour des traitements ultérieurs. Il est donc conseillé de toujours évaluer si le résultat doit écraser ou non le contenu source.
- DIVIDE est souvent combinée avec d'autres calculs en chaîne : Dans certains programmes COBOL, on enchaîne plusieurs instructions arithmétiques comme ADD, SUBTRACT, MULTIPLY et DIVIDE. Dans ce contexte, DIVIDE joue un rôle central pour répartir des montants, calculer des taux, ou normaliser des valeurs avant agrégation ou affichage.
- L'instruction est sensible aux types de données utilisés : Le bon fonctionnement de DIVIDE dépend du type de données des identifiants utilisés. Si un des identifiants n'est pas numérique, ou mal défini (exemple : absence de clause USAGE IS COMPUTATIONAL pour des variables binaires), des erreurs de compilation ou d'exécution peuvent apparaître.
- Elle constitue une des bases du traitement de données numériques en COBOL : Bien que simple en apparence, l'instruction DIVIDE est indispensable dans les traitements comptables, statistiques ou financiers en COBOL. Elle permet d'effectuer des ajustements automatiques, des répartitions proportionnelles, ou des conversions d'unités avec précision et rigueur.
Dernière mise à jour : Jeudi, le 28 juillet 2011