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