× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Everyone has a different trick
.....this might get you what you want

// or maybe in one line:
result = %trim(%editc(field1:'3'))
+ '-'
+ %trim(field2)
+ '-'
+ = %trim(%editc(field3:'3'));

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Buck Calabro
Sent: Wednesday, January 15, 2014 10:32 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: To trim or not to trim?

On 1/15/2014 1:12 PM, William Howie wrote:

I have a question about string manipulation. Here's the scenario:

* Three fields I'm combining into one 10-character text field with
dashes between the values
* The three fields have these attributes:

o First field is numeric, length 10, no decimals
o Second is character, length 50
o Third is numeric, length 10, no decimals

I'm using the %CHAR BIF to convert the numeric fields into character
fields, and then using %TRIM. From what I can see of the data, the
significant values of each field, complete with dashes, would theoretically
fit into my 10-character field, even though the lengths of any one of the
three is as long by itself as my result field.

When I run my program, I get the value of the first field, with a dash
after it, and the value of the second, and that's it, like so:

Field1: 36
Field2: 002
Field3: 3208

Becomes "36-2" in my result field. Now, I'm guessing there's a reason
that the dash and the third field are getting cut off, but for the life of
me I don't know what it is. If it was some sort of size constraint, I would
think that all I would see is the first field to begin with, since it is 10
long, just like my result field. The reason may be really obvious, but I'm
sure not seeing it. Can anyone out there enlighten me on why this is
working this way? Thanks in advance.

Can you post your code?

These results could be caused by thinking the result field is varying, when
in fact it is fixed at 10 long. For instance:

// gives '36-002bbbb'
result = %trim(%char(field1)) + '-' + %trim(field2)

// appends '-3208' to the end of RESULT
// gives '36-002bbbb-3208'
// since RESULT is 10 long, the compiler // correctly discards characters
beyond the 10th result = result + '-' + %trim(%char(field3))

// probably wanted to do this
// which strips off the 4 final blanks before // trying to append FIELD3
result = %trim(result) + '-' + %trim(%char(field3))

// or maybe in one line:
result = %trim(%char(field1))
+ '-'
+ %trim(field2)
+ '-'
+ %trim(%char(field3));

--buck
--
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 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.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.