为什么我的宏中会出现不平衡的报价?

时间:2015-08-05 18:17:07

标签: sas sas-macro

我有一个包含一些注释的宏,因为我很擅长记录我的代码。出于某种原因,当我运行这个宏时,我得到一个悬挂的引用。为什么呢?

测试复制此宏的宏:

%macro testme;
* Comment that is in my macro that doesn't work;
proc freq data=sashelp.class;
run;

%mend testme;

%testme;

在第一次执行时它完全失败,而在第二次执行时它会给我一条消息ERROR: No matching %MACRO statement for this %MEND statement.

1 个答案:

答案 0 :(得分:5)

在SAS Macro语言中,单行注释与基本SAS语言的处理方式不完全相同。具体做法是:

*something;

不是SAS宏语言的评论!它将被提交给常规SAS,并将成为评论...但SAS宏解析器不会忽略它,这是一个问题所在。它标记它,导致它不忽略引号字符。

您需要使用“PL / 1”样式注释(即阻止注释)才能使其正常工作;或者只是不要在评论中使用撇号(即do not而不是don't

%macro testme;
/* Comment won't break things now!*/
proc freq data=sashelp.class;
run;

%mend testme;

%testme;

有关详细信息,请参阅the SAS support article on Using Comments In Macros