确定ODS设置

时间:2013-08-05 10:29:26

标签: sas

我在SAS宏应用程序中工作,并在运行proc compare之前收到以下警告:

WARNING: No output destinations active.

使用proc compare的noprint选项不会抑制警告。我很确定摆脱此警告的唯一方法是在运行proc之前打开ODS目标(例如ods listing;),但是我不想破坏现有设置,因为在运行时可能存在不同的ODS状态

有没有办法以编程方式确定ODS状态?例如:

%let state=%sysfunc(getODSSTATE(listing)); /* for example */
ods listing;
proc compare base=x compare=y noprint; run;
ods listing &state; /* either %str(CLOSE) or %str() */

1 个答案:

答案 0 :(得分:2)

我原以为ODS SHOW;会是一个解决方案,但会跟踪选择/排除,而不是开放目标。

一种解决方案可能是选择一个不太可能打开的目标 - 可能是一个模糊的标记集 - 并将其打开到一个虚拟文件,然后关闭它。 ODS PREFERENCES;似乎也是一个很好的妥协;它将打开你的默认目的地,至少。

老实说,如果你正在编写一个宏应用程序,我只会留下ODS;应该由程序员使用你的宏来提前正确设置ODS。