nofmterrが想定してないエラーを隠してしまうこともあるんだよって話

ユーザー定義フォーマット が参照されているSASデータセットを開く場合は、カタログがwork等、デフォルトで検索される場所以外にあるのであればfmtsearchでカタログの存在するライブラリ名を指定する必要があります。

しかし、とりあえず、フォーマット当たってなくて、値でいいから開きたいという場合に
opions nofmterrを指定するケースがあります。そうしておけば、ユーザー定義フォーマットが見つからなくても、値で表示するので、開けるようになります。

で、結構パッと過去のデータみたいけど、フォーマットが見当たらないみたいな時に、使って、効いたまま、次の処理や作業をしちゃうことがあります。

そういう時に怖いのが以下のようなケースです

data  _null_;
x=input("2018/01/01",yymmdds10.);
put x=;
run;

よくあるミスですが、入力形式にyymmdds10というものは存在せず,yymmdd10.と指定するべきなので、当然














エラーになるので、気づくことができます。

ところがoptions nofmterrが効いていると



























赤線は残りますが、ERRORという扱いではなくなり、欠損のまま、問題なく処理が終了してしまいます。
これは見落としてしまいがちなので、要注意です。
必要がなくなったらoptins fmterrに戻しておくことをおすすめします。
あと、SAS ondemandなど一部のパッケージではデフォがnofmterrだったりするっぽいので気をつけてくださいな。



0 件のコメント:

コメントを投稿