%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をみればいいわけです