ディレクトリが既に存在するかどうかを確認し、存在しない場合は作成するにはどうすればよいですか?
Windows 7 で SAS EG 5.1 を搭載した SAS 9.3 サーバーを使用しています。
%macro chk_dir(dir=) ;
options noxwait;
%local rc fileref ;
%let rc = %sysfunc(filename(fileref,&dir)) ;
%if %sysfunc(fexist(&fileref)) %then
%put NOTE: The directory "&dir" exists ;
%else
%do ;
%sysexec md &dir ;
%put %sysfunc(sysmsg()) The directory has been created. ;
%end ;
%let rc=%sysfunc(filename(fileref)) ;
%mend chk_dir ;
このコードは、SAS の Web サイトから取得したものです。
ただし、このマクロを使用してフォルダーを作成しようとすると、フォルダー%chk_dir(dir=E:\foo\20140904_test);
の作成に失敗し、次のログ メッセージが表示されます。
MLOGIC(CHK_DIR): %SYSEXEC md &dir
SYMBOLGEN: Macro variable DIR resolves to E:\foo\20140904_test
ERROR: Shell escape is not valid in this SAS session.
MLOGIC(CHK_DIR): %PUT %sysfunc(sysmsg()) The directory has been created.
ディレクトリE:\foo'
は存在し、呼び出すと%chk_dir(dir=E:\foo);
ログ出力が得られます :NOTE: The directory "E:\foo" exists
期待どおり。