data tt;
input a;
cards;
1
2
1
2
1
2
;
run;
data aa bb;
set tt;
if a=1 then do;
output aa; (return;)
end;
else if a=2 then goto rr;
rr: do;
put "output bb";
output bb;
end;
run;
上面的程序中,是要将tt中的a=1和a=2分开输出。
我的问题是,如果不加上括号中的return,那么bb数据集就会既有a=1也有a=2,加上return 强制回到data步开头,才能正确区分a=1和a=2。
记得SAS不是在output语句后,就自动结束当前的data步操作,进入下一data循环。那为什么这里在a=1时,Output aa之后,不自动结束进入下一data步循环,还要去执行标签tt中的output bb?