SASでクイズ作って自分で遊ぶ虚しい話

以下のコードを丸ごとコピペして実行してみてください
※SAS雲丹では無理です。

data u_data;
   length name $20;
   window start
      #3   '★思いつく限りSAS関数名を入力欄に入れてEnterを押せ'
      #5   '※Enterを押すとクリアされるが内部に蓄積してるから安心しろ!'
      #8 '入力エリア:' +1 name attr=underline
      #12 'もう思いつかない!となったらウインドウを閉じるか、コマンド=>にendと打ってEnterを押せ!'
      #13 '';
   display start;
run;
data kaitou;
length level $100.;
if _N_=0 then set sashelp.vfunc(keep=fncname);
if _N_ = 1 then do;
declare hash h(dataset:"sashelp.vfunc(keep=fncname)");
h.definekey('fncname');
h.definedone();
end;
set u_data end = eof;
where name ^= '';
name=upcase(name);
rc=h.check(key:name);
if rc = 0 then do;
hantei='○';
score +1;
end;
if rc ne 0 then hantei ='×';
if eof then do;
if score <= 2 then level ="レベル1 エセSAS使い";
else if score <= 5 then level ="レベル2 駆け出しSAS使い";
else if score <= 10 then level ="レベル3 標準SAS使い";
else if score <= 15 then level ="レベル4 中々なSAS使い";
else if score <= 20 then level ="レベル5 頼りになるSAS使い";
else if score <= 30 then level ="レベル6 ちょっとキモがられてるSAS使い";
else if score <= 40 then level ="レベル7 知りすぎたSAS使い";
else if score <= 50 then level ="レベル8 極めたSAS使い";
else if score <= 60 then level ="レベル9 狂ったSAS使い";
else if score > 60 then level ="レベル10 ジム・グッドナイト SASインスティチュートCEO";
end;
keep name hantei score level;
run;

dm "viewtable kaitou";


多分、以下のような画面がでてきます。




さあ!!クイズの始まりです!!

入力エリアにカーソルを合わせて、知っているSAS関数名を入力し
Enterを押します。













すると文字が消えます。

これを、思いつく関数が無くなるまで繰り返します。

もう無理!となったら、ウインドウを閉じるか、コマンド=> の後にendと打ってEnterします。

※SAS自体を閉じちゃダメですよ。

すると、今まで入力したデータに対しての採点結果が表示され、
最終オブザベーションのlevelの箇所に、あなたのSASプログラマーとしての評価が表示されます。











はい、以上、悪ふざけでした!

※当然レベルの判定は冗談です

ふざけた例ですが一応、windowステートメントによって生成したウンインドウで
ユーザーの入力をうけとりデータセットを生成するテクニックとか、ハッシュオブジェクトの
checkメソッドとか使ってます。

%winodwによるマクロウインドウ生成は既に記事にしております

http://sas-tumesas.blogspot.jp/2013/10/window.html



0 件のコメント:

コメントを投稿