我试图调试SAS程序中使用的代码,但该程序使用永久库中的宏。我无法找到创建宏的代码,但我无法访问创建原始库的人员。我知道option mprint;
将向我展示宏执行的代码行,但我希望看到宏使用的所有代码,以便我可以更轻松地调试它。换句话说,如果我有生成宏的原始程序,我想拥有所有可用的信息。这可能吗?
答案 0 :(得分:6)
有两种方法可以从永久库中执行SAS宏。要么使用自动调用宏,要么使用存储的已编译宏。
自动调用宏意味着您可以访问源,因为它只是一个.sas文件,其宏名称作为文件名。您可以%包含该文件并查看全文,假设您知道它所在的目录(您可以拥有许多自动调用库)。因此,如果您的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中提供了更多详细信息。
答案 1 :(得分:0)
如果您的宏来自某个目录,那么options MAUTOLOCDISPLAY;
将记录该宏代码从中编译为WORK的位置。