%window マクロウインドウが今でも輝きを失っていないという話

マクロウインドウは、マクロで制御することができる、簡易な(しょぼい)インターフェースを作成することができる機能なのですが、ちょとマイナーだったり古いといったイメージがあります。

よくEXCELをインターフェースにしてVBAでSASを動かす簡易なアプリケーションを作成したり、HTMLとJavascriptとSASを組み合わせた簡易ツールの話を目にしますが、しかし

複雑な機能を持っていたり、見栄えを綺麗にする上ではそれらが活きてくると思いますが、例えば1つ2つユーザーがパラメータを入力して、後はSASが走るだけといったシステムなら今でもマクロウインドウは全然活きてくると思います。
(DMでつかうツールで症例を絞ってロジカルやコンペアツール動かしたり程度のツールなど)

例えば、以下のようなデータがあったとします。

data DS1;
ID='T001';SEX='M';VAL=100;output;
ID='T002';SEX='M';VAL=110;output;
ID='T003';SEX='F';VAL=120;output;
ID='T004';SEX='F';VAL=130;output;
run;


それで以下のプログラムがあったとして

proc print data=DS1;
 where SEX="&WH";
run;

&WHに入る「M」「F」などの条件をユーザーに入力させるツールを作成するとします。

%let WH=M;

%window selectselect
#1 @1 "抽出条件の設定"

#3 @8 "男性のデータが欲しい場合はM"
#4 @8 "女性のデータが欲しい場合はF"
#6  @15 WH 20 attr=underline
#8 @8 "入力後にEnterを1回おしてください"
;

%display selectselect;

proc print data=DS1;
 where SEX="&WH";
run;

SASを開いて
このコードを、実行すると












という画面が表示され、デフォルトでMと表示されています。
これは%letでマクロ変数WHにMという値を代入しているからです。

ここはユーザーが消して、Fに変えることもできます。

抽出したい値を入力してエンターキーをクリックすると
その値でマクロ変数WHが更新され、以降のプログラムが実行されます。


%window
でウインドウを定義します
(#が表示される行、@がカラム位置、attrで書式など属性を付与できます)

%displayで定義したウインドウを表示できます。

実行後endsas;等で自動で閉じるようにしておけば、このSASファイルはもう
立派なツールじゃないでしょうか?

詳しくはマクロ言語:リファレンスを参照してください。
簡易なインターフェースと書きましたが、コードを細かく書けば
かなりしっかりしたものも作れるみたいですよ?




0 件のコメント:

コメントを投稿