2015年5月26日火曜日

「PROC CATALOG」でフォーマット名を取得する方法と、「PROC FORMAT」でコードの中身を取得する方法


「フォーマット名を取得したい」 とか 「ある特定のフォーマットにどんなコードがあるのか見てみたいんだけど」 という質問を度々頂くので、解説したいと思います。

* サンプルフォーマット ;
proc format;
  value A_
    1="aaa"
    2="bbb"
  ;
  value $B_
    "xx"="aaa"
    "yy"="bbb"
  ;
  invalue C_
    "ccc"=1
    "ddd"=2
  ;
run;



フォーマット名を取得したい

WORKライブラリのフォーマット名を出力する例。
proc catalog cat=work.formats;
   contents;
run;



青字部分は「cat=ライブラリ名.フォーマットカタログ名」という感じで適宜変えてください。

データセット化したい場合は、「OUT=」を使います。
proc catalog cat=work.formats;
   contents out=OUT1;
run;



中身のコードを取得する

WORKライブラリのフォーマットの中身を出力する例。
proc format lib=work.formats  fmtlib;
run;



これも青字部分を 「lib=ライブラリ名.フォーマットカタログ名  fmtlib」 という感じで適宜変えてください。


出力するフォーマットを絞りたい場合は、SELECTを使います。
INFORMATの場合は、以下のように、頭にを付けるのを忘れずに!
proc format lib=work.formats  fmtlib;
   select  A_  $B_  @C_;
run;

データセットに出力したい場合は、「CNTLOUT=」を使います。
proc format lib=work.formats cntlout=OUT2;
run;

0 件のコメント:

コメントを投稿