直接给代码吧:
data a;
format firmname $100.;
input firmname;
cards;
深圳市中兴通讯股份有限公司
上海邮通实业发展总公司
;run;
data b;
format nameabr $50. stkcd $20.;
input nameabr stkcd;
cards;
中兴通讯 000063
;run;
data c;
set b;
format cmd_str $1000.;
cmd_str = "if find(firmname,'"||compress(nameabr)||"') then nameabr='"||compress(nameabr)||"';";
call symput("cmd"||compress(_n_),cmd_str);
run;
proc sql noprint;
select count(*) into :n_cmds from c;
quit;
%macro gencmd;
%do i = 1 %to &n_cmds.;
&&cmd&i..;
%end;
%mend;
data d;set a;
%gencmd;
run;
proc sql;
create table result as
select d.firmname,b.stkcd
from d left join b
on d.nameabr = b.nameabr
;quit;