今回はデータセットの中身をRWIで出力する方法を紹介。
(以降、HTMLへの出力が有効になっている前提)
data DT1;
V1=1; V2="AAA"; output;
V1=2; V2="BBB"; output;
V1=3; V2="CCC"; output;
run;
|
RWIを使って出力
data _NULL_; set DT1 end=EOF; *** データステップの最初だけ実行する部分 ; if _N_=1 then do; * RWIを使えるようにして表作成を開始 ; dcl odsout ob(); ob.table_start(); * 項目名を出力 ; ob.head_start(); ob.row_start(); ob.format_cell(data: "V1", style_attr: "background=blue color=white"); ob.format_cell(data: "V2", style_attr: "background=blue color=white"); ob.row_end(); ob.head_end(); end; *** データの中身を出力 ; ob.row_start(); ob.format_cell(data: V1); ob.format_cell(data: V2); ob.row_end(); *** 最後に表作成を終了 ; if EOF then ob.table_end(); run; |
処理の流れ
set DT1 end=EOF;
|
まず、出力するデータセットDT1を読み込む。
「end=EOF」で最終オブザベーションを読み込むとき一時変数EOFに「1」が入る。(この一時変数は後で使う)
ちなみに今回は一時変数名をEOFという名前にしているけど、任意の名前で指定可能。
オブザベーションを読み込むたびに実行する必要がない箇所、
つまり最初の1回実行するだけでいい箇所を「if _N_=1 then do;」と「end;」で囲んであげる。
今回新たに登場した「head_start」「head_endメソッド」では、囲んだ範囲をヘッダーとして扱うことが出来ます。
また、「format_cellメソッド」の「style_attr」というのは、セルのスタイル属性を設定するオプションで、今回は背景色=青、文字色=白にしてます。
セルのスタイル設定
使いたいスタイル属性は、SAS社の提供してるODSのリファレンスを参照ください。
オブザベーション毎に変数値を出力
一番最初に作った一時変数EOFを使って、最後に表作成を終了させる。
*** データステップの最初だけ実行する部分 ; if _N_=1 then do; * RWIを使えるようにして表作成を開始 ; dcl odsout ob(); ob.table_start(); * 項目名を出力 ; ob.head_start(); ob.row_start(); ob.format_cell(data: "V1", style_attr: "background=blue color=white"); ob.format_cell(data: "V2", style_attr: "background=blue color=white"); ob.row_end(); ob.head_end(); end; |
オブザベーションを読み込むたびに実行する必要がない箇所、
つまり最初の1回実行するだけでいい箇所を「if _N_=1 then do;」と「end;」で囲んであげる。
今回新たに登場した「head_start」「head_endメソッド」では、囲んだ範囲をヘッダーとして扱うことが出来ます。
また、「format_cellメソッド」の「style_attr」というのは、セルのスタイル属性を設定するオプションで、今回は背景色=青、文字色=白にしてます。
セルのスタイル設定
参照名.format_cell( data: "表示するテキスト", style_attr: "スタイル属性")
※SAS9.4より前のバージョンは「style_attr」ではなく「overrides」で動く。 |
使いたいスタイル属性は、SAS社の提供してるODSのリファレンスを参照ください。
*** データの中身を出力 ;
ob.row_start(); ob.format_cell(data: V1); ob.format_cell(data: V2); ob.row_end(); |
オブザベーション毎に変数値を出力
if EOF then ob.table_end();
|
一番最初に作った一時変数EOFを使って、最後に表作成を終了させる。
0 件のコメント:
コメントを投稿