%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?
谢谢,
答案 0 :(得分:1)
为什么宏变量中有引号?
166 %let val = ' run';
167 %put |%cmpres(&val)|;
|' run'|
如果要动态生成要调用的宏名称,如果首先将名称生成为宏变量然后引用该宏变量,则可以更轻松地工作。否则,您可能会混淆令牌化器。
%macro x;
%local mname;
%let mname=r%cmpres(&val);
%&mname;
%mend;
%x