在SAS中获取站点名称

时间:2019-04-06 20:18:43

标签: sas sas-metadata

如果我们在SAS中运行router.beforeEach((to, from, next) => { const userIsLoggedIn = checkIfUserIsLoggedIn(); if (!userIsLoggedIn) { next(false); // stay on this route } else { next(); // navigate to the next route } }); ,则可以获得站点名称和站点编号。

可以使用proc setinit轻松提取站点编号。除了重定向和解析日志输出外,还有没有办法以编程方式获取站点名称

我检查了&syssite个变量,_automatic_数据集和sashelp的输出都无济于事。

4 个答案:

答案 0 :(得分:3)

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

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;

答案 1 :(得分:3)

这里是从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;

答案 2 :(得分:0)

使用Chris Blake和FriedEgg的指针,我得出了以下解决方案:

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;

答案 3 :(得分:0)

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

然后来自@SCR的答案就派上用场了。如文件所述

  

!SASROOT目录包含使用SAS 9.4所需的文件。

  

如果系统上安装了所有可用的SAS产品,则!SASROOT目录包含下表中列出的文件和目录:

该链接的表格中列出了一个名为“ setinit.sas”的文件。
顺便说一句,我尝试了Windows计算机上@SCR的答案,它可以正常工作。另请注意,路径为"%sysget(SASROOT)\core\sasinst\setinit.sss"