dosubl関数でviewを設定して同ステップでそのままハッシュオブジェクトのソースにする話

そろそろ,いいかなぁって.
アメリカの某SASの集まりで発表して賞取ったネタ.
通常hashのdataset:で指定するものは,データステップ開始時点で存在しているデータセット(ビュー)でなければいけないが,dusubl関数でのコード実行のみ,ステップ開始後の生成で間に合ってしまうという話.
マクロ化すれば,様々なサブセットや,SQLクエリの抽出結果からそのままデータ取得をいくらでもやり放題という技術.
結構,劇的に開発効率をあげれる(少なくとも私自身は)技術で重宝している

data output;

set sashelp.class;

if _N_ = 1 then do;

rc=dosubl("proc sql noprint;

                create view v1 as

                select sex ,mean(age) as age_mean

                from sashelp.class

                group by sex;

                quit;");

drop rc;

declare hash h1(dataset:"v1");

h1.definekey("sex");

h1.definedata("age_mean");

h1.definedone();

end;

if h1.find() ne 0 then call missing(age_mean);

run;