Macros 从自动调用库运行存储的宏
我试图从自动调用库执行存储的宏时出错 我已使用以下命令将宏存储在文件夹中:Macros 从自动调用库运行存储的宏,macros,sas,Macros,Sas,我试图从自动调用库执行存储的宏时出错 我已使用以下命令将宏存储在文件夹中: libname myMacr 'C:\My Macros'; options mstored sasmstore = myMacr; %macro HelloWorld() / store; %put Hello, world!; %mend; 运行此操作后,当我查看文件夹时,我看到一个目录sasmacr.sas7bcat,正如预期的那样 接下来,我将C:\My Macros添加到我的自动调用库列表中。通过运行
libname myMacr 'C:\My Macros';
options mstored sasmstore = myMacr;
%macro HelloWorld() / store;
%put Hello, world!;
%mend;
运行此操作后,当我查看文件夹时,我看到一个目录sasmacr.sas7bcat
,正如预期的那样
接下来,我将C:\My Macros
添加到我的自动调用库列表中。通过运行
proc options option=config;
run;
找到我的配置文件。按照中给出的说明,我将C:\My Macros
添加到自动调用列表中。关闭并重新打开SAS,我可以使用以下命令确认我的文件夹已添加到自动调用列表中:
%put %sysfunc(pathname(sasautos));
实际上,C:\My Macros
出现在列表中。此外,我可以确认SAS看到编译的宏。当我发布:
proc catalog;
contents catalog=sasautos.sasmacr;
quit;
我得到输出
Contents of Catalog SASAUTOS.SASMACR
# Name Type Level Create Date Modified Date Description
1 HELLOWORLD MACRO 14 03/21/2017 18:44:28 03/21/2017 18:44:28
但是,当我发出%HelloWorld()代码>,我得到一个错误:
1 %HelloWorld();
-
180
WARNING: Apparent invocation of macro HELLOWORLD not resolved.
ERROR 180-322: Statement is not valid or it is used out of proper order.
我做错了什么?是否有一些我忽略的选项必须打开?要从我的C:\my macros
文件夹中运行存储的宏,我需要做什么
-initstmt "options mstored sasmstore=sasautos;"
在配置文件中。这将在SAS初始化时发出带引号的命令
请注意,自动调用库(包含.sas代码)和编译宏库是不同的。听起来您可能混淆了这两者。这有点混淆,因为SAS会做出含糊不清的语句,例如“通常,自动调用库是包含单个文件的目录,每个文件都包含一个宏定义。在SAS 6.11及更高版本中,自动调用库也可以是SAS目录。”但是,您是正确的。SAS还描述了“存储的编译宏工具[它]将编译后的宏编译并保存在指定库中的永久目录中。”感谢您提醒我如何单独描述它们。自动调用:存储的编译宏工具: