动态SAS宏变量

时间:2018-10-15 19:13:59

标签: 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;

在许多其他情况下,我需要这样做,并且模式始终相同。根据变量&tp.,我将变量&sn.设置为与变量相同的值,其名称的前3个字符等于&tp.的值,另外两个字符{{1 }}。是否有一个函数可以返回我需要的变量的名称,所以我不需要无数的sn语句?

1 个答案:

答案 0 :(得分:5)

您添加了更多&。宏处理器将&&解析为&并为其设置注释,以重新扫描令牌以进行更多的宏处理。

%let tp=kdb;
%let kdbsn=1234;
%let sn=&&&tp.sn ;

因此&&-> &&tp.-> kdb得到&kdbsn,它将解析为1234