「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 | 数値 | 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=でデータセットに出力して、どんな感じのデータが出来るか見てみます。
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; |
結果は以下。画像をクリックすると拡大されます。
2. 範囲の指定
3. INVALUEステートメント
4. PICTUREステートメント1
5. PICTUREステートメント2
6. PICTUREステートメント3
7. フォーマットカタログの保存
8. CNTLOUT=オプション
3. INVALUEステートメント
4. PICTUREステートメント1
5. PICTUREステートメント2
6. PICTUREステートメント3
7. フォーマットカタログの保存
8. CNTLOUT=オプション
0 件のコメント:
コメントを投稿