2017-04-19 30 views
4

将数字输出到磁盘时,我喜欢禁止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. 

这表明数字是第一次写入到磁盘的临时文件夹,然后写我想要的目录。

我正在加快剧情创作,并怀疑这个额外写入临时目录会降低速度。

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

回答

4

您很可能会打开多个ODS目的地。默认情况下,我认为Enterprise Guide和Base SAS Editor会同时打开HTML目标。如果您打开除此之外的列表目的地,那么可能会导致第二个输出。

要了解哪些消耗臭氧层物质的目标是开放的,你可以看看在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; 
+1

是的,看来我还是有HTML目的地开放。打开的目的地存储在'dictionary.destinations'(或者等同于'sashelp.vdest')中。 (http://support.sas.com/kb/33/590.html)如果您像我一样打印日志而不是切换屏幕,还可以使用以下内容: 'proc sql noprint; 选择目的地 分成:用','分隔开的目的地 from dictionary.destinations ; quit; %put&= openDestinations;' –

+0

@LoremIpsum很好找。我会更新答案,谢谢。 –