SAS 数据步可以使用丰富的循环结构,主要的是两种:计数DO循环和当型、直到型循环。
计数DO循环的写法是:
DO 计数变量 = 起始值 TO 结束值 BY 步长;
循环体语句……
END;
在 DO 和END 之间可以有多个语句。程序先把计数变量赋值为起始值,如果此值小于等于结束值则执行循环体语句,然后把计数变量加上步长,再判断它是否小于等于结束值,如果是则继续执行循环体,直到计数变量的值大于结束值为止。上述结构中“BY 步长”可以省略,这时步长为1。如果步长取负值,则继续循环的条件是计数变量大于等于结束值。例如:
DATA; DO i = 1 TO 20 BY 2; j = i**3; PUT i 3. j 5.; END; RUN;
可以输出一个 1,3,5,7,?,19 的立方表。
循环体中可以使用LEAVE语句跳出循环,相当于其它语言中的break语句。在循环体内用CONTINUE语句可以立即结束本次循环并转入下一次循环。
当型循环的写法是:
DO WHILE(循环继续条件);
循环体语句……
END;
程序先判断循环继续条件是否成立,成立时执行循环体语句,再判断循环继续条件,如此重复,直到循环继续条件不再成立。
直到型循环的写法是:
DO UNTIL(循环退出条件);
循环体语句……
END;
程序先执行循环体,然后判断循环退出条件是否成立,成立则结束循环,否则继续。注意每轮循环都是先执行循环体再判断是否退出。

