如果我用内容写一个test.sas:
%macro test;
%put test macro;
%mend;
%test;
然后在sas会话中执行此操作:
%include test.sas
它会调用宏'test'吗?或者它只包含宏定义但跳过执行?
答案 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.