确定SAS源文件的文件夹

时间:2010-06-02 13:12:29

标签: sas enterprise-guide

当我在企业指南中打开SAS文件并运行它时,它将在服务器上执行。源文件本身位于生产站点或开发站点上。在这两种情况下,它都执行相同的服务器。我希望能够告诉我的脚本将结果存储在相关文件夹中。但是,如果我写了像

这样的东西
libname lib_out xport "..\tmp\foobar.xpt";

我收到错误,因为SAS Enterprise Guide流程的工作文件夹不是我的源文件的位置,而是服务器上的文件夹。并且文件夹..\tmp不存在。即使这样,服务器进程也没有该文件夹中的写入权限。

我想确定加载.sas文件的文件夹,并相应地设置工作文件夹。在一种情况下,它是S:\Development\myproject\sas\foobar.sas,在另一种情况下,它是S:\Production\myproject\sas\foobar.sas

这有可能吗?或者你会怎么做?

2 个答案:

答案 0 :(得分:1)

好的,这不会完全回答你的问题,但我很容易获得这个宏,所以我想我会分享它。从这里你只需要进行一些字符串处理。

%macro progName;
%* Returns the name of current program;
    %let progPath = %sysfunc(GetOption(SysIn));
    %* if running in interactive mode, the above line will not work, and the next line should;
    %if  %length(&progPath) = 0 %then %let progPath = %sysget(SAS_ExecFilePath);

    %str(&progPath)
%mend progName;

答案 1 :(得分:1)

根据EG的配置方式,您可以使用类似syshostname全局宏变量的内容来确定保存结果的位置:

%macro sasdir;
    %global sasdir;
    %if "&syshostname" eq "mydevelopmenthost" %then %do;
      %let sasdir = S:\Development;
    %end;
    %else %if "&syshostname" eq "myproductionhost" %then %do;
      %let sasdir = S:\Production;
    %end;
%mend;
%sasdir;

libname lib_out xport "&sasdir\myproject\sas\tmp\foobar.xpt";

如果没有,请尝试通过以下方式查看其他全局或自动宏变量可以帮助您:

%put _all_; 

希望这有帮助

干杯 罗布