|
Jeff,
Interestingly enough using a data structure rather than %DEC() doesn't throw the error.
D Oh@AirRateDS DS
D oh@Rate 10 5
D Oh@AirRate 10 inz('0009671180') overlay(oh@rate:1)
D Work_Rate S 63 15
/free
Monitor;
Work_Rate = (Oh@Rate / 100000);
$Air_Rate = Work_Rate;
On-Error;
$Air_Rate = *Zero;
EndMon;
It yields 0000000000000000000000000000000000000000000.000967118000000 for Work_Rate.
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Jeff Young
Sent: Monday, March 18, 2013 2:31 PM
To: RPG programming on the IBM i / System i
Subject: Convert character to decimal
All,
I have a character representation of a numeric field whose value is '0009671180' .
This represents 96.71180.
When I attempt to convert it back to a decimal value, I get the following
message:
Message ID . . . . . . : RNX0103 Severity . . . . . . . :
99
Message type . . . . . :
Escape
Date sent . . . . . . : 18/03/13 Time sent . . . . . . :
16:24:25
Message . . . . : The target for a numeric operation is too small to
hold
the
result.
Cause . . . . . : An arithmetic operation resulted in a value which is
too
large to fit in the target. If this is a numeric expression, the overflow
could be the result of the calculation of some intermediate result.
Recovery . . . : Either make the target of the operation larger or, if
in
an expression, choose the precision of the operands in the expression so
that intermediate value will fit into the intermediate result.
The code I am using is:
<snip>
D Work_Rate S 63 15
,
,
/Free
.
.
.
Monitor;
Work_Rate = (%Dec(Oh@AirRate : 10 : 5) / 100000);
$Air_Rate = Work_Rate;
On-Error;
$Air_Rate = *Zero;
EndMon;
</snip>
Since I made my work field more than large enough to hold the result, why am I receiving this error?
Thanks,
--
Jeff Young
Sr. Programmer Analyst
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx<mailto:RPG400-L@xxxxxxxxxxxx> To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx<mailto:RPG400-L-request@xxxxxxxxxxxx>
Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
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.