× 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,
I know you say that often, but what tools/features are available to do
performance testing, or even profiling of a subprocedure? I often have to
insert a timestamp at the start and end of the proc and then write that
value out to the joblog along with the difference. It would be nice to have
something that logged this type of information... even a compiler directive
or option that said "Embed profiling information" then when it is run
(perhaps only when run in debug mode???) the profiling information would be
logged.
-Bob


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Hans Boldt
Sent: Tuesday, June 01, 2004 10:04 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: trimming non-numerics

Bob Cozzi wrote:
> 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
> 
> 

Hmmm, you're rather fond of XLATE, eh?

With the extra functionality of specifying additional characters to 
filter out, considering the overhead involved with XLATE, I think I'd 
still go with something a bit simpler:

--------------------------------------------------
     ...
     SaveMe = SaveVal + SaveEx;

     // Keep only the specified characters
     for i = 1 to %len(CleanVal);
        ch = %subst(CleanVal:i:1);
        if %scan(ch:SaveMe) > 0:
           CleanDigits += ch;
        endif;
     endfor;

     return CleanDigits;
     ...
--------------------------------------------------

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.