为什么结束括号不关闭我的%nrstr函数?

时间:2015-02-25 22:58:15

标签: sas sas-macro

我的目标是将百分号传递给字符串。

当我跑步时,%put没有结果:

%let foo = %nrstr(bar%x%);
%put foo is &foo;

如果再次运行,我会收到错误,第一个是

  

警告:当前正在处理的引用字符串变得更多   超过262个字节。您可能有不平衡的引号。"

在“企业指南”中,括号匹配器未检测到右括号。

添加另一个近括号:

%let foo = %nrstr(bar%x%));

结果:

  

foo是bar%x)

%nrstr会将不平衡的括号传递给结果,所以这并不令人惊讶。这似乎暗示只有开括号和右括号的片段是平衡的。

1 个答案:

答案 0 :(得分:3)

右括号前的百分比符号导致意外行为。

SAS(R) 9.2 Macro Language: Reference

  

括号前的百分号 - 例如,%(或%)   百分号(%%):   示例:%let x =%str(20 %%);

制作正确的代码:

%let foo = %nrstr(bar%x%%);
%put foo is &foo;

导致:

  

foo是bar%x%