|
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 +---
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.