hello a tous,
je cherche en cobol a arrondir un chiffre au multiple de 10 suivant ?
ex : 53 le multiple de 10 suivant est 60 !
a moins qu il existe un moyen de calculer le modulo d un chiffre en cobol ?
par avance merci.
Version imprimable
hello a tous,
je cherche en cobol a arrondir un chiffre au multiple de 10 suivant ?
ex : 53 le multiple de 10 suivant est 60 !
a moins qu il existe un moyen de calculer le modulo d un chiffre en cobol ?
par avance merci.
heu .... j ai reflechi un peu plus et j ai trouvé comment faire le modulo en cobol ...
du coup j ai pu coder un truc pour arrondir mon chiffre au multiple 10 suivant.
je laisse ouvert cette discussion si jamais qlq un aurait touvé mieux que moi (et y a de forte chance ;) )
a+
Pour moi le modulo c'est le reste de la division entière ...
Quel est le rapport avec votre besoin ?
Bonjour.
Peut être que notre ami nenekes utilise le reste pour le tester à 0 pour ne pas prendre le multiple de 10 suivant si le nombre est déjà multiple de 10. Mais comme il ne nous dit pas comment il a fait on ne pourra pas le savoir.
n = q * 10 + r
si r = 0 alors n' = n
sinon n' = (q + 1) * 10.
n' est le multiple de 10 suivant
algorithmiquement, je suppose qu'on divise par 10, on a le résultat et le reste. Si le reste est non nul, on ajoute un au résultat. Puis on multiplie le résultat par 10.
merci pour vos reponses!
effectivement hédhili a vu juste concernant mon besoin, et sa solution est bien plus pertinente que la mienne :(
j'avais fait ceci;
DIVIDE n BY 10 GIVING q REMAINDER r
n' = n + (10 - r)
n' etant le multiple suivant.
encore merci pour vos solutions :)
a+
oui tu as raison j'ai juste été faineant pour reecrire le test if r = 0 comme l a precisé hedhili ;)
je voulais juste dire que la premiere solution qui m'avais traversee l espris etait de oter r a 10 pour les ajouter a n.
et je trouvais l autre solution plus logique, la mienne un peu tiree par les cheveux ;)
encore merci pour votre aide !
a+
Bonjour.
S'il s'agit d'une application de paiement quelconque où l'on voudrait arrondir le net à payer au multiple supérieur d'une unité monétaire, il est fort probable que l'on veuille aussi sauvegarder le reste en le considérant comme une avance de trésorerie à récupérer sur le prochain paiement.
A noter qu'il existe la possibilité d'obtenir directement le modulo en COBOL.
Cette fonctionnalité est implémentée sous forme de fonction intrinséque.
( " Intrinsic function " ).
Par exemple ( sous Enterprise COBOL for z/OS v3.4 )
Et à l'exécution :Code:
1
2
3
4 ACCEPT A COMPUTE M = FUNCTION MOD ( A 10 ) DISPLAY 'A=' A DISPLAY 'M=' M
Code:
1
2
3
4
5 A=50 M=00 A=51 M=01