怎样才能看到原来的sas宏代码?
How can I see the original sas macro code?
我正在尝试调试 SAS 程序中使用的代码,但该程序使用了永久库中的宏。我找不到创建宏的代码,也无法访问创建原始库的人。我知道 option mprint;
会显示宏执行的代码行,但我想查看宏使用的所有代码,以便我可以更轻松地调试它。换句话说,如果我有生成宏的原始程序,我想获得所有可用的信息。这可能吗?
您可以通过两种可能的方式从永久库中执行 SAS 宏。您正在使用自动调用宏或存储的编译宏。
自动调用宏意味着您可以访问源代码,因为它只是一个 .sas 文件,宏的名称作为文件的名称。您可以 %include 文件并查看全文,假设您知道它在哪个目录中(您可以有许多自动调用库)。因此,如果您的 SASAUTOS
目录是 c:\sas\macros\
,并且您正在调用 %mymacro()
,那么您可以执行
%include "c:\sas\macros\mymacro.sas";
这将包括预编译的文本,只要您启用了 source2
选项,它就会打印到您的日志中。
只有在使用SOURCE
选项编译时才能查看存储的编译宏。如果不是,则您无法 检索宏源代码(无法访问创建 SCM 的程序)。
如果它是用SOURCE
编译的,那么您可以使用%COPY
宏语句将源代码从SCM复制到您的日志中:
%copy mymacro / SOURCE;
SAS 文档或优秀论文 Ways to Store Macro Source Codes and How to Retrieve Them。
中提供了更多详细信息
如果您的宏来自目录,那么 options MAUTOLOCDISPLAY;
将记录宏代码编译到 WORK 中的位置。
我正在尝试调试 SAS 程序中使用的代码,但该程序使用了永久库中的宏。我找不到创建宏的代码,也无法访问创建原始库的人。我知道 option mprint;
会显示宏执行的代码行,但我想查看宏使用的所有代码,以便我可以更轻松地调试它。换句话说,如果我有生成宏的原始程序,我想获得所有可用的信息。这可能吗?
您可以通过两种可能的方式从永久库中执行 SAS 宏。您正在使用自动调用宏或存储的编译宏。
自动调用宏意味着您可以访问源代码,因为它只是一个 .sas 文件,宏的名称作为文件的名称。您可以 %include 文件并查看全文,假设您知道它在哪个目录中(您可以有许多自动调用库)。因此,如果您的 SASAUTOS
目录是 c:\sas\macros\
,并且您正在调用 %mymacro()
,那么您可以执行
%include "c:\sas\macros\mymacro.sas";
这将包括预编译的文本,只要您启用了 source2
选项,它就会打印到您的日志中。
只有在使用SOURCE
选项编译时才能查看存储的编译宏。如果不是,则您无法 检索宏源代码(无法访问创建 SCM 的程序)。
如果它是用SOURCE
编译的,那么您可以使用%COPY
宏语句将源代码从SCM复制到您的日志中:
%copy mymacro / SOURCE;
SAS 文档或优秀论文 Ways to Store Macro Source Codes and How to Retrieve Them。
中提供了更多详细信息如果您的宏来自目录,那么 options MAUTOLOCDISPLAY;
将记录宏代码编译到 WORK 中的位置。