× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



c eval #CYRP = %int(WORK229) - ((%int(WORK299) *.01) * 100)

or something close to that.


"sjl" <sjl_abc@xxxxxxxxxxx> Sent by: rpg400-l-bounces@xxxxxxxxxxxx
06/09/2009 02:25 PM
Please respond to
RPG programming on the IBM i / System i <rpg400-l@xxxxxxxxxxxx>


To
rpg400-l@xxxxxxxxxxxx
cc

Subject
RPGIV - Ignoring decimal precision rules






Please don't ask WHY I need to do this. I just need to know if it is possible. I have a packed field named WORK299 that is defined as 29.9, and another packed field named #CYRP that is defined as 2.0.

I know that I can use traditional RPG like this:
C Z-ADD WORK299 #CYRP

and I will get the 2 least significant digits of WORK299 into the field #CYRP (it will truncate the leading digits of WORK299).


Is it possible to achieve a similar result (truncation of leading digits) in free-form RPGIV?

When I tried:
#CYRP = %DECH(WORK299 : 2 : 0)

This statement works if the value of WORK299 is 99 or lower, but if WORK299 contains a value greater than 99, I get MCH1210 - 'Receiver value too small to hold result'.

Thanks,
sjl


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.