以下のようにフォーマットを定義したとします。
proc format;
value TEST1_ 1 = "MALE" 2 = "FEMALE" ; invalue TEST2_ "M" = 1 "F" = 2 ; run; |
定義したフォーマットはライブラリ「WORK」に「FORMATS」という名前で保存されます。
この「WORK.FORMATS」を「SASカタログ(或いはフォーマットカタログ)」といいます。
WORK以外の場所にフォーマットカタログを保存したい場合は「LIBRARY=オプション」を指定します。
PROC FORMAT LIBRARY = ライブラリ.カタログ名;
~ フォーマット定義 ~ RUN; |
例)
library = MYLIB.FORMATS ……「MYLIB.FORMATS」で保存
library = MYLIB.MYFMT ……「MYLIB.MYFMT」で保存
library = MYLIB ……「MYLIB.FORMATS」で保存※3つ目の例のようにカタログ名を省略すると「FORMATS」という名前で保存されます。
ここまでで、フォーマットカタログを保存する方法は分かりましたが、
例えば、以下のプログラムで「TEST1_」というフォーマットを使用しています。
data DT1;
format X TEST1_.; X = 1; run; |
まずSASは、この「TEST1_」をフォーマットカタログから探しにいきます。
デフォルトでは、「WORK.FORMATS」→「LIBRARY.FORMATS」の順に探しに行きます。
「WORK.FORMATS」の次に検索される「LIBRARY.FORMATS」はSASが決めたやつで、
LIBNAME LIBRARY "フォーマットカタログを保存したパス";
|
と書けば、このパスに格納されている「FORMATS」と名の付いたカタログが検索されるようになります。
「FMTSEARCH」システムオプションでは、参照するフォーマットカタログと、参照する順番を指定できます。
OPTIONS FMTSEARCH = ( 参照する順にフォーマットカタログを列挙 )
|
例) options fmtsearch=( TEST.MYFMT );
「WORK.FORMATS」→「LIBRARY.FORMATS」→「TEST.MYFMT」の順に検索。
(「WORK.FORMATS」と「LIBRARY.FORMATS」は強制的に最初に検索される。)
例) options fmtsearch=( TEST );
「WORK.FORMATS」→「LIBRARY.FORMATS」→「TEST.FORMATS」の順に検索。
(「TEST」というように、ライブラリ名しか指定しない場合、「ライブラリ.FORMATS」が検索される)
例) options fmtsearch=( TEST WORK );
「LIBRARY.FORMATS」→「TEST .FORMATS」→「WORK.FORMATS」の順に検索。
(「WORK.FORMATS」または「LIBRARY.FORMATS」の検索順を明示的に指定して変えることができる)
長い説明になりましたが、データステップ100万回のSASYAMAさんの記事もあわせて参照下さい。(やっぱSASYAMAさんの記事分かり易い、説明うまいなぁ)
http://sas-tumesas.blogspot.jp/2013/12/libraryfmtsearch.html
2. 範囲の指定
3. INVALUEステートメント
4. PICTUREステートメント1
5. PICTUREステートメント2
6. PICTUREステートメント3
7. フォーマットカタログの保存
3. INVALUEステートメント
4. PICTUREステートメント1
5. PICTUREステートメント2
6. PICTUREステートメント3
7. フォーマットカタログの保存
0 件のコメント:
コメントを投稿