为什么我的宏变量不能解决?

Joe*_*Joe 8 sas sas-macro

我有一个宏变量,&myvar但是当我尝试将它放入数据步变量时它不会解析.为什么不呢,我该怎么做才能解决这个问题呢?

%let myvar=Hello, world;
data _null_;
  x='&myvar.';
  put x=;
run;
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 10

SAS中的宏变量在单引号中时无法解析'&myvar'.它们需要用双引号,"&myvar"以便妥善解决.

如果你需要单引号和已解析的宏变量,你有几个选项,但最简单的是:

%str(%'&myvar.%')
Run Code Online (Sandbox Code Playgroud)

%'%str将放置在文本字符串中的单引号字符(或撇号)本身,而不会导致其被引用.

data _null_;
  x="%str(%'&myvar.%')";
  put x=;
run;
Run Code Online (Sandbox Code Playgroud)

要么

%let myvar2 = %str(%'&myvar.%');
Run Code Online (Sandbox Code Playgroud)