Sas 如何使宏在没有定义的情况下可调用
目前我有一些非常有用的宏,但我需要在每个程序中定义它们,然后调用它们。有没有一种方法可以为我自己制作一个宏库,我可以参考它,而不需要在同一个程序中定义它们,也许需要能够从特定的库中调用它们 目前:Sas 如何使宏在没有定义的情况下可调用,sas,sas-macro,Sas,Sas Macro,目前我有一些非常有用的宏,但我需要在每个程序中定义它们,然后调用它们。有没有一种方法可以为我自己制作一个宏库,我可以参考它,而不需要在同一个程序中定义它们,也许需要能够从特定的库中调用它们 目前: %macro GenericMacro1(&File); .... %mend; %GenericMacro1(File1); %GenericMacro1(File2); 想要: 参考 标识包含库的位置 包含SAS宏定义的成员。位置可以是SAS fileref或用引号括起来的主机特定位置
%macro GenericMacro1(&File);
....
%mend;
%GenericMacro1(File1);
%GenericMacro1(File2);
想要:
参考
标识包含库的位置
包含SAS宏定义的成员。位置可以是SAS
fileref或用引号括起来的主机特定位置名。
每个成员都包含一个SAS宏定义
相关选项为MAUTOSOURCE
,以启用自动调用功能
您还可以在SAS会话中使用
options mstored sasmstore=mylib;
文档警告说,在运行SAS会话期间,已编译宏的原始源代码并不总是可提取的
注意事项:
保存宏源代码
参考
标识包含库的位置
包含SAS宏定义的成员。位置可以是SAS
fileref或用引号括起来的主机特定位置名。
每个成员都包含一个SAS宏定义
相关选项为MAUTOSOURCE
,以启用自动调用功能
您还可以在SAS会话中使用
options mstored sasmstore=mylib;
文档警告说,在运行SAS会话期间,已编译宏的原始源代码并不总是可提取的
注意事项:
保存宏源代码
最接近您要求的是在程序开始时包含所有宏。将宏保存到没有其他sas程序的文件夹中。然后
%include "C:\path\to\folder\*.sas";
这将包括该文件夹中的所有SAS文件,并将在开始时编译宏
Richard提到了自动调用功能。同样的想法,创建一个包含所有宏的文件夹。在这里,您需要将文件和宏命名为相同的名称。每个文件1个宏。最佳做法是只使用小写字母
在您的配置文件(我的系统上的C:\Program Files\SASHome\SASFoundation\9.4\nls\en\sasv9.cfg)中,您将看到一行启动-sasufs
(我的系统中的第60行)。将文件夹位置附加到该列表中。重新启动SAS,您应该能够在会话中调用宏
或者,您可以在autoexec.sas期间更改sasuns值
OPTIONS SASAUTOS=("C:\path\to\folder",
SASAUTOS);
最接近您要求的是在程序开始时包含所有宏。将宏保存到没有其他sas程序的文件夹中。然后
%include "C:\path\to\folder\*.sas";
这将包括该文件夹中的所有SAS文件,并将在开始时编译宏
Richard提到了自动调用功能。同样的想法,创建一个包含所有宏的文件夹。在这里,您需要将文件和宏命名为相同的名称。每个文件1个宏。最佳做法是只使用小写字母
在您的配置文件(我的系统上的C:\Program Files\SASHome\SASFoundation\9.4\nls\en\sasv9.cfg)中,您将看到一行启动-sasufs
(我的系统中的第60行)。将文件夹位置附加到该列表中。重新启动SAS,您应该能够在会话中调用宏
或者,您可以在autoexec.sas期间更改sasuns值
OPTIONS SASAUTOS=("C:\path\to\folder",
SASAUTOS);
简单的方法是在autoexec文件中定义宏。@J_Lard是的,这很简单,但有更好的方法。例如,参见Richard的答案。简单的方法是在autoexec文件中定义宏。@J_Lard是的,这很简单,但有更好的方法。例如,参见Richard的答案。