SAS セッションで問題が発生したのに、リモート ワーク ライブラリ (RWORK) に重要なファイルがあるためにセッションを閉じることができなかった経験はありませんか??
私は確かに持っています!では、別の (新しい) セッションからそのライブラリにアクセスするにはどうすればよいでしょうか?
クリスJの応答への応答-マクロがありません。
rsubmit ;
%macro nobs(dsn);
%local dsnid rc;
%global nobs;
%let nobs=.;
%* open the data set of interest ;
%let dsnid=%sysfunc(open(&dsn));
%* If the open was successful get the nobs and CLOSE &dsn ;
%if &dsnid %then %do;
%let nobs=%sysfunc(attrn(&dsnid,nlobs));
%let rc =%sysfunc(close(&dsnid));
%end; %else %do;
%put WARNING: Unable to open &dsn - %sysfunc(sysmsg());
%let nobs=0;
%end; %mend nobs;
endrsubmit;
これは、あなたが所有するすべてのリモート作業ディレクトリに複数のライブラリ参照名を割り当てるために私が書いたマクロです:
rsubmit ;
%MACRO DOUBLELIB(USER=&SYSUSERID,LIB=double) / des="同じユーザーの複数の SAS セッションに double の libname を割り当てる";
オプション nosymbolgen nomprint ;
%LET WRK = %SYSFUNC(パス名(作業)) ;
%LET WRKDIR = %SYSFUNC(scan(&WRK,-1,/)) ;
%LET SASTEMP = %SYSFUNC(tranwrd(&WRK,&WRKDIR,)) ;
ファイル名 mywork パイプ "ls -ls &SASTEMP" ;
データ zwork ;
infile mywork lrecl=512 recfm=v pad ;
入力 @1 文字 $512。;
if index(upcase(char),upcase("&USER")) および ^index(char,scan("&WRK",-1,'/')) および index(char,'SAS_work');
パス = スキャン (文字、-1、' ') ;
n + 1 ;
call symput('PATH'||compress(n),"&SASTEMP"||strip(パス)) ;
call symput('PATHN',compress(n)) ;
走る ;
%NOBS(zwork) ;
%IF &NOBS > 0 %THEN %DO ;
ライブラリ名 &LIB (
%DO I = 1 %TO &PATHN ;
「&&PATH&I」
%終わり ;
) アクセス = 読み取り専用;
%終わり ;
オプション symbolgen mprint ;
%MEND DOUBLELIB;
%DOUBLELIB(LIB=dblwork) ;
エンドサブミット;
/* ローカル ライブラリ参照名を新しいリモート dblwork ライブラリ参照名に割り当てます */
libname rdouble slibref=dblwork server=myserver ;
あなたが答えを知っている質問をすることの倫理については確信が持てませんが、うまくいけば、他の人がこれを役に立つと思うでしょう!
%macro serverpath;
%put NOTE:; %put NOTE-; %put NOTE-;
%put NOTE- libname OldWork "%sysfunc(pathname(RWORK))" server= remote %str(;);
%put NOTE- rsubmit%str(;);
%put NOTE- libname OldWork "%sysfunc(pathname(RWORK))"%str(;);
%mend; %serverpath;
これにより、必要なコードがログに記録されます。変更する必要があるかもしれないビットは server= オプションです - これは、ログオンした環境の名前でなければなりません (これをプログラムで参照する方法がわからない - 他の誰かが知っていますか?)
明らかに、元のセッションは開いたままにする必要があり (RWORK がワイプされるのを防ぐため)、2 番目のセッションは同じサーバーにログオンする必要があります...