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

时间:2015-08-31 19:42:17

标签: sas sas-macro

在引用SAS宏变量时,我何时需要用双引号将其括起来?何时不应该? 即何时使用"& var_name"何时使用& var_name

2 个答案:

答案 0 :(得分:3)

引号不是宏语言的一部分。宏语言(最常见的)的工作是生成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视为引用数据步变量。

宏语言不需要引号来标识文本字符串,因为宏语言中的所有内容都是文本字符串。宏语言不了解数据步骤变量。

答案 1 :(得分:0)

这一切都取决于您的宏变量的值以及您想要用它做什么。举个例子:

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

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

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