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



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

Follow-Ups:
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.