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