ループは深く掘りすぎると、どこで何してんだか分かりにくくなります。
さらにインデントもちゃんとされていないようなコードの検証作業などになると、ちょっとつらいです。
例えば以下のようなコードの場合、どの階層で割り当てステートメントが実行されているか
わかりにくいです。
data A1;
do X=1 to 2;
A=1;
do Y=1 to 2;
B=2;
do Z=1 to 2;
C=3;
output;
end;
D=4;
end;
E=5;
end;
F=6;
run;
そういった時は
data A1/nesting;
do X=1 to 2;
A=1;
do Y=1 to 2;
B=2;
do Z=1 to 2;
C=3;
output;
end;
D=4;
end;
E=5;
end;
F=6;
run;
と/nesting;をつけて実行してみましょう。
ログに
ちょっと画像だと見にくいかもですが、
ループのカウンター変数(或いはuntilやwhileの場合はその部分)に赤下線が入ります。
endステートメントにも入ります。
赤下線でも別にエラーというわけではないです。
そしてその赤下線の下に
「 *** DO begin level 1 ***」や「 *** DO end level 1 ***」といったように、ループの開始位置と終了位置はここですよと教えてくれます。
ささやかなで単純な助けなので、つけなくてもループ文くらい読み解けるわって思うのですが、
案外馬鹿にできないもので、うまくいかずに泥沼化した時は素直につけるようにしています。
0 件のコメント:
コメントを投稿