0

通过从本地 SAS 会话远程提交代码,我使用 SAS 在远程服务器上生成 gif 图像。用于创建 gif 图像的宏被设计为仅在远程服务器上运行,即在 rsubmit 块中调用它:

rsubmit;
%mymacro(params);
endrsubmit;

有没有办法在我的本地 sas 会话的结果区域中显示图像而不运行任何本地代码?如果我这样做了,我可以使用 proc 下载,然后告诉 SAS 使用外部应用程序打开图像,但如果可能的话,我更愿意将所有内容保留在远程宏中。

澄清一下:远程会话在运行 Solaris 的服务器上,本地会话在我运行 Windows 的 PC 上。远程宏通过这种方法在 Solaris 服务器上创建一个外部 gif 图像文件:

filename graph '/path/to/my/image.gif';
goptions xpixels = 1280 ypixels = 1024 gsfname = graph device = gif;
proc gplot *etc etc*

有问题的图表经过大量定制并包含很多细节,因此我在 SAS 中有效地进行了超级采样,以使其在按比例缩小时看起来更好。使用 grlink 图形设备似乎无法产生足够高分辨率的图像,所以我尝试了 gif。

如果有人能想出一种适用于 SAS 或以前的代码未生成的外部图像文件的方法,则加分!

4

2 回答 2

2

您可以告诉远程进程将图形输出写入目录。您可以使用 INHERITLIB= 选项授予远程进程访问本地库的权限。因此,将远程图形输出写入本地目录。

%let host = remote-host 7551;
signon host user="me" password="mypassword";

libname output "e:\temp";

rsubmit host cwait=no inheritlib=(output);
   %macro runme();
      ods html gpath=output.remotepngs;

      data test;
      do x=1 to 100;
         y = 5*x + rannor(0);
         output;
      end;
      run;

      proc sgplot data=test;
      series x=x y=y;
      run;
      ods html close;
   %mend;

   %runme();
endrsubmit;

waitfor host;
signoff host;

这会在 E:\temp 中创建一个目录,其中包含来自 SGPLOT 的 .png 文件。

于 2013-10-06T00:33:07.533 回答
0

您还可以使用 PROC DOWNLOAD 提交到远程服务器...

proc 下载 infile="/path/to/file.gif" outfile="c:\local\file.gif" 二进制状态=no ;
跑 ;

我还建议使用更好的图像格式,例如 PNG。不确定 SAS 是否支持 TIFF!

于 2013-10-07T07:43:22.807 回答