代码之家  ›  专栏  ›  技术社区  ›  Allan Bowe

在SAS中获取站点名称

sas
  •  0
  • Allan Bowe  · 技术社区  · 5 年前

    proc setinit 在SAS中,我们可以获得站点名称和站点号。

    可以使用 &syssite . 除了重定向和分析日志输出之外,是否有其他方法以编程方式获取站点 ?

    我查过了 _automatic_ 变量, sashelp 数据集,以及 proc registry 输出无效。

    0 回复  |  直到 5 年前
        1
  •  3
  •   DCR    5 年前

    这对我有效,而且不涉及设置元数据服务器:

    PROC IMPORT OUT= WORK.temp 
            DATAFILE= "D:\Program Files\SASHome\SASFoundation\9.4\core\sasinst\setinit.sss" 
            DBMS=DLM REPLACE;
            DELIMITER='3D'x; 
            GETNAMES=NO;
            DATAROW=1; 
    RUN;
    
    proc sql noprint;
         select var2 into: name
         from temp
         where var1 = 'SITEINFO NAME';
    quit;
    
    %put &name;
    
        2
  •  3
  •   Tom    5 年前

    下面是从 PROC SETINIT .

    filename out temp;
    proc printto log=out; run;
    proc setinit; run;
    proc printto log=log; run;
    data sitename;
      infile out;
      input @'Site name:' @;
      length sitename $200;
      sitename=scan(_infile_,2,"'");
      put sitename=;
      output;
      stop;
    run;
    
        3
  •  0
  •   Allan Bowe    5 年前

    data _null_;
      length StoredText $2000 sitename $200;
      rc=metadata_getattr("omsobj:TextStore?@Name='Setinit text'"
        , "StoredText", StoredText);
      storedtext=subpad(storedtext,index(storedtext,'SITEINFO NAME=')+15);
      sitename=substr(storedtext,1,index(storedtext,"'")-1);
      put sitename=;
    run;
    
        4
  •  0
  •   whymath    5 年前

    我猜您在UNIX环境中使用的是SAS,因为您编写的路径,那么本文档将有所帮助。
    Contents of the !SASROOT Directory - SAS® 9.4 Companion for UNIX Environments, Sixth Edition

    然后@SCR的答案就派上了用场。正如文件所说

    名为“setinit.sas”的文件列在该链接的表中。
    顺便说一下,我在我的Windows机器上尝试了@SCR的答案,它成功了。请注意,这条路是 "%sysget(SASROOT)\core\sasinst\setinit.sss"