|
No, you can't have a negative ending position in the substring function.
Michael Schutte
Work 614-492-7419
email michael_schutte@xxxxxxxxxxxx
"Stiju Easo"
<stiju.as400@gmai
l.com> To
Sent by: "RPG programming on the AS400 /
rpg400-l-bounces@ iSeries" <rpg400-l@xxxxxxxxxxxx>
midrange.com cc
Subject
04/05/2006 09:01 Re: RPGLE pgm to parse a string
AM
Please respond to
RPG programming
on the AS400 /
iSeries
<rpg400-l@midrang
e.com>
should it be
if %subst(input:pos:1) = '_';
or
if %subst(input:pos:-1) = '_';
as the methord u said we have to come reversely
will rpgle accept -1 in place of integer?
On 4/5/06, Scott Klement <rpg400-l@xxxxxxxxxxxxxxxx> wrote:
>
> Hello,
>
> > Its not in flat file,Its is a field
> > My field may have varible no of '_'
> > i want to extract values b/w second last '_' and third last '_'.
> > i want to store this details in same database as a field
>
> I'm sorry if someone has already answered your question. I've read the
> thread over, but I'm somewhat confused by whether this was resolved or
> not.
>
> What I'd do is write a loop that searches for the underscore character.
> Something like this:
>
> len = %len(Input);
> count = 0;
>
> For pos = len downto 1;
> if %subst(input:pos:1) = '_';
> count = count + 1;
> select;
> when (count = 2);
> endpos = pos - 1;
> when (count = 3);
> startpos = pos + 1;
> leave;
> endsl;
> endif;
> endfor;
>
> if ( count < 3 );
> // error -- not enough underscores found!
> data = '';
> else;
> len = (endpos - startpos) + 1;
> data = %subst(Input: startpos: len);
> endif;
>
> I didn't compile or test this code, but it should give you the basic
idea.
> This is what it does:
>
> a) Find out how long the string is.
> b) Loop from the last position to the first position
> c) Count each '_' char.
> d) Save the 2nd & 3rd ones from the end.
> e) If they were found, extract the data between them.
>
> Pretty simple, really. There's no need to reverse the characters in the
> string, doing so would only require additional CPU time. Though,
> reversing the characters would be easy enough to do just by looping from
> the end to the start and concatenating each character to a new string.
>
> Anyway, good luck.
>
> --
> This is the RPG programming on the AS400 / 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.
>
>
--
This is the RPG programming on the AS400 / 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 mailing list archive is Copyright 1997-2025 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.