【发布时间】:2015-10-09 14:53:41
【问题描述】:
我有一个程序可以合并任意数量的连续编号的表。我尝试使用宏变量但无济于事。不断弹出错误“编号数据集列表中缺少数字后缀”。
这是有缺陷的代码:
DATA INPUTF;
INPUT DSN $;
CARDS;
forum1
forum2
forum3
;
RUN;
DATA forum1;
INPUT contact $ forum1 $;
CARDS;
Mash HERE
Greg HERE
Bob HERE
;
PROC SORT DATA=forum1;
BY contact;
RUN;
DATA forum2;
INPUT contact $ forum2 $;
CARDS;
Mash HERE
Sid HERE
Bob HERE
;
RUN;
PROC SORT DATA=forum2;
BY contact;
RUN;
DATA forum3;
INPUT contact $ forum3 $;
CARDS;
Mash HERE
Sid HERE
Jim HERE
;
RUN;
PROC SORT DATA=forum3;
BY contact;
RUN;
PROC SQL NOPRINT;
SELECT COUNT(*) INTO :n FROM INPUTF;
QUIT;
%MACRO COMBINE(N);
DATA ALLIN;
MERGE forum1-forum&n.;
BY contact;
RUN;
%MEND COMBINE;
%COMBINE;
PROC PRINT DATA=ALLIN;
但是,当我使用 %LET 语句时,代码可以正常工作,如下所示:
%let n=3;
DATA ALLIN;
MERGE forum1-forum&n.;
BY contact;
RUN;
PROC PRINT DATA=ALLIN;
问题是我不知道有多少个论坛,我更喜欢根据输入文件的数量。
感谢任何帮助!谢谢!
【问题讨论】:
-
您的库中是否还有其他以前缀 forum 开头的表?