Создание каталогов в SAS (Windows) - PullRequest
2 голосов
/ 31 января 2012

Я запускаю несколько запросов sas ежемесячно, и они экспортируют данные в определенные папки. Проблема в том, что я должен вручную создать эти папки, прежде чем запускать код, чтобы SAS не выдавал ошибку.

Есть ли способ автоматизировать это?

Мои папки должны быть названы так:

номер месяца - название месяца года (12 декабря 2011 г.). Я также хотел бы создать подпапку с именем Excel.

Также есть ли способ, чтобы месяц и число заполнялись автоматически ... поэтому, когда я запускаю это в январе, оно меняется на (1 - январь 2012)?

Ответы [ 2 ]

5 голосов
/ 31 января 2012

Команды X или SYSTASK могут сделать это.

Однако, если вы находитесь в среде Enterprise Guide (я не верю), это разрешено по умолчанию в 9.2. Я думаю, что 9.3 разрешит это по умолчанию в локальной среде ( блог SAS DUMMY)

Пример:

options noxwait;

data _null_;
 month=strip(put(month(today()),2.));
 year=strip(put(year(today()),4.));
 monname=put(today(),monname3.);
 dir_name=month !! " - " !! monname !! " " !! year;
 call symputx('dir_name',dir_name);
run;
%put &dir_name;

x "cd D:\Data";
x "%str(mkdir %"&dir_name%")";

Другой вариант - функция DCREATE

Пример:

data _null_;
 month=month(today());
 year=year(today());

 dir_name=put(month,2.) !! " - " !! put(today(),monname3.) !! " " !! put(year,4.);
 NewDirectory=dcreate(dir_name,'D:\Data\');
run;
1 голос
/ 14 декабря 2017

Это простое решение для создания, если оно не существует, и использования, если оно существует.Фрагмент кода приведен ниже.

%Macro Verifica_Lib(Libreria,Ruta);
Data _Null_;
Call Symput('Destino',&Ruta||Compress('&Libreria'));
Run;
%Put &Destino;
%If (%SysFunc(LibRef(&Libreria))) Ne 0 %Then %Do;
%Put Verificando existencia de libreria;
%Put La libreira &Libreria No Existe;
%Put Se procederaa crearla;
Options DLCreateDir;
LibName &Libreria "&Destino";
%End;
%Else %Do;
%Put Verificando existencia de libreria;
%Put La libreira &Libreria existe;
%Put Se continuara el proceso;
%End;
%Error_Sas(Verificacion de Libreria local);
%MEnd Verifica_Lib;
...