如果数据步里没有读取数据的 set,input 语句, 那么该数据步迭代一次后终
止, 并将 "DATA step stopped due to looping message" 写入到 log 中。
楼上的例子中 if _n_ = 1 语句后面没有其他语句,直接运行一次 run 语句,
然后返回data语句,做第二次循环。
当 _n_=2 时没有找到 set, input 语句,按上面的说法再运行一次 run,然后
停止数据步. 所以共有两条数据.
http://support.sas.com/kb/8/914.htm
l
- data have;
- input sumy ;
- datalines;
- 36
- ; run;
- data aaa;
- put 'Loop: ' _n_ +5 _all_;
- if _n_ = 1 then do;
- set have; put 'B_' +11 _all_; end;
- put 'output_ ' +5 _all_ /;
- run;
- data bbb;
- put 'Loop: ' _n_ +5 _all_;
- if _n_ = 1 then do;
- set have; put 'B_' +11 _all_; end;
- else stop;
- put 'output_ ' +5 _all_ /;
- run;
- data ccc;
- put 'Loop: ' _n_ +5 _all_;
- if _n_ = 1 then do;
- set have; put 'B_' +11 _all_; end;
- stop;
- put 'output_ ' +5 _all_ /;
- run;
- data ddd;
- put 'Loop: ' _n_ +5 _all_;
- set have;
- put 'output_ ' +5 _all_/ ;
- run;
- data eee;
- put 'Loop: ' _n_ +5 _all_;
- if _n_ = 1 then do;
- set have; put 'B_' +11 _all_; end;
- set have;
- put 'output_ ' +5 _all_/ ;
- run;
复制代码