【问题标题】:Determine the folder of a SAS source file确定 SAS 源文件的文件夹
【发布时间】:2010-06-02 13:12:29
【问题描述】:

当我在企业指南中打开一个 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

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

【问题讨论】:

    标签: sas enterprise-guide


    【解决方案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_; 
    

    希望对你有帮助

    干杯 抢

    【讨论】:

    • 谢谢。这是可用的。不完美,但足够好。令人恼火的是,原来包含此代码的脚本将被替换为我遇到完全相同问题的 SPSS 脚本...:|而且我还没有弄清楚如何在 SPSS 中获取客户端机器名称...
    • 很高兴听到。是的,在不了解所有环境细节的情况下,很难准确地为您提供所需的东西。有很多方法可以给这只猫剥皮,但这是一种相对简单的方法。无法帮助 SPSS 抱歉!
    【解决方案2】:

    好的,这并不能准确回答您的问题,但我有这个宏很容易获得,所以我想我会分享它。从这里你只需要做一些字符串处理。

    %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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 2011-03-01
      相关资源
      最近更新 更多