|
Hans, Actually I like a combination of yours and mine best. Mine allows you to specify a list of extra characters that you want to save (such as the decimal notation, minus sign, whatever). But yours, I think, would compress out the garbage more efficiently since I do use the %SCAN/%REPLACE method in mine. Here's the hybrid version of that routine from the article: P CleanNum B Export D CleanNum PI 256A Varying D szInValue 256A Const Varying D szKeepMe 10A Const Varying OPTIONS(*NOPASS) D Garbage S Like(szInValue) Inz D CleanVal S Like(szInValue) Inz D CleanDigits S Like(szInValue) Inz D SaveMe S Like(szInValue) Inz D Blanks S Like(szInValue) Inz D SAVEVal C Const('0123456789') D SAVEEx S 10A Inz('.-') Varying D i S 10I 0 ** If the caller passed in different symbols, ** use those instead of the default minus and period. C if %Parms >= 2 C eval SaveEx = szKeepMe C endif C eval SaveMe = SaveVal + SaveEx C eval %len(Blanks) = %len(SaveMe) ** Isolate the digits and anything else the caller specified. C SaveMe:Blanks XLATE szInValue Garbage C eval %len(Blanks) = %len(Garbage) ** Translate all of the garbage characters to blanks. C Garbage:BlanksXLate szInValue CleanVal ** Now compress out the blanks from the value. C for i = 1 to %Len(CleanVal) C if %subst(CleanVal:I:1) <> ' ' C eval CleanDigits = CleanDigits + C %subst(CleanVal:I:1) C endif C endfor ** Return the clean number to the caller, as text. C return CleanDigits P CleanNum E -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Hans Boldt Sent: Tuesday, June 01, 2004 9:08 AM To: rpg400-l@xxxxxxxxxxxx Subject: Re: trimming non-numerics Bob Cozzi wrote: > Jeffrey, > The article I was talking about is at this link. It does the job and has the > source that you can cut/paste into your editor of choice. > > http://www.mcpressonline.com/mc?1@xxxxxxxxxxxxxxxx@.6ae9a226 > > -Bob > Bob: That link doesn't seem to work. Either it's because mcpressonline uses malformed URL's that get mangled by the mailing list software, or it's because I'm too lazy to register for the site, but it shows blank content for me. Could you post your code to the mailing list so we can compare it to the code I posted earlier? In case you missed it, here's the code I posted earlier: ------------------------------------------------------------------ D i s 10i 0 D source s 50a varying D target s 50a varying /free source = 'jafgjh934hdfg94k3ghsd0jdfg0345jdfg'; target = ''; // Extract digits out of source string for i = 1 to %len(source); if '0' <= %subst(source:i:1) and %subst(source:i:1) <= '9'; target += %subst(source:i:1); endif; endfor; // Display results dsply source; dsply target; *inlr = *on; /end-free ------------------------------------------------------------------ Cheers! Hans -- 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-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.