Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 如何使宏在没有定义的情况下可调用_Sas_Sas Macro - Fatal编程技术网

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的答案。