1

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

WARNING: No output destinations active.

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

1 回答 1

2

我曾认为ODS SHOW;这将是一个解决方案,但它跟踪选择/排除,而不是开放的目的地。

一种解决方案可能是选择一个不太可能打开的目标 - 可能是一个晦涩的标签集 - 并将其打开到一个虚拟文件,然后关闭它。 ODS PREFERENCES;似乎也是一个很好的妥协;无论您的默认目的地是什么,它都会打开,至少。

不过老实说,如果您正在编写宏应用程序,我只会不理会 ODS;应该由使用您的宏的程序员提前正确设置 ODS。

于 2013-08-05T13:56:27.067 回答