|
The point I am making is that the program work fine as RPGIV ILE code under V4 R2 . When we went to V4 R3 it produced the gotcha. How many other instances are out there waiting to pop up? I needed to punt in the new BIF %DEC so that the program procuded the correct result at 3 decimals. The bit about precision is a mystery to me. What is the defference between decimals and precision. Anyway all the formulae should produce the same result, they do not. boldt@ca.ibm.com wrote: > > > Perhaps we need to be more specific in the ILE RPG Reference manual about > how %DEC works. In particular, the final arithmetic operation within the > %DEC parameter expression is a multiplication by variable DTIQNS. Since > we know that BIF %DEC results in a decimal (15,3) value, the compiler > takes a little shortcut and performs the multiplication operation with > that precision. We did it this way to maximize the precision of the > arithmetic results. After all, it's a lot easier for a programmer to > reduce excess precision than to recover lost precision. > > If you really want zero digits of precision in the result, you should use > %DEC(expr:size:0). > > Cheers! Hans > > > Frank wrote: > >We recompile an ILE RPGIV pgm after doing a mod and got some strange results. > >The following code illustrates the problem. Its compilable and if u debug it > >and check the results u will see they are different when u would expect them > >to be the same. > >The BIF %DEC is the reason. > >D DAABE S 15 3 DIM(99) > > * > >C Z-ADD 5.000 RCDNC1 11 3 > >C Z-ADD 0.000 RCDNC2 11 3 > >C Z-ADD 2.5900 DTITRD 15 4 > >C Z-ADD 144.000 DTIQNS 11 3 > >C Z-ADD 1 DTITRM 11 4 > >C CLEAR DAABE > >C > >C > > * > >C EVAL(H) DAABE(05) = RCDNC1 / 100 * DTITRD * DTIQNS > >C EVAL(H) DAABE(06) = (RCDNC1+RCDNC2) / 100 * DTITRD > >C * DTIQNS > > * > >C EVAL(H) DAABE(07) = RCDNC1 / 100.00 * DTITRD * DTIQNS > >C EVAL(H) DAABE(08) = (RCDNC1+RCDNC2) / 100.00 * DTITRD > >C * DTIQNS > > * > >C EVAL(H) DAABE(09) = %DEC((RCDNC1 / 100.000 > >C * DTITRD * DTIQNS) : 15 : 3) > >C EVAL(H) DAABE(10) = %DEC(((RCDNC1+RCDNC2) / 100.000 > >C * DTITRD * DTIQNS) :15 :3) > > * > > * > >C SETON LR > > Hans Boldt, ILE RPG Development, IBM Toronto Lab, boldt@ca.ibm.com > > > +--- > | This is the RPG/400 Mailing List! > | To submit a new message, send your mail to RPG400-L@midrange.com. > | To subscribe to this list send email to RPG400-L-SUB@midrange.com. > | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: david@midrange.com > +--- ____________________________________________________________________ Get your own FREE, personal Netscape WebMail account today at http://webmail.netscape.com. +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.