【问题标题】:how to list all available user defined macros in SAS Enterprise Guide?如何在 SAS Enterprise Guide 中列出所有可用的用户定义宏?
【发布时间】:2016-05-10 15:36:17
【问题描述】:

在我的主代码中说我有这个代码块:

%macros hi5;
 %put hi five;
%mend;

%macros helloworld;
  %put hello world;
%mend;

如何在 SAS Enterprise Guide 中显示类似的内容? (通过日志或通过 SAS 表)

These are the user defined user macros:

hi5
hello world

(目的是让用户能够知道他们已经可以使用哪些宏)。

注意:%put _ALL_ 仅列出所有宏变量,而不是宏(例如使用 %macros and %mend 构建的。)

【问题讨论】:

  • 所有编译 SAS宏都存储在目录名称SASMACR中,该目录名称保存在WORK中,带有entry输入 。我会尝试 PROC CATALOG ,从未尝试过使用它。希望对您有所帮助!
  • 嘿 Gaurav(感谢您的建议!),我实际上已经尝试过 proc catalog cat=work.sasmacr; contents out=_temp; quit; - 在 SAS EG 上它说 work.sasmacr 不存在。 (在我以前的工作地点,这曾经在基础 SAS 上工作。在新的工作地点,我在 Enterprise guide no base SAS)。
  • 代替work.sasmacr试试SASHELP.VCATALG(公然抄自communities.sas.com/t5/Base-SAS-Programming/…

标签: sas enterprise-guide


【解决方案1】:

您可以通过PROC CATALOGdictionary.catalogs 到达那里。即使您不知道它们的存储位置,后者也可以工作。

proc sql;
  select * 
    from dictionary.catalogs
    where objtype='MACRO';
quit;

这将包括SASHELP 中的预定义宏,您可以使用where libname ne 'SASHELP' 排除这些宏。

【讨论】:

  • 太棒了!!!我使用添加的where ... AND libname ne "SASHELP" 运行 SQL 查询 - 它现在向我显示用户定义的宏。 (我以前不知道 dictionary table 这件事!今天学到了新东西,谢谢!)
【解决方案2】:

当您使用 Enterprise Guide、SAS/Studio 或其他新奇的访问方法运行 SAS 时,以前出现在 WORK.SASMACR 目录中的已编译宏现在最终出现在 WORK.SASMAC1 中。至少在我探索过的环境中。

【讨论】:

    【解决方案3】:

    我正在使用 proc 目录

    proc catalog cat=xxxxx.sasmacr;contents;run;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多