dkricondオプションで、データセットオプションで存在しない変数を対象としたdrop keep renameが実行された際のエラー制御の話

さて、以下の2ステップを実行するとどうなるでしょうか??

data Q1;
X=1;
run;

data A1;
set Q1(drop=Y);
run;

答えは2ステップ目でエラーになってA1はちゃんと作成されないでした。

ERROR: DROP, KEEP または RENAME リスト内の変数 Y は参照されませんでした。
NOTE: エラーが発生したため、このステップの処理を中止しました。
WARNING: データセット WORK.A1 は未完成です。このステップは、 0 オブザベーション、0 変数で停止しました。
WARNING: このステップを中止したため、データセット WORK.A1 を置き換えていません。

でログが華やぎます。

で、もちろん、存在しない変数を対象にしたデータセットオプションを指定しなければよい話なのですが、例えばマクロなんか組んでると、いちいち変数の存在確認して分岐処理を入れると煩雑になる場合もあります。

エラー制御系のオプションは良し悪しですが、知ってて損はないのでご紹介。

options dkricond=nowarn;

data A2;
set Q1(drop=Y);
run;

options dkricond=error;

とすると、





、ログには何も出ません。

さてdkricondってなんの略だと思います?

dはdrop kはkeep rはrenameです(多分)。

でiはin dataset optionとかinputとかinの略(多分ね)、でcondはcondition(多分ね)の略です。

つまりdkricondはインデータセットオプションにdrop keep renameが指定されて、その変数が
ない場合にどうするかで、デフォルトはERRORです。

ちなみにdkrocondオプションっていうのもあって、つまりは

data A3(drop=Y);
set Q1;
run;

こういうようにアウトするデータセットにつけるデータセットオプションの場合ですが、こっちは
inの方と違ってデフォルトはwarningなのです。だからwarningが出てもデータセットができてれば一向に構わん!って人はいらないかも。
まあ、試してみてください。


0 件のコメント:

コメントを投稿