【问题标题】:Can I redirect the SAS listing desitination to the log?我可以将 SAS 列表目标重定向到日志吗?
【发布时间】:2018-06-12 21:46:12
【问题描述】:

我可以将 SAS 列表目标重定向到日志吗?

或者,我可以将列表目标重定向到外部文件在 SAS 窗口环境中保持打开状态吗?我知道我可以使用 PROC PRINTTO 将其写入外部文件,但这会阻止输出也出现在窗口中。

【问题讨论】:

  • 您可以使用Output Delivery System (ODS) 输出到文件(有多种不同的格式可供选择),此方法还将输出保留在输出窗口中。
  • 你想要什么样的文件?您是否特别想要 LISTING 输出,还是 HTML、RTF 或 PDF 可接受/更好?
  • 我特别想要列表输出。
  • 我不相信Listing可以同时进入输出窗口和文件,至少在DM SAS中。在 EG 中是可能的(基本上是默认设置)。日志可以在两个地方打开,其他SAS ODS目的地可以有多个打开的文件,但由于某种原因不能Listing。

标签: sas


【解决方案1】:

不就是一个简单的例子吗:

ods listing file="myfile.txt";

...如果您还没有打开ods html

ods html;

这会将列表发送到指定文件而不是“输出”窗口,并且来自任何 procs 的 ODS 结果将转到您的“结果”窗口。

我知道此设置实际上导致我在创建和命名图像的路径中出现问题,因为我没有意识到除了我的 ODS 目标之外,列表目标也是打开的,并且在我关闭列表之前我得到了重复的图像。

【讨论】:

    【解决方案2】:

    我发现-altprint 选项正是我想要的。

    【讨论】:

      【解决方案3】:

      如果您希望在程序过程中动态更改输出/lst 以写入日志而不是单独的位置,那么以下内容可能会很有用。 (即,这使 LOG 和 LST 都转到 LOG)

      它在 BATCH (NODMS) 模式下工作,但在交互 (DMS) 模式下工作。

      我不确定它的向后兼容性如何,但它适用于 9.4

      /* redirect OUTPUT/LST to LOG by going to the SASHELP VEXTFL to get the log fileref (ONLY WORKS IN BATCH)*/
      %let ISBATCH=%sysfunc(getoption(dms));
      %if &ISBATCH = NODMS %then %do;
          PROC SQL outobs=1 noprint; SELECT t1.fileref INTO :LOG_FILEREF FROM SASHELP.VEXTFL t1 where t1.xpath like '%.log%'; QUIT;
          %put NOTE: LOG_FILEREF=&LOG_FILEREF;
          proc printto print=&LOG_FILEREF; run;
      %end;
      

      【讨论】:

        猜你喜欢
        • 2021-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-14
        • 2020-04-23
        • 2017-03-08
        • 1970-01-01
        相关资源
        最近更新 更多