首页 > 解决方案 > 微距分辨率

问题描述

我有一个宏,它解析为一个包含 & 符号的字符串,这会导致错误WARNING: Apparent symbolic reference A not resolved

例如

Data _NULL_;
T=%NRSTR("A&A");
call symput("test",T);
run;

%put &=test.;

有没有办法只解决一次?NR 功能似乎消除了所有的意义&并阻止了任何解决方案。我只希望它解决一次。

以下示例有效,但我需要它成为数据步骤的一部分,因为还有其他几个正则表达式函数用于创建A&A字符串。

%let Test=%NRSTR(A&A);
%put &test;

有任何想法吗?

标签: sassas-macro

解决方案


在 DATA 步骤中,单引号将发送到宏环境的文本值。

为防止&被解释为解析请求,%superq使用时的宏符号。

Data _NULL_;
  T = 'A&A';
  call symput("test",T);
run;

%put NOTE: test macro symbol value is %superq(test);

---------- LOG ----------
21   %put NOTE: test macro symbol value is %superq(test);
NOTE: test macro symbol value is A&A

推荐阅读