CATS SAS功能中的选项名称无效?

时间:2015-10-14 14:38:16

标签: sas sas-macro

我有一个SAS宏,我想创建一个数据集名称,然后将该数据集导出到csv文件。

%macro export(outputDataset, prefix, outputFileName);
%let dName = cats(&prefix, test);
%let dName2 = cats(&prefix, test2);

data &outputDataset;
     set &dName &dName2;
run;


proc export data=&outputDataset outfile="outputDir/&outputFileName" replace; run;
%mend export;

但是,当我使用

调用宏时
%export(retain, hh_dpt, retained.csv)

我收到以下错误:

ERROR: Invalid option name hh_dept.

有谁知道问题可能是什么?谢谢!

2 个答案:

答案 0 :(得分:4)

%let dName = cats(&prefix, test);将字符串cats(hh_dpt, test)存储到宏变量dName中。当数据步骤编译时,SAS看到:

data retain
    set cats(hh_dept, test) cats(hh_dept, test2);
run;

cats函数无效使用。您无法使用SAS函数在Data Step set语句中连接数据集名称。你可以这样纠正:

data retain;
     set &prefix.test &prefix.test2;
run;

OR

%let dName = &prefix.test;
%let dName2 = &prefix.test2;

data retain;
     set &dName &dName2;
run;

&prefix.结束,表示字符串prefix是要解析的宏变量的名称。如果没有.,则扫描程序将假定您的宏变量的全名为&prefixtest

答案 1 :(得分:-1)

根据您的代码尝试此操作。

%macro export(outputDataset, prefix, outputFileName);
%let dName =%sysfunc(catx(.,&prefix, test));
%let dName2 =%sysfunc(catx(.,&prefix, test2));
data &outputDataset;
     set &dName &dName2;
run;
proc export data=&outputDataset outfile="outputDir/&outputFileName" replace; run;
%mend export;

%export(retain, hh_dpt, retained.csv)