我正在一个SAS宏应用程序中工作,并在运行proc之前得到以下警告:
WARNING: No output destinations active.使用proc比较的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() */发布于 2013-08-05 13:56:27
我原以为ODS SHOW;是一个解决方案,但它跟踪的是选择/排除,而不是开放的目的地。
一种解决方案可能是选择一个不太可能打开的目的地(可能是一个模糊的标记集),并将其打开到一个虚拟文件中,然后关闭它。ODS PREFERENCES;似乎也是一个很好的折衷方案;它至少会打开您的默认目的地。
不过,老实说,如果您正在编写宏应用程序,我将不使用ODS;应该由程序员使用宏提前正确地设置ODS。
https://stackoverflow.com/questions/18055974
复制相似问题