Here's a quick & dirty program. There may be a better way, but this is
what my brainstorm came up with. The variable intVal is the result
you'll want.
d intVal S 3i 0
d value S 5p 2
/free
value = 2 * 1.01;
intVal = %int( value );
If value > intVal;
intVal += 1;
EndIf;
*inlr = *on;
/end-free
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Lance Gillespie
Sent: Friday, February 27, 2009 4:39 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: Rounding up
I have a situation where I need my results rounded up if they are not
exact.
As in:
2 * 1.01 = 3
2 * 1.50 = 3
2 * 1.51 = 4
The source and target numbers are 7,0 and the factor is a constant.
I thought:
target = %dech(source * 1.01) : 7 : 0)
or maybe
target = %dech(source * 1.01) : 9 : 2)
would do it, but no joy.
I suppose I could do the calcs twice with %dec, once to a 7,0 result and
once to a 9,2 result
(assuming %dec truncates) and then add one to the 7,0 result if the two
are not equal, but
I would rather not.
Is there some way to force these calcs to round up if not exact?
This mailing list archive is Copyright 1997-2026 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.