Difference between revisions of "In String"
From MidrangeWiki
DaveLClarkI (talk | contribs) |
DaveLClarkI (talk | contribs) |
||
Line 8: | Line 8: | ||
|Sometimes, having a service procedure is simply a means of making code more self-documenting (i.e., easier for others to understand). | |Sometimes, having a service procedure is simply a means of making code more self-documenting (i.e., easier for others to understand). | ||
|} | |} | ||
+ | To wit... Which would you rather see in an RPG program—this? | ||
+ | <pre> | ||
+ | if %scan('TEMP':myLongString) > *zero; | ||
+ | // do something | ||
+ | endif; | ||
+ | </pre> | ||
+ | ...or, this? | ||
+ | <pre> | ||
+ | if GenUtl_inString('TEMP':myString); | ||
+ | // do something | ||
+ | endif; | ||
+ | </pre> | ||
+ | It is the opinion of many that the second form is more readable and is self-documenting. Hence, the reason for having such a small service procedure. | ||
== Service Procedure == | == Service Procedure == |
Revision as of 18:00, 13 December 2018
Summary
The following are the RPG/LE fully free-form definitions and instructions needed for using the In String service procedure. This service procedure simply allows the caller to determine if a needle is found in a haystack—or not. Optionally, the position of the needle in the haystack is also returned. See also In List and Get List Entry,
Sometimes, having a service procedure is simply a means of making code more self-documenting (i.e., easier for others to understand). |
To wit... Which would you rather see in an RPG program—this?
if %scan('TEMP':myLongString) > *zero; // do something endif;
...or, this?
if GenUtl_inString('TEMP':myString); // do something endif;
It is the opinion of many that the second form is more readable and is self-documenting. Hence, the reason for having such a small service procedure.
Service Procedure
**free //============================================================================== // This procedure determines if a needle is found in a haystack--or not. The // haystack is represented by a long character string. Optionally, the // beginning character index position of the needle is also returned. //============================================================================== dcl-pr GenUtl_InString ind; pNeedle varchar(32767) const; pHayStack varchar(65535) const; pIndex packed(5:0) options(*nopass); end-pr; //============================================================================== // This procedure determines if a needle is found in a haystack--or not. The // haystack is represented by a long character string. Optionally, the // beginning character index position of the needle is also returned. //============================================================================== dcl-proc GenUtl_InString export; dcl-pi *n ind; pNeedle varchar(32767) const; pHayStack varchar(65535) const; pIndex packed(5:0) options(*nopass); end-pi; dcl-s iPosn packed(5:0); iPosn = %scan(pNeedle: pHaystack); // look for needle in haystack if %parms() < %parmnum(pIndex) // if optional parm not passed or %addr(pIndex) = *null; // or optional parm was omitted else; // skip it, else pIndex = iPosn; // return position of needle in haystack endif; return (iPosn > *zero); // indicate if found or not end-proc;