我每月运行一些sas查询,并将数据导出到特定文件夹。问题是我必须在运行代码之前手动创建这些文件夹,这样SAS就不会出错。
有没有办法实现自动化?
我的文件夹必须以这种方式命名:
月份数 - 月份名称(2011年12月12日)。我还想创建一个名为Excel的子文件夹。
还有什么方法可以自动填充月份和数字...所以当我在1月份运行它时会改为(1 - 2012年1月)?
答案 0 :(得分:5)
但是,如果您处于企业指南环境中(我不相信),则默认情况下允许在9.2中使用。我认为9.3默认情况下会在本地环境中允许它(SAS DUMMY blog)
示例:
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 :(得分:1)
如果不存在则创建一个简单的解决方案,如果存在则使用。 代码段如下所示。
%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;