这应该很简单,但我搞不清楚:在某些情况下,我需要从表的内容创建宏变量,而它们有时包含&符号(&)作为文本的一部分。当我调用宏变量时,如何让SAS忽略&符号?例如,这段代码...
data _null_;
test="Amos&Andy";
call symputx("testvar",test);
run;
%put testvar=&testvar;将以下内容...writes到日志中:
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忽略与号,并且不将警告写入日志?非常感谢!
发布于 2017-09-27 07:03:52
第一个警告很容易避免。宏变量引用不能在单引号内解析,因此您可以使用:
data _null_;
test='Amos&Andy';
call symputx("testvar",test);
run;当您想要解析&testvar时,您需要一种方法来告诉宏处理器不要解析解析&testvar所揭示的任何宏触发器。这就是宏引用的目的:
%put testvar=%superq(testvar);%SUPERQ告知宏处理器解析宏变量Testvar,并引用(即屏蔽)解析Testvar所揭示的任何宏触发器。这将阻止宏处理器查找名为Andy的宏变量。
https://stackoverflow.com/questions/46436809
复制相似问题