关于do循环,永远理解do循环先执行完内部的程序再跳出来的就行了
上面的例子我给你简写一下,方便理解
data a;
do n=1 to 3;
x=1;
end;
run;
data a1;
do n=1 to 3;
x=1;
output;
end;
run;
第一个程序,编译,为n和x在pdv中开辟空间,值为缺失,然后在pdv中发生以下事情, n=1, x=1,(第一个循环), n=2,x=1; n=3, x=1; 这个三循环都在pdv中发生,可以理解为在pdv的第一条观测发生,n和x被不断重新赋值,最后循环结束了,这个时候跳出循环,程序继续进行,读到run。由于整个程序没有output,默认output. 我是这么理解的:n=1,n=2的事情已经在pdv中成为历史,不复存在。
第二个程序就不用说了,pdv中赋值一次,就输出一次。最后到run语句