重复几个数据集和proc sql

时间:2016-05-09 06:27:10

标签: sas sas-macro

我有程序包含数据集和proc sql。 在程序结束时,我想检查最终值,并决定是否应该使用不同的参数再次执行程序的一部分,或者值是否正常。

有没有办法可以做循环数据集和procsql? (例如,我想重复下面的所有代码。)

proc sql;
    create table first as
    select * from qw;
quit;

data st;
  a = 1
run;

proc sql;
    create table st as
    select * from fir;
quit;

非常感谢您的帮助。 米甲

1 个答案:

答案 0 :(得分:0)

您需要使用do-while循环创建一个宏。您没有指定值是什么,您从哪里获取它们或者您想要停止的方式,但希望这个想法足以让您开始。

如果您正在查看最小化或优化问题并且使用SAS / IML或SAS / OR,您可能希望了解它们是否具有对您的情况有帮助的过程。

%macro loop (threshold);
%do %while (&value < &threshold);
proc sql;
    create table first as
    select * from qw;
quit;

data st;
  a = 1
run;

proc sql;
    create table st as
    select soucet +1 into :value from fir;
quit;


%end;

%mend;

编辑:

在set语句中使用end =选项。如果它的最后一条记录创建一个可用于循环的宏变量。

Set end=eof; 
if eof then do; 
    call symputx('soucet', soucet);
end;