我有这样的SAS代码:
%if &tp. = kdb %then %do;
%let sn = "&kdbsn.";
%end;
%if &tp. = bkb %then %do;
%let sn = &bkbsn.;
%end;
%if &tp. = edw %then %do;
%let sn = &edwsn.;
%end;
%if &tp. = odw %then %do;
%let sn = &odwsn.;
%end;
%if &tp. = adw %then %do;
%let sn = &adwsn.;
%end;
%put &sn;
Run Code Online (Sandbox Code Playgroud)
我需要为许多其他情况执行此操作,并且模式始终相同.根据变量,&tp.我将变量设置为与变量&sn.相同的值,该变量的名称前3个字符等于value &tp.和2个附加字符sn.是否有一个函数可以返回我需要的变量名称,所以我不需要无数个if语句?
你添加更多&.宏处理器解析&&到&并设置一个音符到其自身重新扫描多个宏处理该令牌.
%let tp=kdb;
%let kdbsn=1234;
%let sn=&&&tp.sn ;
Run Code Online (Sandbox Code Playgroud)
所以&&- > &和&tp.- > kdb得到&kdbsn,将解决1234.