「CNTLOUT=オプション」で、FORMATカタログの中身をデータセットに出力することが出来ます。
PROC FORMAT LIBRARY=ライブラリ.カタログ名 CNTLOUT=出力先データセット ;
SELECT 出力するフォーマットを列挙; RUN; |
- 「LIBRARY=ライブラリ名」というようにカタログ名を省略した場合、ライブラリ内の「FORMATS」という名前のカタログがデフォルトで選択されます。
- SELECTステートメントを省略するとカタログ内の全フォーマットが選択されます。
フォーマット「TEST1_」と「TEST2_」が、CNTLOUT=オプションで作成されたデータセットにそれっぽい感じで格納されていることが分かるかと思います。
出来たデータセットの各変数について、以下にざっくり説明しておきます。
変数名 | 型 | 内容 |
FMTNAME | 文字 | フォーマット名 |
START | 文字 | 開始値 |
END | 文字 | 終了値 |
LABEL | 文字 | 出力値 |
MIN | 数値 | MIN=オプション値 |
MAX | 数値 | MAX=オプション値 |
DEFAULT | 数値 | DEFAULT=オプション値 |
LENGTH | 数値 | LENGTH=オプション値 。。とリファレンスに書いてありますが、 そんなオプション存在しないと思われるので詳細不明 |
FUZZ | 数値 | FUZZ=オプション値 |
PREFIX | 文字 | PICTUREフォーマットのPREFIX=オプション値 |
MULT | 数値 | PICTUREフォーマットのMULTIPLIER=オプション値 |
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 = PICTUREフォーマットのROUNDオプション ...等。詳細はリファレンスを参照 (組み合わせて使用します。例:Low-High…LH) |
DECSEP | 文字 | PICTUREフォーマットのDECSEP=オプション値 |
DIG3SEP | 文字 | PICTUREフォーマットのDIG3SEP=オプション値 |
DATATYPE | 文字 | PICTUREフォーマットのDATATYPE=オプション値 |
LANGUAGE | 文字 | PICTUREフォーマットのLAUNGUAGE=オプション値 |
次に色々なフォーマットをCNTLOUT=でデータセットに出力して、どんな感じのデータが出来るか見てみます。
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; |
結果は以下。画像をクリックすると拡大されます。
0 件のコメント:
コメントを投稿