i am just keeping the changes made. I have to do SA\/NV, as \ is escape character other wise prxchange will have issue as it things / as end of prxchange argument1.
cats("\b[a-zA-Z]*",abb,"[a-zA-Z]*$") into macro variable resolves (showing only partial value.
\b[a-zA-Z]*AG[a-zA-Z]*$|\b[a-zA-Z]*BV[a-zA-Z]*$ | is for or
\b[a-zA-Z]*AG[a-zA-Z]*$
\b=border can be start or end of word
[a-zA-Z]* alphabets can be there or not there
AG is your corporate word
[a-zA-Z]*$ alphabets can be there or not there as last word
in short we are catching last word and seeing whether any alphabets are there infront or back of it. and by using | we are telling to check for all the last words for your corporation(from your lookup table.)
data abbrev;
infile datalines truncover;
input abb $50.;
datalines;
SA\/NV
;
run;
proc sql;
select cats("\b[a-zA-Z]*",abb,"[a-zA-Z]*$") into :allabbs separated by "|"
from abbrev;
data final;
set firms;
new_firmname = compress(prxchange("s/&allabbs//", -1, trim(firmname)),"/");
run;
proc print;
... View more