我有一个包含一些注释的宏,因为我很擅长记录我的代码。出于某种原因,当我运行这个宏时,我得到一个悬挂的引用。为什么呢?
测试复制此宏的宏:
%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.
答案 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。