2018年4月17日火曜日

PROC FORMAT入門7 : フォーマットカタログの保存




以下のようにフォーマットを定義したとします。

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」という名前で保存されます。





ここまでで、フォーマットカタログを保存する方法は分かりましたが、
WORK以外に保存したフォーマットカタログはそのままでは利用できません。利用するには以下2つの方法があります。





① ライブラリ参照「LIBRARY」を利用する



例えば、以下のプログラムで「TEST1_」というフォーマットを使用しています。

data DT1;
   format X TEST1_.;
   X = 1;
run;



まずSASは、この「TEST1_」をフォーマットカタログから探しにいきます。
デフォルトでは、「WORK.FORMATS」→「LIBRARY.FORMATS」の順に探しに行きます。



「WORK.FORMATS」の次に検索される「LIBRARY.FORMATS」はSASが決めたやつで、


   LIBNAME LIBRARY  "フォーマットカタログを保存したパス";


と書けば、このパスに格納されている「FORMATS」と名の付いたカタログが検索されるようになります。




② 「OPTIONS FMTSEARCH」 を利用する



「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





PROC FORMAT入門 : 記事一覧

2. 範囲の指定
3. INVALUEステートメント
4. PICTUREステートメント1
5. PICTUREステートメント2
6. PICTUREステートメント3
7. フォーマットカタログの保存
8. CNTLIN=オプション
9. CNTLOUT=オプション
10. その他の小ネタ

0 件のコメント:

コメントを投稿