目次
1.展開例
「C:\Blog\SAS\dcreate」の直下にdir1、dir2、dir3を階層順に作成する例です。
%dcreate(C:\Blog\SAS\dcreate\dir1\dir2\dir3);
以下のように、存在しない中間フォルダも含めて、指定したパスが作成されます。
2. 参考プログラム
以下は、参考プログラムになります。
右上のコピーボタンを押せば、プログラム全体をコピーできます。
%macro dcreate(dir);
%put --------------------------------------------------;
%put dcreate;/*存在しない中間フォルダも含めて指定したパスを作成する*/
%put &=dir; /* ディレクトリを指定 */
%put --------------------------------------------------;
%let __i=1;
%do %while(%qsysfunc(kscan(%superq(dir), &__i, \)) ne);
%if &__i=1 %then %do;
%if %substr(%superq(dir), 1, 2)=\\ %then
%let __xdir=\\%qsysfunc(kscan(%superq(dir), &__i, \));
%else
%let __xdir=%qsysfunc(kscan(%superq(dir), &__i, \));
%let __i=%eval(&__i + 1);
%end;
%else %do;
%let __xdir=%superq(__xdir)\%qsysfunc(kscan(%superq(dir), &__i, \));
%let __i=%eval(&__i + 1);
%end;
%if &__i>3 %then %do;
%let __folder=%qsysfunc(kscan(%superq(__xdir), -1, \));
%let __dir=%substr(%superq(__xdir), 1, %length(%superq(__xdir)) - %length(%superq(__folder)));
%if %qsysfunc(fileexist(%superq(__dir))) %then %do;
%let rc=%qsysfunc(dcreate(%superq(__folder), %superq(__dir)));
%end;
%else
%put ERROR: ディレクトリが存在しません。_dir=%superq(__dir);
%end;
%end;
%mend dcreate;