X=1;
run;
data;
set;
X=X+1;
run;
上記のコードを実行するとどうなるでしょうか?
2ステップ目はdataの後も何もなく、setの後にも何も指定していません。
結果は
こんな感じになります。
dataで何も指定しないと、勝手に連番でDataXXといったデータセットが実行の度に作成されます。
これについては以前、「どうてもいい話 データセット名をかかずに実行」
で触れていました。完全に忘れていましたが、、。
で、今回はsetで何も指定しないとどうなるかという話で、これは
自動的に
set _LAST_;として解釈され、実行されます。
例えばプロシジャの指定で
proc print;
run;
として実行した場合も
proc print data=_LAST_;
run;
と自動で解釈されて実行されます。
で、この_LAST_ってなにって?なると、直前に作成されたデータセットが自動的に指定されます。
なので、最初のコードで、勝手にDATA1とか作るのではなくデータセットAを上書きしたいんだという場合は
data A;
X=1;
run;
data _LAST_;
set;
X=X+1;
run;
X=1;
run;
data _LAST_;
set;
X=X+1;
run;
とすれば
って感じです。
_LAST_は使いどころ無くはないです。
マクロの中とかで、データセットの作成順に変わる余地がない場合とか?
それでも、あてにしていたステップでデータセットが作成されず、想定外のものを_LAST_で拾ってしまう可能性もあるので、僕はあまり使ったことないですが。