Получить имя сайта в SAS - PullRequest
2 голосов
/ 06 апреля 2019

Если мы запустим proc setinit в SAS, мы сможем получить Имя сайта и Номер сайта.

Номер сайта может быть легко извлечен с помощью &syssite. Кроме перенаправления и анализа выходных данных журнала, есть ли способ программно получить Сайт Имя ?

Я проверил _automatic_ переменных, sashelp наборов данных и proc registry вывод безрезультатно.

Ответы [ 4 ]

3 голосов
/ 07 апреля 2019

Это сработало для меня и не требовало настройки сервера метаданных:

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;
3 голосов
/ 07 апреля 2019

Вот код для анализа его с выхода 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;
0 голосов
/ 08 апреля 2019

Я предполагаю, что вы используете SAS в среде UNIX, потому что путь, который вы написали, поможет этому документу.
Содержимое каталога! SASROOT - SAS® 9.4 Companion для сред UNIX, шестое издание

Тогда ответ от @SCR пригодится.Как сказано в документе

Каталог! SASROOT содержит файлы, необходимые для использования SAS 9.4.

и

Если в вашей системе установлены все доступные продукты SAS, каталог! SASROOT содержит файлы и каталоги, которые перечислены в следующих таблицах:

файл с именем "setinit.sas" указан в таблице по этой ссылке.
Кстати, я попробовал ответ из @SCR на моей машине с Windows, он работает.Пожалуйста, обратите внимание, что путь "%sysget(SASROOT)\core\sasinst\setinit.sss".

0 голосов
/ 07 апреля 2019

С указателями от Криса Блейка и 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;
...