如果我们在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
的输出都无济于事。
答案 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"
。