|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Inscription : juillet 2009 Messages : 27 ![]() |
Bonjour
J'ai besoin de l'aide. voici mon code: Code :
L'execution m'envoie le message d'erreur suivant: ERREUR DE DONNEES DECIMALES |
||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : octobre 2006 Messages : 111 ![]() |
As tu déboguer ta variable ntrf£ ?
A tous les coups elle est mal passée. |
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Et puis il y a aucun intérêt à utiliser un curseur quand on ne renvoie qu'une seule ligne. Faire plutôt :
Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 86 ![]() |
Bonjour
penses à monitorer ta zone dans le FETCH avec un indicateur, pour qu'elle te renvoie 0 quand elle est à null. Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Quitte à définir des variables binaires, autant le faire correctement. En RPG, le " B " n'a jamais défini vraiment correctement une zone binaire car elle se limite au nombre de chiffres déclarés.
Par exemple, si en RPG une variable est définie en "4B 0", elle ne pourra jamais contenir qu'un entier de 2 octets binaires qui ne peut contenir que 4 chiffres. Un entier binaire de 4 octets peut stocker des valeurs allant de -2147483648 à +2147483647. Une zone "2B 0" en RPG est certes un entier binaire de 2 octets mais ne peut stocker que des valeurs allant de -9999 à +9999. C'est pour cette raison que vous ne devriez plus du tout utiliser le type de donnée " B " en RPG IV. Le type de donnée correct pour une zone "BINARY(2)" est "5I 0" et le type de donnée correct pour une zone "BINARY(2) UNSIGNED" est "5U 0". Pour "BINARY(4)", déclarer alors respectivement "10I 0" et "10U 0". Ah ! Et +1 avec K2R400. |
|
|
00
|
|
|
#6 | |||||||||||
|
Membre habitué
![]() Inscription : août 2008 Messages : 115 ![]() |
Citation:
Une zone en 2B 0 ne peut stocker que des valeurs allant de -99 à +99 bien que le stockage soit sur 2 octets. Pour les curieux, voici un petit prog rapide à faire pour tester ça. Code :
Code :
On remarque au passage, que le Bin(5,0) provoque le passage à 4 octets pour pouvoir stocker des valeurs supérieures à 32767 et inférieures à -32768. Citation:
Citation:
Il faut se rappeler les cours de CE1 de l'informaticien : 1 octets permet de stocker 256 valeurs différentes, 2 octets permettent de stocker 65536 valeurs différentes (256*256), etc... Donc un 5U0 est limité aux valeurs allant de 0 à +65535. et le 5I 0 aux valeurs -32768 à +32767 ("perte" d'un bit pour le signe). Note : Cela fait une grosse incohérence par rapport au Binaire qui gère automatiquement le nombre d'octets utilisés en fonction de la longueur déclarée. Voici un extrait de la doc IBM sur les valeurs possibles pour les Integer : Code :
Code :
|
|||||||||||
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com