/** @file @brief Returns words that are in string 1 but not in string 2 @details Compares two space separated strings and returns the words that are in the first but not in the second. Usage: %let x= %mf_wordsInStr1ButNotStr2( Str1=blah sss blaaah brah bram boo ,Str2= blah blaaah brah ssss ); returns: > sss bram boo @param str1= string containing words to extract @param str2= used to compare with the extract string @warning CASE SENSITIVE! @version 9.2 @author Allan Bowe **/ %macro mf_wordsInStr1ButNotStr2( Str1= /* string containing words to extract */ ,Str2= /* used to compare with the extract string */ )/*/STORE SOURCE*/; %local count_base count_extr i i2 extr_word base_word match outvar; %if %length(&str1)=0 or %length(&str2)=0 %then %do; %put %str(WARN)ING: empty string provided!; %put base string (str1)= &str1; %put compare string (str2) = &str2; %return; %end; %let count_base=%sysfunc(countw(&Str2)); %let count_extr=%sysfunc(countw(&Str1)); %do i=1 %to &count_extr; %let extr_word=%scan(&Str1,&i,%str( )); %let match=0; %do i2=1 %to &count_base; %let base_word=%scan(&Str2,&i2,%str( )); %if &extr_word=&base_word %then %let match=1; %end; %if &match=0 %then %let outvar=&outvar &extr_word; %end; &outvar %mend;