2018年6月14日木曜日

PROC FORMAT入門8 : CNTLOUT=オプション





CNTLOUT=オプション」で、FORMATカタログの中身をデータセットに出力することが出来ます。




構文

PROC FORMAT  LIBRARY=ライブラリ.カタログ名  CNTLOUT=出力先データセット ;
       SELECT  出力するフォーマットを列挙;
RUN;


  • LIBRARY=ライブラリ名」というようにカタログ名を省略した場合、ライブラリ内の「FORMATS」という名前のカタログがデフォルトで選択されます。
  • SELECTステートメントを省略するとカタログ内の全フォーマットが選択されます。






proc format;
   value TEST1_
       1 = "MALE"
       2 = "FEMALE"
   ;
   value $TEST2_
       "Y" = "YES"
       "N" = "NO"
   ;
run;

proc format lib=WORK cntlout=OUT1;
run;



フォーマット「TEST1_」と「TEST2_」が、CNTLOUT=オプションで作成されたデータセットにそれっぽい感じで格納されていることが分かるかと思います。



出来たデータセットの各変数について、以下にざっくり説明しておきます。



CNTLOUT = データセットの各変数の説明

 変数名 型 内容 
 FMTNAME  文字   フォーマット名
 START 文字 開始値
 END 文字 終了値
 LABEL 文字 出力値
 MIN 数値 MIN=オプション値 
 MAX 数値 MAX=オプション値
 DEFAULT
 数値 DEFAULT=オプション値 
 LENGTH  数値 LENGTH=オプション値
 FUZZ   数値 FUZZ=オプション値
 PREFIX   文字 PICTUREフォーマットのPREFIX=オプション値 
 MULT 

 数値

 MULTIPLIER=オプション値
 (PICTUREフォーマットの場合、指定してなくても勝手に入る)
 FILL  文字 PICTUREフォーマットのFILL=オプション値
 NOEDIT   数値 PICTUREフォーマットのNOEDITオプションが有効かどうか
 (1=有効 0=無効)
 TYPE 

 文字

 フォーマットの種類
  N = 数値フォーマット
  C = 文字フォーマット
  I = 数値インフォーマット
  J = 文字インフォーマット
  P = PICTUREフォーマット

 SEXCL

 文字

 開始値の取扱い
 ("Y"=開始値超 "N"=開始値以上)

 EEXCL  

 文字

 終了値の取扱い
 ("Y"=終了値未満 "N"=終了値以下)

 HLO

 文字

 開始値・終了値の追加情報
  O = OTHER
  L = LOW
  H = HIGH
  R =「round=オプション」が有効  ...等 
 (組み合わせて使用する 例:Low-High…LH)

 DECSEP  文字 DECSEP=オプション値
 DIG3SEP 文字 DIG3SEP=オプション値
 DATATYPE  文字 PICTUREフォーマットのDATETYPE=オプション値
 LANGUAGE 文字 LAUNGUAGE=オプション値






ここからは、まだ余裕がある人だけ。
次に色々なフォーマットをCNTLOUT=でデータセットに出力して、どんな感じのデータが出来るか見てみます。

例2

proc format;
   value TEST1_
      1 = "MALE"
      2 = "FEMALE"
   ;
   value $TEST2_
      "Y" = "YES"
      "N" = "NO"
   ;
   value TEST3_
      1 - 3 = "1~3"
      other = "その他"
   ;
   invalue TEST4_
      "MALE"     = 1
      "FEMALE" = 2
   ;
   invalue $TEST5_
      "Y"    = "YES"
      "N"    = "NO"
   ;
   picture TEST6_ (default=3)
     low -< 0 = '00' (prefix="-")
     0 - high = '00'
   ;
   picture TEST7_ (round)
      low - high = '009.00%'
   ;
   picture TEST8_ (default=10)
      low - high = '%Y_%0m_%0d' (datatype=datetime)
   ;
run;


proc format lib=WORK cntlout=OUT1;
run;


結果は以下。画像をクリックすると拡大されます。




PROC FORMAT入門 : 記事一覧


0 件のコメント:

コメントを投稿