动态SAS宏变量

use*_*238 2 sas

我有这样的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语句?

Tom*_*Tom 5

你添加更多&.宏处理器解析&&&并设置一个音符到其自身重新扫描多个宏处理该令牌.

%let tp=kdb;
%let kdbsn=1234;
%let sn=&&&tp.sn ;
Run Code Online (Sandbox Code Playgroud)

所以&&- > &&tp.- > kdb得到&kdbsn,将解决1234.