以下のようなログメッセージが出たことありませんか。
- 「ERROR: 出力形式XXを変数XXにロードできません」
- 「ERROR: 出力形式XXが見つからないか、またはロードできません。」
これは「存在しないフォーマットがデータセットに割り当てられている場合」に、現れるメッセージです。
このメッセージを制御しているのが「FMTERR」と「NOFMTERR」というシステムオプションです。
「Windows版SAS」では以下のシステムオプションがデフォルト設定となっています。
options fmterr; |
「SAS Ondemand for Academics」では以下がデフォルト設定となっています。
options nofmterr; |
それぞれがどんな動きか見ていきましょう。
以下は変数SEXに「$aaa」、変数BIRTHに「yymmdd10」というフォーマットを割り当てています。
options fmterr; data test; format sex $aaa. birth yymmdd10.; sex = "FEMALE"; birth = '26jun2019'd; run; --- Log --------------------- |
しかし「$aaa」というフォーマットを事前に定義していなかったので、、「$aaaなんてフォーマット見つからんよ!!」とブチ切れられて処理がストップしちゃいました。
そこで「NOFMTERR」を指定してやると、
options nofmterr; data test; format sex $aaa. birth yymmdd10.; sex = "FEMALE"; birth = '26jun2019'd; run; --- Log --------------------- --- Dataset ---------------- |
「フォーマット見つからないよ」と優しめに言われるものの、一応フォーマット$aaaが割り当てられて、処理を続けてくれます。
「NOFMTERR」が設定されてる間は、フォーマットが見つからなかった箇所を(通常は) 出力形式「w.」または「$w.」として扱ってくれます。
今度は以下のように「$aaa1.」というようにフォーマットに長さも指定した場合は、、
options nofmterr; data test; format sex $aaa1. birth yymmdd10.; sex = "FEMALE"; birth = '26jun2019'd; run; |
あれ、「FEMALE」の文字が「F」になってる。
実はフォーマットの長さの部分だけは見てくれるようです。つまり「$aaa1.」は「$1.」として扱われる。
あと例えば数値変数に対して「bbb8.2」みたいな感じで存在しないフォーマットを割り当てた場合も「8.2」として扱われる。
中途半端だな・・・
0 件のコメント:
コメントを投稿