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