2010年9月9日木曜日

SASHELPライブラリの便利なViewTableたち

Question mark
Creative Commons License photo credit: the Italian voice

ちょっとSASプログラミングに慣れた人達が上手に利用するテーブルがあります。
今回はそんなSASHELPライブラリにあるいくつかのViewtableをご紹介します。

例えば、「任意のライブラリにある全てのデータセットに対して何かをしたい」
そういった場面があったとします。

そんなときに役に立つのがSASHELP.Vmemberです。

Vmemberは、カレントSASプロセスで割当てられているライブラリと、その中に存在するデータセットやカタログ等のメンバを取得してリストで見ることができるViewtableです。

Vmemberを開くとこんな感じ↓



例えば、MYLIBライブラリにある全てのデータセットのコンテンツを取るなら。
以下のようなコードを書けばよいでしょう。


data _null_;
  set SASHELP.vmember;
  * MYLIBライブラリのDATAセットを抽出 ;
  where libname="MYLIB" and memtype="DATA";
  * DATAセット名をマクロ変数に格納 ;
  call symput("DSNAME"||compress(_N_), compress(memname));
  * DATAセットの総数をマクロ変数に格納 ;
  call symput("NUMBER", compress(_N_));
run;

%macro getContents();
  %do i=1 %to &NUMBER;
    proc contents data=MYLIB.&&DSNAME&i;
    run;
  %end;
%mend;
%getContents;


上記のコードは、vmemberから任意のライブラリにあるデータセット名を取得してマクロ変数化して使うような例ですが、SASHELPには他にも様々なviewtableが存在します。
以下がその一例です。

vtable  vmemberよりさらに詳しいデータセット情報が得られる(OBS数など)
vcolumn データセットに保持する変数情報が得られる
vmacro 現在定義されているマクロ変数情報が得られる(自動マクロ変数も)


以上、このように様々なviewtableの存在を知っておくと、色々な場面で動的な処理や、コードの簡略化に役立てることができるはずです。
知らなかった人は是非使ってみてください。

[google]

投稿者:@Miya_NI

0 件のコメント:

コメントを投稿

ネイチャーインサイト サイトリニューアル&NIBLOGの引っ越し

ご連絡が遅くなりましたが、 ネイチャーインサイトの際とがリニューアルしました。 https://www.n-insight.co.jp/ それに伴い、NIBLOGも引っ越しすることになりました。 https://www.n-insight.co.jp/niblog/ ...