防止将图写入临时目录

时间:2017-04-19 15:48:08

标签: plot sas

当输出数字到磁盘时,我想抑制SAS中的所有输出以强制用户(我)查看创建的实际文件。为此,我设置了以下选项。

ods listing;
ods noresults;
goptions
  reset   = all
  rotate  = landscape
  xpixels = 1294
  ypixels = 800
  device  = png
  gsfname = outPlot
  gsfmode = replace
;

我的情节调用程序可能看起来像:

filename outPlot 'C:\Users\...\My Output Directory\Figure.png';

proc gplot data = plot_data;
    plot y_value * x_value = symbol / 
      haxis   = axis1 
      vaxis   = axis2 
      legend  = legend1
;
run;
quit;

filename outPlot clear;

据我了解,这会将列表重定向到我想要的输出目录。但是,在我的日志中,我看到类似的东西:

NOTE: 51820 bytes written to C:\Users\...\Temp\1\SAS Temporary Files\_TD6828_2UA3331QB3_\gplot6.png.
NOTE: 51832 bytes written to C:\Users\...\My Output Directory\Figure.png.

这表示该图首先写入临时文件夹中的磁盘,然后写入我想要的目录。

我正在寻求加快剧情创作,并怀疑对临时目录的额外写入会减慢速度。

有没有办法只写我选择的目录?

1 个答案:

答案 0 :(得分:4)

您最有可能打开多个ODS目的地。默认情况下,我认为Enterprise Guide和Base SAS Editor都会打开HTML目标。如果您打开列表目的地,那么可能会占第二个输出。

要找出哪些ODS目的地已打开,您可以查看dictionary.destinations(或等效sashelp.vdest)。见support.sas.com/kb/33/590.html

您也可以使用:

proc sql noprint; 
  select destination into :openDestinations separated by ', ' 
  from dictionary.destinations ; 
quit;

%put &=openDestinations;

另一个选择是关闭所有打开的目的地,然后只打开你想要的目的地:

ods _all_ close;
ods listing;