我已经使用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尚未生成的外部图像文件或以前的代码,那么
可以获得奖励积分!答案 0 :(得分: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文件。
答案 1 :(得分:0)
您还可以使用提交给远程服务器的PROC DOWNLOAD ...
proc download infile="/path/to/file.gif" outfile="c:\local\file.gif" binary status=no ; run ;
我还建议使用更好的图片格式,例如PNG。不确定SAS是否支持TIFF!