Cible pour opération numérique trop petite

24-11-2006 à 14:23:27
bonjour,

malgré un texte de message clair, je ne vois pas mon erreur.

Message . . . . : (C G D F) Cible pour opération numérique trop petite pour
contenir résultat.

Cause . . . . . : La procédure RPG DERAPGLE du programme SICOBJ/DERAPGLE, à
l'instruction 867, a effectué une opération arithmétique dont le résultat
est trop grand pour tenir dans la cible. S'il s'agit d'une expression
numérique, le dépassement peut être dû au traitement de résultats
intermédiaires.

dans la ligne en question il y a : Besoin += RQQTY;
où RQQTY est un zone num packée de 10 dont 3
et BESOIN est une zon num packée de 11 dont 3

avez-vous une idée ?

cette ligne est un cumul dans la boucle suivante :
setll (house : itnbr) REQMTS;
reade (house : itnbr) REQMTS;
DoW Not %Eof(REQMTS) and rqerc <> 72;
Besoin += RQQTY;
EndDo;
  • Liens sponsorisés



23-11-2006 à 18:57:20
Eh oui, tu t'es trompé dans ta boucle dowhile et c'est gros !

setll (house : itnbr) REQMTS;
reade (house : itnbr) REQMTS;
DoW Not %Eof(REQMTS) and rqerc <> 72;
Besoin += RQQTY;
reade (house : itnbr) REQMTS;
EndDo;

Soit tu ne fais qu'un seul read (ou reade) avec une boucle dountil, avec le read immédiatement sous le dountil, suivi de suite du test de l'EOF pour quitter la boucle,
soit tu fais deux read (ou reade) avec une boucle dowhile avec un read avant le dowhile et un autre identique juste avant le enddo, mais pas un mélange des deux....
Comme dans ta programmation l'EOF n'est jamais atteint dans ta boucle sans fin, il arrive évidemment un "moment" où le compteur Besoin dépasse sa capacité et ... tu plantes avec un joli message explicatif.
24-11-2006 à 14:23:27
désolé...



merci
  • Liens sponsorisés