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;



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

サンプルで作成したフォーマットカタログから「フォーマット名」を出力する例。
proc catalog cat=work.formats;
   contents;
run;
quit;



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

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



中身のコードを取得する

サンプルで作成したフォーマットカタログから「フォーマットの中身」を出力する例。
「フォーマットの中身」の文字数が多くて枠のなかに収まらない文字は切られて表示されるので注意

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 件のコメント:

コメントを投稿