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

我可以将SAS列表定向到日志吗?,sas,Sas,我可以将SAS列表目标重定向到日志吗 或者,我是否可以将列表目标重定向到外部文件,并在SAS窗口环境中保持其打开状态?我知道我可以使用PROC PRINTTO将其写入外部文件,但这会阻止输出也出现在窗口中。这不是一个简单的情况: ods listing file="myfile.txt"; 。。。如果您尚未启用ods html: ods html; 这将把列表发送到指定的文件,而不是“输出”窗口,并且来自任何过程的ODS结果将进入“结果”窗口 我知道这个设置实际上导致我在创建和命名图像的路径

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


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

这不是一个简单的情况:

ods listing file="myfile.txt";
。。。如果您尚未启用
ods html

ods html;
这将把列表发送到指定的文件,而不是“输出”窗口,并且来自任何过程的ODS结果将进入“结果”窗口


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

我发现了
-altprint
选项,它完全符合我的要求。

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

它在批处理(
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;

您可以使用输出传递系统(ODS)输出到文件(有几种不同的格式可供选择),此方法还将输出保存在输出窗口中。您想要什么类型的文件?您是否特别想要列表输出,或者HTML、RTF或PDF是否可以接受/更好?我特别想要列表输出。我不相信列表可以同时转到输出窗口和文件,至少在DM SAS中是这样。在EG中,这是可能的(基本上是默认的)。日志可以在两个位置打开,其他SAS ODS目标可以有多个打开的文件,但由于某些原因无法列出。