在SAS中制作目录(Windows)

时间:2012-01-31 15:41:28

标签: sas

我每月运行一些sas查询,并将数据导出到特定文件夹。问题是我必须在运行代码之前手动创建这些文件夹,这样SAS就不会出错。

有没有办法实现自动化?

我的文件夹必须以这种方式命名:

月份数 - 月份名称(2011年12月12日)。我还想创建一个名为Excel的子文件夹。

还有什么方法可以自动填充月份和数字...所以当我在1月份运行它时会改为(1 - 2012年1月)?

2 个答案:

答案 0 :(得分:5)

XSYSTASK命令可以执行此操作。

但是,如果您处于企业指南环境中(我不相信),则默认情况下允许在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;