"RPG400-L" <rpg400-l-bounces@xxxxxxxxxxxx> wrote on 01/25/2018 09:18:49
AM:
I am searching strings for SQL keywords and table names; these are
coming back from one of the ODBC hooks so I need to be quick. Is
there a means to search a string, after apply upper case function,
that works like matching how SQL IN works?
I really don’t want to resort to a select construct comparing in
order, instead trying to filter against an array or similar.
I wrote a service procedure that compares test against a
comma-separated list like the SQL IN operator does. I can't testify as to
the speed of it, though. Seems to work well for me.
*========================================================================*
* This procedure determines if a needle is found in a haystack, which is
*
* represented by a comma-separated list of possible matches. *
*========================================================================*
P GenUtl_InList B export
D PI n
D pNeedle 50a const varying(2)
D pHaystack 3000a const varying(2)
*------------------------------------------------------------------------*
D iHaystack s 3002a varying(2)
iHaystack = %trim(pHaystack); // make sure haystack is trimmed
iHaystack = %xlate( GenUtl_lower: GenUtl_UPPER: pHaystack );
if (%subst(iHaystack:1:1) <> ','); // if no starting separator
iHaystack = ',' + iHaystack; // put one there
endif;
if (%subst(iHaystack:%len(iHaystack):1) <> ','); // if no ending
separator
iHaystack += ','; // put one there
endif;
return (%scan( ','+%xlate(GenUtl_lower: GenUtl_UPPER: %trim(pNeedle))+
','
: iHaystack ) > *zero); // indicate if found
*------------------------------------------------------------------------*
P GenUtl_InList E
*========================================================================*
Sincerely,
Dave Clark
As an Amazon Associate we earn from qualifying purchases.