gpt4 book ai didi

SAS:将&符号留在宏变量中

转载 作者:行者123 更新时间:2023-12-01 10:27:17 29 4
gpt4 key购买 nike

这应该很简单,但我想不通:在某些情况下,我需要根据表格的内容创建一个宏变量,并且它们有时包含和号 (&) 作为文本的一部分。当我调用宏变量时,如何让 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 写入日志?非常感谢!

最佳答案

第一个警告很容易避免。宏变量引用不会在单引号内解析,因此您可以使用:

data _null_;
test='Amos&Andy';
call symputx("testvar",test);
run;

当您想要解析 &testvar 时,您需要一种方法来告诉宏处理器不要解析通过解析 &testvar 显示的任何宏触发器。这是宏引用的目的:

%put testvar=%superq(testvar);

%SUPERQ 告诉宏处理器解析宏变量 Testvar 并引用(即屏蔽)通过解析 Testvar 显示的任何宏触发器。这可以防止宏处理器寻找名为 Andy 的宏变量。

关于SAS:将&符号留在宏变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46436809/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com