如何使用%include来调用SAS宏

时间:2015-11-13 18:06:32

标签: sas sas-macro

如果我用内容写一个test.sas:

%macro test;
%put test macro;

%mend;
%test;

然后在sas会话中执行此操作:

%include test.sas

它会调用宏'test'吗?或者它只包含宏定义但跳过执行?

3 个答案:

答案 0 :(得分:1)

是的,它会像你最初建议的那样工作 - 它将编译并运行宏。

我会注意到,良好的编程风格是在实际程序中进行宏调用(如果你正在做的那样)。这就像一个C ++头文件:宏包含'做什么',然后你实际上在你的实时代码中调用它 - 不仅是为了好的风格,而是为了能够重新运行它而不需要重新编译它(如果你需要)某事,说)。

答案 1 :(得分:0)

它将执行文件中的语句,就像它们作为原始程序中的行包含一样。所以它首先定义宏,然后当最后一行运行时,它将执行宏。

答案 2 :(得分:0)

%include就像在外部文件上点击F3一样。它将尝试编译并执行文本文件中的所有内容。因此,如果您打开mcompilenote=all并且您的计划是:

%macro test;
%put test macro;

%mend;
%test;

日志将显示为:

8    %macro test;
9    %put test macro;
10
11   %mend;
NOTE: The macro TEST completed compilation without errors.
      6 instructions 80 bytes.
12   %test;
test macro

但是,如果您的计划是:

%macro test;
%put test macro;

%mend;

日志将显示为:

8    %macro test;
9    %put test macro;
10
11   %mend;
NOTE: The macro TEST completed compilation without errors.
      6 instructions 80 bytes.