我正在使用宏来浏览大约13,000个版本ID的列表。每次传递代码都会通过一个宏,使用PROC SQL将三个表连接在一起。注意:我也在使用压缩功能。 第一个表将在大约1分钟内运行(返回2,561行),第二个表占用20分钟到两个小时,具体取决于该版本的付款数量(返回大约118,000行),第三个表大约需要1分钟返回(600行)。运行第二个表所花费的时间有点令人担忧,但我的主要问题是在循环中我在大约2次传递后遇到排序执行错误。 我已经查明这可能是由于内存,但我的同事能够以5000的增量运行相同的宏,没有任何问题。 非常感谢任何帮助
%MACRO LOOPVERNOS();
%GLOBAL VERSIONID MAX_VERSIONID STARTNO FINISHNO INCR VERSION_NOS;
%GETMAXVERSIONID
%PUT MAX_VERSIONID = &MAX_VERSIONID;
%LET INCR = 500;
%DO VERSIONID = 1 %TO &MAX_VERSIONID %BY &INCR;
%PUT VERSIONID = &VERSIONID;
%LET STARTNO = &VERSIONID;
%LET FINISHNO = %EVAL(&STARTNO + &INCR);
%PUT STARTNO IS &STARTNO, FINISHNO IS &FINISHNO;
%GETVERNOS(STARTNO = &STARTNO,FINISHNO = &FINISHNO)
%PUT GOT VERSION NUMBERS;
%SQL
%PUT QUERIED PAYMENTS TABLE FOR CLAIMIDS &STARTNO-%EVAL(&FINISHNO - 1);
%PUT PASS COMPLETED;
%END;
%MEND LOOPVERNOS;
%LOOPVERNOS