GTLはデータに応じて作図設定を制御することができます。
構文
SAS baseとは異なり、条件式の終了を明示するために「endif;」が必要です。またelse if文は使用できません。
は完全なブロックかステートメント文でなければなりません。
例えばlayout overlayブロックを条件に応じて変えたい場合、には「layout overlay~endlayout;」
まで記述します。
条件式はSAS関数が使用できます。
if (condition)
<GTL statement>;
else
<GTL statement>;
endif;
利用例
合格基準に合格した場合のみ散布図を出力します。
まずデータステップで合格基準の判定を行い、合格ならマクロ変数HANTEIに1を格納します。
次にsgrenderプロシジャにてdynamic variable _FLGにHANTEIを代入します。
HANTEI=1の時には散布図を出力し、それ以外の時は散布図を出力せずに”Not Applicable”と表示します。
データの判定する条件式を直接GTLに組み込むこともできると思いますが、データの演算関係はデータステップかSQLでやったほうが多分良いと思います。
data _NULL_; /* 合格基準を満たすか調べるコードを入力する*/
call symputx("HANTEI","1");
run;
proc template;
define statgraph mygraph;
dynamic _TIME _RESPONSE _FLG;
begingraph;
entrytitle "条件文テスト(FLG="_FLG")";
if (_FLG=1)
layout overlay;
scatterplot x=_TIME y=_RESPONSE;
endlayout;
else
layout overlay;
entry "Not Applicable" / textattrs=(size=24) autoalign=auto;
endlayout;
endif;
endgraph;
end;
run;
proc sgrender data=ds1 template=mygraph;
dynamic _TIME="TIME"
_RESPONSE="RESPONSE"
_FLG=&HANTEI.;
run;
フラグを変えて出力すると以下の通りになります。
合格基準を満たした場合
合格基準を満たさなかった場合