wpfwxn 发表于 2016-2-14 09:12 
非常感谢您的回复,还有一个问题想请教。您的回答是基于自己的猜测,还是在书本或者论文中见到过类似的说 ...
之前search过, 没有找到相同问题的解释。
楼上的解释是基于对数据步的理解。 似乎不是很准确.
下图是
SAS文件里的内容
下面的例子中 cccc 只有一行数据. Log output: B eof_cccc=1 这一行说明当set语句读到最后一行数据
集时也读到了 end of file (end=1), 但 data step 并没有停止,而是继续运行了下面的语句 (put "B " _all_;)和run语句,
然后返回 data 语句. 直到再次遇到 set 语句, 但 cccc 已经没有数据可读, 所以 data step 停止运行.
换句话说: set 语句遇到空数据时,data step 就会停止. 这样解释是否更准确些?
data _null_;
put "A " _all_;
set cccc end = eof_cccc;
put "B " _all_;
run;
/* log output */
A eof_cccc=0 Name= Sex= Age=. Height=. Weight=. _ERROR_=0 _N_=1
B eof_cccc=1 Name=CCCCC Sex= Age=20 Height=. Weight=. _ERROR_=0 _N_=1
A eof_cccc=1 Name=CCCCC Sex= Age=20 Height=. Weight=. _ERROR_=0 _N_=2