ライブラリ名を「LIBRARY」にするとfmtsearchで指定しなくてもユーザー定義フォーマットが参照できる話

よく、全くSASを知らない人から言われるのが、データセットを開こうとしたらエラーがでて、開けないけど壊れてるんじゃない?という質問です。
今のところSASデータセットのファイル自体が破損して、参照できなくなったという経験は僕にはないです。

一番多いのが、ユーザー定義のフォーマットを参照しているデータセットをそのままダブルクリックで開いて「ERROR: 出力形式 XXX を変数 XXX にロードできません。」がでているパターンです。
ユーザー定義のフォーマットがカタログファイルとして存在し、それがデータセットで参照されている場合、フォーマットの場所をSASに教えてあげないといけません。

まずlibnameステートメントでカタログのある場所にライブラリ名をつけてそれを

options fmtsearch=(XX);


とすればSASはライブラリXXにあるフォーマットを参照することができます。
で実は、fmtsearchを使わなくてもユーザー定義フォーマットを参照させることができます。

それはライブラリ名を「LIBRARY」という名前にするのです。

SASのフォーマットを検索する順番として
「WORK」→「LIBRARY」→以下fmtsearchで指定されたライブラリがあれば、指定順にそのライブリ

となっています。

そのためカタログの入っているフォルダを
libname library "パス";
とすれば

options fmtsearch=(library);などとする必要はなくなります。

まあ、ただ、LIBRARYってライブラリ名って、なんか何も表してないようであんまり僕は好きじゃないですけど。
フォーマットが複数に分散してたりするわけでもなければ、便利と言えば便利な小技です。

またoptions nofmterr;とするとフォーマットが参照できない状態でもデータセットを開けるようになります。その際、ユーザー定義のフォーマットがあてられている変数は、数値ならw. 文字なら $w.フォーマットが強制適用されます。




0 件のコメント:

コメントを投稿