SAS宏与帮助选项

时间:2016-03-24 11:42:57

标签: sas sas-macro

我正在尝试创建一个带有帮助选项的宏,如下所示:

%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 

在日志中,但它没有做任何事情。这段代码有什么问题?

1 个答案:

答案 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 - 您可以获得相同的功能而无需定义标签,并且非常担心宏的流程。