如何在SAS中将宏变量传递给宏变量名?

时间:2017-09-21 18:21:43

标签: macros sas

%let val = '    run'; 

%macro rrun;
    %put successfully run;
%mend;

%macro x;
    %r%cmpres(&val.);
/*  %rrun;*/
%mend;%x

我试图将宏变量传递到SAS中的宏变量名。使用%cmpres(& val。)运行%rrun将值传递给宏名称“rrun”我不明白为什么这不起作用当compress& val“运行”时

我怎样才能解决这个问题并且仍然传递& val?

谢谢,

1 个答案:

答案 0 :(得分:1)

为什么宏变量中有引号?

166   %let val = '    run';
167   %put |%cmpres(&val)|;
|' run'|

如果要动态生成要调用的宏名称,如果首先将名称生成为宏变量然后引用该宏变量,则可以更轻松地工作。否则,您可能会混淆令牌化器。

%macro x;
  %local mname;
  %let mname=r%cmpres(&val);
  %&mname;
%mend;
%x