引用 SAS 宏变量时何时使用双引号

When to use double quotes while referencing a SAS macro variable

引用 SAS 宏变量时,什么时候需要用双引号括起来,什么时候不需要? 即何时使用“&var_name”以及何时使用&var_name

引号不是宏语言的一部分。宏语言的工作(最常见)是生成 SAS 代码。引号是 SAS 代码语言的一部分。因此,只要您想生成带有双引号的 SAS 代码,就应该在宏语言中使用双引号。

例如。考虑 SAS DATA 步赋值语句:

name="Mary" ;

SAS 语言使用引号告诉数据步编译器 Mary 是一个字符串值,而不是变量名。

如果你想使用宏语言,你可以这样做:

%let name=Mary;
data want;
   Name="&name" ;
run;

或者你可以这样做:

%let name="Mary";
data want;
  Name=&name;
Run;

在这两种情况下,引号对数据步编译器具有相同的含义。他们告诉它 Mary 是一个文本字符串。如果没有引号,编译器会将 Mary 视为引用数据步变量。

宏语言不需要引号来标识字符串,因为宏语言中的一切都是文本字符串。宏语言不知道数据步变量。

这完全取决于宏变量的值以及您想用它做什么。例如:

%let unQuoted = My string;
%let quoted = "My string";

data _null_;
    isEqual = "&unQuoted." = &quoted.;
    put _all_;
run;

打印isEqual=1,表示为真。如果这对您没有帮助,请在您的问题中更具体。