我正在尝试创建一个带有帮助选项的宏,如下所示:
%macro now(gg,datas);
%if &gg=help %then %do
%put;
%put %str(hello);
%goto exit;
%end;
proc print data=&datas; run;
%mend;
所以当我用帮助调用宏
时%now(help)
应打印以下内容
hello
在日志中,但它没有做任何事情。这段代码有什么问题?
答案 0 :(得分:2)
您在%do
之后遗漏了一个分号,并且您在exit
语句中引用了一个名为%goto
的标签,该标签不存在。这些错误会阻止宏被编译,因此当您尝试调用它时,SAS不执行任何操作(除了在日志中生成警告消息,除非您已禁用它们)。
以下内容应如您所愿:
%macro now(gg,datas);
%if &gg=help %then %do;
%put;
%put %str(hello);
%goto exit;
%end;
proc print data=&datas; run;
%exit:
%mend;
%now(help)
我建议使用%return
来代替%goto
- 您可以获得相同的功能而无需定义标签,并且非常担心宏的流程。