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