|
On Thu, 20 Dec 2001 bmorris@ca.ibm.com wrote:
>
> >From: Scott Klement <klemscot@klements.com>
> >
> >Here's a quick one I wrote (in the last 3 minutes) that will do what
> >you're asking:
> >
> > P NoBlanks B
> > D NoBlanks PI 32766A varying
> > D Input 32766A const varying
> > D Output S 256A varying
> > D X S 10I 0
> > c eval %len(Output) = 0
> > c for x = 1 to %len(Input)
> > c if %subst(Input:X:1)<>' '
> > c eval output = output + %subst(Input:X:1)
> > c endif
> > c endfor
> > c return output
> > P E
>
> Scott, you beat me to it. I looked at the scan and replace
> suggestions and thought a %subst and concatenate to a varying
> string would be better. It is - it performs 5 times faster than
> Mel's %scan/%replace method.
>
> But only if the string being built up is varying. Concatenation
> to the end of a varying string is very fast.
>
> Using %replace over and over requires a lot of extra copying of
> data.
>
Yeah, I saw two types of routines showing up. The %scan/%replace was one
type, the other was using RPG III arrays. :)
Since both of these methods made me shudder, I posted my own :)
Incidentally, if I weren't using varying fields I'd assign to the output
string by doing
%subst(output:y:1) = %subst(input:x:1)
to avoid the extra overhead of all the %trim()s needed with non-varying
fields. But varying is much better :) I'm sooo glad I'm not stuck at
V3R2 anymore...
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.