--- %%NOBANNER%% -->
/*-------------------<---Start of Description-->---------------------\
| Return the first position of a word in the string; |
| Note: this function will also check to see if the word is separated|
| by some special characters other then the regular characters;|
|---------------------<---End of Description-->----------------------|
|--------------------------------------------------------------------|
|------------<---Start of Files or Arguments Needed-->---------------|
| Inputs: |
| var - the input string you want to check against; |
| excerpt - the word you want to check; |
|------------------<---End of Arguments Needed-->--------------------|
|--------------------------------------------------------------------|
|------------------<---Start of Files Created-->---------------------|
| Usage: indexw(var,excerpt); |
\-------------------<---End of Files Created-->---------------------*/
%macro indexw(var,excerpt);
%if (%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt)))=1) %then %do;
%if (%eval(%length(%nrbquote(&var))+1) = %eval(%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt))) + %length(%nrbquote(&excerpt))))
%then %sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt)));
%else %if (%eval(%length(%nrbquote(&var))+1) > %eval(%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt))) + %length(%nrbquote(&excerpt)))) %then %do;
%if (%sysfunc(rxmatch(%sysfunc(rxparse($a|$d)), %nrbquote(%substr(%nrbquote(&var), %eval(%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt))) + %length(%nrbquote(&excerpt))), 1))))) %then 0;
%else %sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt)));
%end;
%else 0;
%end;
%else %if (%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt)))>1) %then %do;
%if (%sysfunc(rxmatch(%sysfunc(rxparse($a|$d)), %nrbquote(%substr(%nrbquote(&var), %eval(%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt))) -1), 1))))) %then 0;
%else %do;
%if (%eval(%length(%nrbquote(&var))+1) = %eval(%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt))) + %length(%nrbquote(&excerpt)))) %then
%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt)));
%else %if (%eval(%length(%nrbquote(&var))+1) > %eval(%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt))) + %length(%nrbquote(&excerpt)))) %then %do;
%if (%sysfunc(rxmatch(%sysfunc(rxparse($a|$d)), %nrbquote(%substr(%nrbquote(&var), %eval(%sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt))) + %length(%nrbquote(&excerpt))), 1))))) %then 0;
%else %sysfunc(index(%nrbquote(&var), %nrbquote(&excerpt)));
%end;
%else 0;
%end;
%end;
%else 0;
%mend indexw;