这应该是一个简单的,但我无法弄清楚:有些情况下我需要从表的内容创建一个宏变量,它们有时包含&符号(&)作为文本的一部分。当我调用宏变量时,如何让SAS忽略&符号?例如,这段代码......
data _null_;
test="Amos&Andy";
call symputx("testvar",test);
run;
%put testvar=&testvar;
...将此内容写入日志:
28 data _null_;
29 test="Amos&Andy";
WARNING: Apparent symbolic reference ANDY not resolved.
30 call symputx("testvar",test);
31 run;
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
WARNING: Apparent symbolic reference ANDY not resolved.
32 %put testvar=&testvar;
testvar=Amos&Andy
如何让SAS忽略&符号而不将WARNING写入日志?非常感谢!
答案 0 :(得分:6)
第一个警告很容易避免。宏变量引用不解析单引号内部,因此您可以使用:
data _null_;
test='Amos&Andy';
call symputx("testvar",test);
run;
当您想要解析& testvar时,您需要一种方法告诉宏处理器不要解析通过解析& testvar显示的任何宏触发器。这是宏引用的目的:
%put testvar=%superq(testvar);
%SUPERQ告诉宏处理器解析宏变量Testvar并引用(即屏蔽)解析Testvar所揭示的任何宏触发器。这可以防止宏处理器查找名为Andy的宏变量。