如何将数据集的名称作为SAS宏中的列

时间:2015-08-25 13:25:52

标签: macros sas

我试图写一个宏。 Marco是关于输出重复的。然后将它们全部附加到一个数据集中。此数据集将包含两列:表名(我在一个库中选择),主键。 那么,如何在Macro中获取所有表名? 我以为我能做到:dataset ='& data。'作为此数据集的新列。但宏将把所有这些都视为&数据。而不是交换到表名。

谢谢

1 个答案:

答案 0 :(得分:0)

要确切地确定您要求的内容并不容易,但这里有两个起点可以使用。

您可以使用:into选项,创建一个宏变量,其中包含由分隔符分隔的许多内容的列表:

PROC SQL NOPRINT;
SELECT EMPID,
INTO :E1 SEPERATED BY “ , ”

FROM dset;
QUIT;

%PUT &E1;

您还可以保存编号的宏变量和& varnum(保存为变量的数据集的数量)并在循环中执行追加(假设您将数据集列为var1到varx):

*needs to be in a macro;
%macro  loop_through();
    %do i = 1 %to &Varnum;

       /* proc append code here with data = &&var&i 
    (etc, &&var&i will resolve to &var1, &var2 and so on) */

    %end;
%mend;

%loop_through();