|
The problem is the trailing "N", both %INT and %DEC ignore embedded blanks so the leading blanks are not the issue. The system has no way to know that you really have a zoned numeric value stored in a character field. What I would do is overlay that field with a zoned field and then move use the zoned portion. You should also replace the leading blanks with zeros to make it work properly. Something like: D myDS DS D AmountFld 15A D AmtField 15S 0 Overlay(AnountFld) Eval AmountFld = %XLATE(' ':'0':AmountFld); Eval TotField += AmountFld; Again, it is NOT the blanks, it is because you have an "N" and probably an occasional "J" in the field that's causing the issue. There are subprocedures in RPG xTools that will do this for you but, as you can see, it's only a few lines of code to do it yourself. What you are trying to do is convert a character field that contains a relatively "true" numeric representation of the data. But %DEC and %INT convert numeric values that are stored in character fields as text to numeric. What you're doing is similar to trying to "unpack" a packed field that is stored in a character field using %DEC. You'll never do it. The RPG xTool to do this is called NumToNum() you give it a buffer and buffer length and then tell it what format the data is stored in there, Zoned(15,0) in your example, and it returns the data in numeric form. -Bob Cozzi www.RPGxTools.com RPG xTools - Enjoy programming again. -----Original Message----- From: rpg400-l-bounces+cozzi=rpgiv.com@xxxxxxxxxxxx [mailto:rpg400-l-bounces+cozzi=rpgiv.com@xxxxxxxxxxxx] On Behalf Of Michael Jacobsen Sent: Thursday, March 09, 2006 1:53 PM To: RPG programming on the AS400 / iSeries Subject: How to convert character field w/ negative numeric data (255N) This may have been asked before, but I didn't see it in the archives. Here is the problem: Error message: A character representation of a numeric value is in error Line in error: Eval TotalFld += %Dec(AmountFld:15:2) Value of AmountFld from DUMP: AmountFld CHAR(15) ' 000000000255N' D TotalFld S 13S 2 Inz(0) My question is, how do I add a character field that contains numeric data, including negatives as represented above, to a numeric field? %Int gave the same error. MOVE appeared to work, but I don't want to create a temp field if I don't have to. On V5R2. Thanks, Mike
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.