%CHECK()
compare-value : data-to-search { : start-position }
First position in the searched-data that contains a character not in the list of the characters in the compare value.
%CHECKR()
compare-value : data-to-search { : start-position }Last position in the searched-data that contains a character not in the list of the characters in the compare value. (Search begins with the right-most character and proceeds to the left. Basically does the same thing as %CHECK() but goes from right to left in the string data.
%SCAN()
search argument : string to be searched {:start position}
First position of search argument in string or zero, if not found.
There are two very big differences between these two BIFs.
- The first is that with %CHECK, the compare string is treated as a list of individual characters, whereas %SCAN operates on it as a single string.
- The second is that %SCAN tries to locate an occurrence of the characters in the compare string, whereas %CHECK tries to identify any characters that are not present in the compare string.
Example for %SCAN()
D $source S 100A
D $pos S 5U 0
/FREE
$source = 'RPGLE is a Popular Programming ' +
'language of the IBM Power i platform';
$pos = %scan ('IBM' : $source);
dsply $pos; //DSPLY 48
$pos = %scan ('IBM' : $source :15);
dsply $pos; //DSPLY 48
$pos = %scan ('Po' : $source);
dsply $pos; //DSPLY 12
$pos = %scan ('Po' : $source : 20);
dsply $pos; //DSPLY 52
*inlr = *on;
/END-FREE
Example for %CHECK() and %CHECKR()
D $source S 20A
D $pos S 5U 0
/FREE
$source = 'AABC1ABD2AB3A';
$pos = %check ('ABCD' : %trim($source));
dsply $pos; //DSPLY 5
$pos = %check ('ABCD' : %trim($source) :6);
dsply $pos; //DSPLY 9
$pos = %checkr ('ABCD' : %trim($source));
dsply $pos; //DSPLY 12
$pos = %checkr ('ABCD' : %trim($source) : 11);
dsply $pos; //DSPLY 9
*inlr = *on;
/END-FREE
No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.