%str和%bquote之间的宏sas差异

时间:2014-12-24 07:57:39

标签: sas sas-macro

示例代码: -

%Let a = begin;

%let b1 = %str(&a);

%let b2 = %nrstr(&a);

%let b3 = %bquote(&a);

%let b4 = %nrbquote(&a);

%let b = end;

实际输出: -

b1 = begin 
b2 = &a 
b3 = begin 
b4 = begin

预期产出: -

b3 = end     
b4 = &a

这是因为bquote和nrquote是执行时间而str和nrstr是编译时间吗?

1 个答案:

答案 0 :(得分:3)

如SAS手册http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#z3514quote.htm中所述,

  

%QUOTE和%NRQUOTE分别屏蔽与%STR和%NRSTR相同的项目。但是,%STR和%NRSTR会屏蔽常量文本而不是已解析的值。并且,%STR和%NRSTR在宏编译时起作用,而%QUOTE和%NRQUOTE在宏执行时起作用。