【问题标题】:How can I see the original sas macro code?如何查看原始 sas 宏代码?
【发布时间】:2015-01-14 22:29:23
【问题描述】:

我正在尝试调试 SAS 程序中使用的代码,但该程序使用永久库中的宏。我找不到创建宏的代码,也无权访问创建原始库的人。我知道option mprint; 会显示宏执行的代码行,但我想查看宏使用的所有代码,以便更轻松地调试它。换句话说,如果我拥有生成宏的原始程序,我希望获得所有可用的信息。这可能吗?

【问题讨论】:

    标签: sas sas-macro


    【解决方案1】:

    您可以通过两种可能的方式从永久库执行 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 中获得。

    【讨论】:

    • 很遗憾,我有一个已存储的编译宏并且没有使用SOURCE 选项,但至少我不会继续浪费时间尝试获取原始代码。
    【解决方案2】:

    如果您的宏来自一个目录,那么options MAUTOLOCDISPLAY; 将记录宏代码编译成 WORK 的位置。

    documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      相关资源
      最近更新 更多