如何查看原始sas宏代码?

如何查看原始sas宏代码?,sas,sas-macro,Sas,Sas Macro,我试图调试SAS程序中使用的代码,但该程序使用永久库中的宏。我找不到创建宏的代码,也无法访问创建原始库的人员。我知道选项mprint将向我显示宏执行的代码行,但我希望看到宏使用的所有代码,以便我可以更轻松地调试它。换言之,如果我有生成宏的原始程序,我希望获得所有可用的信息。这可能吗?有两种可能的方法可以从永久库执行SAS宏。您使用的是自动调用宏,或者是存储的编译宏 自动调用宏意味着您可以访问源,因为它只是一个.sas文件,宏的名称就是文件名。您可以%包含该文件并查看全文,前提是您知道该文件所在的

我试图调试SAS程序中使用的代码,但该程序使用永久库中的宏。我找不到创建宏的代码,也无法访问创建原始库的人员。我知道
选项mprint
将向我显示宏执行的代码行,但我希望看到宏使用的所有代码,以便我可以更轻松地调试它。换言之,如果我有生成宏的原始程序,我希望获得所有可用的信息。这可能吗?

有两种可能的方法可以从永久库执行SAS宏。您使用的是自动调用宏,或者是存储的编译宏

自动调用宏意味着您可以访问源,因为它只是一个.sas文件,宏的名称就是文件名。您可以%包含该文件并查看全文,前提是您知道该文件所在的目录(您可以有许多自动调用库)。因此,如果您的
saautos
目录是
c:\sas\macros\
,并且您正在调用
%mymacro()
,那么您可以执行

%include "c:\sas\macros\mymacro.sas";
其中包括预编译的文本,只要启用了
source2
选项,它就会打印到日志中

只有使用
SOURCE
选项编译存储的已编译宏时,才能查看该宏。如果不是,则无法检索宏源代码(如果没有访问创建SCM的程序)

如果是使用
源代码编译的
,则可以使用
%COPY
宏语句将源代码从SCM复制到日志:

%copy mymacro / SOURCE;

更多详细信息可在SAS文档或优秀论文中找到。

如果您的宏来自某个目录,则
选项将显示
将日志打印宏代码编译到工作中的位置


请参见

遗憾的是,我有一个已存储的编译宏,并且没有使用
SOURCE
选项,但至少我不会继续浪费时间试图取出原始代码。