I believe %abs() returns a floating point.  You might try wrapping it to
cast to int.
Weight = 10 - %int(%abs(lenpk - lenrd));   // or %inth() depending on your
needs
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Alan Addison
Sent: Thursday, July 05, 2012 8:34 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: Field to small to hold result
I have the following procedure:
 
PMyProc           
DMyProc           PI             5i  0
D*
D Weight          S              5i  0
D lenpk           S              5i  0
D lenrd           S              5i  0
C*=======
/free
  .
  Stuff
  .
  Lenpk = %len(%trim(FieldPK));   // gives 25 in debug  : FieldPK is a db
field as is FieldRd
  Lenrd = %len(%trim(FieldRD));   // gives 12 in debug
  Weight = 10 - %abs(lenpk - lenrd);  //Would have thought -3  but ....
crashes
  .
  More stuff
  .   
  Return weight;
/end-free
 
Program goes into defib with the above mentioned error at the Weight =
statement
 
I thought it might be in the  %abs(lenpk - lenrd)   but I split that off as
a separate calc  and it did not complain at it. 
 
Any ideas?
 
 
Alan Addison
AHA Software
--
This is the RPG programming on the IBM i / System i (RPG400-L) mailing list
To post a message email: 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
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.