WORKの下に一時ライブラリを作ることで中間データセットなどを別管理にしつつ,WORKと同じく閉じたら消える状態にする方法


%let WORKPATH = %sysfunc(pathname(WORK));
options DLCREATEDIR;
libname outtemp "&WORKPATH\temp";
options NODLCREATEDIR;

 

👆

こうすると

%let WORKPATH = %sysfunc(pathname(WORK));

で マクロ変数 WORKPATHに pathname関数の働きで,WORKが物理的に存在している場所が入ります

options DLCREATEDIR;

により,存在しないディレクトリにlibnameを切ることで,フォルダ自体が新規作成され,ライブラリ登録されます

libname outtemp "&WORKPATH\temp";

でWORKの下にさらにフォルダをつくって そこをouttempというライブラリ名にしてるわけです

 

画像

 

思い出してください.WORKフォルダはSASを閉じるとその中に存在するすべてを消し去ることを.

つまり,WORKの下に作られたサブフォルダも同時に消えるので,すなわち WORKと同じ性質をもったサブライブラリをもてるわけです 

つまり,マクロとかで なっがーーい処理をかいて,たくさん作った中間データセットでWORKがあふれて意味がわからなくなることありますよね

もちろんマクロの中で最後に中間データセットを消してもいいですが,そうすると途中経過が追いにくいですよね

そういうときは作業を全部 tempでやって,最後の欲しいデータセットだけproc copyとかで WORKにだせば

見かけ上,マクロ実行してもWORKには最後に欲しい者だけがはいって,途中経過をみたいときだけtempをみればいいわけです

 

 

 

0 件のコメント:

コメントを投稿