我在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() */
答案 0 :(得分:2)
我原以为ODS SHOW;
会是一个解决方案,但会跟踪选择/排除,而不是开放目标。
一种解决方案可能是选择一个不太可能打开的目标 - 可能是一个模糊的标记集 - 并将其打开到一个虚拟文件,然后关闭它。 ODS PREFERENCES;
似乎也是一个很好的妥协;它将打开你的默认目的地,至少。
老实说,如果你正在编写一个宏应用程序,我只会留下ODS;应该由程序员使用你的宏来提前正确设置ODS。