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.