create procedure lib_string_search (
strg_in varchar( 32765),
strg_beg smallint,
strg_search varchar( 32765))
returns (
strg_pos smallint)
as
declare variable strg_comp varchar( 32765);
declare variable strg_len_orig smallint;
declare variable strg_len_srch smallint;
declare variable strg_found smallint;
begin
/*
get position of substring
strg_pos : null -> invalid parameters
0 search string not found
1 .. first position of substring
*/
if ( (strg_in is null)
or (strg_beg is null)
or (strg_beg <= 0)
or (strg_search is null))
then
strg_pos = null;
else
begin
strg_pos = 0;
strg_found = 0;
execute procedure lib_string_len :strg_in returning_values :strg_len_orig;
execute procedure lib_string_len :strg_search returning_values :strg_len_srch;
while ( (strg_found = 0)
and (strg_len_srch + strg_beg - 1 <= strg_len_orig))
do
begin
execute procedure lib_string_sub :strg_in, :strg_beg, strg_len_srch returning_values :strg_comp;
if (strg_comp || '.' = strg_search || '.')
then
begin
strg_found = 1;
strg_pos = strg_beg;
end
strg_beg = strg_beg + 1;
end
end
suspend;
end