sas-boubi.blogspot.com Open in urlscan Pro
2404:6800:4012:1::2001  Public Scan

URL: https://sas-boubi.blogspot.com/
Submission: On July 11 via manual from JP — Scanned from JP

Form analysis 0 forms found in the DOM

Text Content

SAS忘備録

・本人の備忘録として。
・日本でもSASを活発化させたい。






2022年7月9日土曜日


【PROC FORMAT】CNTLIN=オプションの落とし穴









まず、前提知識として「PROC FORMAT入門9 : CNTLIN=オプション 」をご参照下さい。




そして、ここから本題。以下の例をご覧ください。




失敗例

①まず「データセット」から「フォーマット」を生成

data FMT;
input FMTNAME:$10. START:$10. LABEL:$20.;
cards;
$TEST_ OTHER その他
;



proc format cntlin=FMT;
run;




②実データに先ほどのフォーマットを当ててみる。

data TEST;
input X:$20.;
cards;
OTHER
.
;



data TEST2;
 set TEST;
 format X $TEST_.;
run;





あれ?!

フォーマット当てた結果、2行目の欠損値に「その他」が当てられてしまってる?!




解説

「CNTLIN=」に使用するフォーマット生成用のデータセットに注目






実は上の "OTHER" が、範囲指定としての「OTHER」として解釈されてしまってます(範囲指定?という方は「PROC FORMAT入門2 :
範囲の指定」を参照)

要は、以下のようにFORMATプロシジャで①みたいな定義をしたつもりが、②の定義をしてしまった、ということ。

proc format; /* ① */
 value $TEST_
 "OTHER" = "その他"
 ;
run;


proc format; /* ② */
 value $TEST_
 OTHER = "その他"
 ;
run;




ちなみに、"OTHER" 以外にも、FORMATプロシジャの予約語的なキーワードは気を付けた方が良いです(色々実験してみたところ、"LOW", "HIGH"
なども同様に範囲指定の意味として解釈されてしまいました。たぶん他にもあると思います)







解決策

今回の例では "OTHER" を範囲指定の意味ではないと明示してあげる必要があります。
なので、以下のようにHLOという変数を作ってNullに設定しておけば良いはず。
(HLO?という方は「PROC FORMAT入門9 : CNTLIN=オプション」を参照)


data FMT;
input FMTNAME:$10. START:$10. LABEL:$20. HLO:$1.;
cards;
$TEST_ OTHER その他 .
;


proc format cntlin=FMT;
run;




上でフォーマットを作り直したので、再度このフォーマットをあてたデータセットを見てみましょう。



はい!さっきまで2行目の欠損値が「その他」になっちゃってましたが、今度は問題なさそうです。




最後に

私が把握しているのは "OTHER", "LOW", "HIGH"
のみで、その他にFORMATプロシジャの予約語的なキーワードに引っかかるものがあるかもしれません。

今回の場合だと"OTHER"に対してHLOという変数を作ってNullに設定することで解決しましたが、その他の私が把握していないキーワードに対して、各自SASのリファレンスや「PROC
FORMAT入門9 : CNTLIN=オプション」などを参考にして、他の必要な変数を設定してあげる必要があります。








0 件のコメント:
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有




2022年6月29日水曜日


SASで花火を描く






暑中お見舞い申し上げます。




SASで花火描いてみました。三角関数をつかってるだけの単純なプログラムです。


/* 花火描画用データ */
data fireworks;
 rad = constant('pi')/180;
 call streaminit(777);
 do i = 1 to 5;
  xpos = rand("uniform",-30,30);
  ypos = rand("uniform",-30,30);
  do rmax = 0, 36;
  do r = 0 to rmax by 4;
  do a = 0 to 360 by 15;
    x=cos(a*rad)*r+xpos;
    y=sin(a*rad)*r+ypos;
    output;
  end;
  end;
  end;
 end;
run;


/* 花火描画 */
title;
ods graphics / height=20cm width=20cm;


options animation=start animduration=1.2 printerpath=gif;
ods noresults;
ods printer file="出力するGIFファイルのフルパスをここに指定、ファイル名は「fireworks.gif」とか適当に" ;




%macro m_fireworks(i=,color=);
 proc sgplot data=fireworks aspect=1 noautolegend;
  styleattrs wallcolor=midnightblue;
  scatter x=x y=y / markerattrs=(symbol=circlefilled color=&color size=0.1cm );
  xaxis min=-50 max=50 display=none;
  yaxis min=-50 max=50 display=none;
  inset "Summer Greetings to All."/ position=bottom textattrs=(color=lightblue
size=25cm family="Arial");
  by rmax;
  where i=&i;
 run;
%mend;
%m_fireworks(i=1,color=yellow);
%m_fireworks(i=2,color=skyblue);
%m_fireworks(i=3,color=lightgreen);
%m_fireworks(i=4,color=yellow);
%m_fireworks(i=5,color=lightpink);


ods printer close;
ods results;
options animation=stop;


ods graphics / reset=all;




0 件のコメント:
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: [▼ SAS遊び



2022年3月31日木曜日


「PUT "WARNING-"」みたいな書き方。









今回は、以下で紹介した記事のおまけ的内容。



 * ログに独自のエラーメッセージを表示する。
 * 「PUT」や「%PUT」でログに独自のエラーメッセージを表示するときの定石






最初に

上の記事のおさらい。

以下サンプルのように「NOTE」「WARNING」「ERROR」のいずれかのキーワードとコロン「:」をつけてPUTすると、ログ上に色つきの独自メッセージを表示できる。

data _null_;
  put "NOTE:    独自メッセージ1";
  put "WARNING: 独自メッセージ2";
  put "ERROR:   独自メッセージ3";
run;


ログ





本題 

上の例でコロン(:)ではなくハイフン(-)に変えると、、

data _null_;
  put "NOTE-    独自メッセージ1";
  put "WARNING- 独自メッセージ2";
  put "ERROR-   独自メッセージ3";
run;


ログ



「NOTE」「WARNING」「ERROR」のキーワード無しで色つきのメッセージを出力できます。




活用例

これは、以下のような使い方が出来ます。

data _null_;
  put "WARNING: 独自メッセージ1";
  put "WARNING- 独自メッセージ1の続き";
run;


ログ



WARNINGメッセージを改行しているように見せることが出来ます。




ただし、1つだけ残念ポイント。

%PUTで同様のテクニックを使おうとすると、、

%put WARNING: 独自メッセージ1;
%put WARNING- 独自メッセージ1の続き;


ログ

ログを見てみると、間にプログラムの文が挟まっていて、WARNINGメッセージが分割されて見えてしまうところ。残念よ。





0 件のコメント:
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: ステートメント: %PUT, ステートメント: PUT



2022年2月11日金曜日


「PUT 変数名=」という書き方






PUTステートメントの基本的なテクニックの紹介。




基本的なテクニック

data test;
  set sashelp.class;
  if age=13 then put height=;
run;


ログ
 height=56.5
 height=65.3
 height=62.5



「変数名=」という書き方で、例のように先頭に「変数名=」という書式のテキストを追加できます。







以下のように、ちょっと勿体ない書き方をしがち。






ちょっと勿体ない例


data test;
  set sashelp.class;
  if age=13 then put "height=" height;
run;


ログ
 height=56.5
 height=65.3
 height=62.5


勿体ない!





0 件のコメント:
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: ステートメント: PUT



2021年12月5日日曜日


「ODS OUTPUT」で変数属性が自動調整される件









「PROC SQL」と「ODS OUTPUT の PERSIST=RUN」のコンボ技 の記事内で




ODS OUTPUTで出力すると変数属性(変数名、length、formatなど)が自動調整される場合がある

と言ったんですが、じゃあ実際どう自動調整されるのか。




結論からいって、



 * 変数属性は自動調整されるけど、データの中身は無事のよう(リファレンスに詳しい挙動が書いてないので、環境やバージョンによって挙動が同じかは不明。。各自で挙動確認してみてください)
 * 私はこのコンボ技を単純な頻度集計で使う程度で支障ないですが、変数属性が自動調整されてしまうのがまずい状況下では、ご注意下さい。










「ODS OUTPUT 」で変数属性がどう自動調整されるのか見てみる。


--------------------------------------------------------------------------------

(実行日: 2021/12/03, 実行環境: SAS Ondemand for Academics [SAS 9,4M6])



テストデータ

/*  d1 */
data d1;
  length a b $10. c e 8.;
  label c = "test1";
  format c yymmdd10.;
  a="aaa"; b="bbb"; c=1; e=1;
run;


/*  d2 */
data d2;
  length a $20. b c d e 8.;
  label c = "test2" d="test3";
  format c d time5.;
  a="aaa"; b=1; c=1; d=1; e=1;
run;




「PROC SQL の SELECTステートメント」の結果を「ODS OUTPUT」を使ってデータセットに出力してみます。


例①「データセットd1」を使ってODS OUTPUTで出力

ods select none;
ods output SQL_Results=out1;
proc sql;
  select * from d1;
quit;
ods output close;
ods select all;


各データセットの変数属性
データセットd1
データセットout1 (ODS OUTPUTで出力したやつ)



例②「データセットd2」を使ってODS OUTPUTで出力
ods select none;

ods output SQL_Results=out2;
proc sql;
  select * from d2;
quit;
ods output close;
ods select all;


各データセットの変数属性
データセットd2


データセットout2 (ODS OUTPUTで出力したやつ)



例③「データセットd1とd2」を使って「ODS OUTPUT の PERSIST=」でプロシジャ内の結果を結合して出力

ods select none;

ods output SQL_Results(persist=run)=out3;
proc sql;
  select * from d1;
  select * from d2;
quit;
ods output close;
ods select all;


各データセットの変数属性

データセットout1 (例①で、d1を使ってODS OUTPUTで出力したやつ)

データセットout2 (例②で、d2を使ってODS OUTPUTで出力したやつ)

データセットout3 (例③で、「ODS OUTPUT の PERSIST=」で出力したやつ)








結果の考察


--------------------------------------------------------------------------------


 * formatを割り当てていない数値変数はなぜかbestフォーマットが割り当てられてた(これはどちらかというとSQLプロシジャ側のODS出力時の設定によるものと思われる。このようにODS出力時に勝手にformatが割り当てられる場合がある。割り当てられるformatはプロシジャによって様々)
   
    * 例①の変数Eなどを参照

 * 「ODS OUTPUT の PERSIST=」で出力結果を結合すると、
    * 同じ変数名(かつ文字変数)でlengthが違う場合 = 大きい方に合わせられた
       * 例③の変数Aなどを参照
   
    * 同じ変数名で型が違う場合 = 片方の変数がrenameされた。
       * 例③の変数Bなどを参照(結合後、変数Bと変数B2に分かれてる)
   
    * 同じ変数名でラベルが違う場合 = 最初のデータセットのラベルになった
       * 例③の変数Cなどを参照
   
    * 同じ変数名でフォーマットが違う場合 = formatが削除された
       * 例③の変数Cなどを参照
   
    * 片方のデータセットにしか変数がない場合 = 変数がkeepされた。あとformatを割り当てた変数はちゃんとformatが残った。
       * 例③の変数Dなどを参照



他にも私が把握しきれていないだけで「変数属性が自動調整」されるパターンはあると思います。




同じ変数名(かつ文字変数)のlengthが大きい方に合わせられたのと、同じ変数名で型が違う場合に勝手にrenameして両方保持してくれるのは、便利っていえば便利ですね。





0 件のコメント:
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: ODS OUTPUT



2021年11月15日月曜日


「PROC SQL」と「ODS OUTPUT の PERSIST=RUN」のコンボ技









まず今回のコンボ技を理解するには「ODS OUTPUTのPERSIST=RUN」の知識が必要なので、先に以下リンク記事をご覧ください。

「ODS OUTPUTで出力結果を結合する②PERSIST=RUN」

 

それでは本題。以下のプログラムをご覧ください。

ods select none;
ods output SQL_Results(persist=run)=out1;


proc sql;
 select count(*) as c1 from sashelp.class;
 select count(*) as c1 from sashelp.cars;
 select count(*) as c1 from sashelp.baseball;
quit;


ods output close;
ods select all;




一応、細かく説明しておくと、


 * PROC SQLは対話型プロシジャなので、1つのプロシジャで複数の集計をいっぺんに行ってます。
 * 「ODS
   OUTPUTのPERSIST=RUN」で対話型プロシジャ内のそれぞれの集計結果について、出力オブジェクトの名前が共通するものを縦結合しています。(今回の場合はすべての集計で、出力オブジェクトの名前が「SQL_Results」という名前で共通している)
 * 「_RUN_」という変数が勝手に作られました。RUNグループのIDと推測されます。SQLの場合は「RUNステートメント」は記述不要なので、実行グループ(セミコロン「;」で終わる文)のIDですね。
 * ちなみにPROC SQLで「NOPRINTオプション」を設定するとODS OUTPUTが使えない(データセットに出力されない)ので注意





ID振って縦結合してくれるのが便利。他の方法でも同じこと出来るけど、こっちのほうが文が短く済む場合があります。




ただし私自身、単純な集計でしか使ったことないので、各自利用する際は結果が希望通りのものになるか、ご確認下さい。

また、ODS OUTPUTで出力すると変数属性(変数名、length、formatなど)が自動調整される場合があるのでご留意ください。(以下リンク記事参照)

「ODS OUTPUT」で変数属性が自動調整される件








0 件のコメント:
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: ODS OUTPUT



2021年11月1日月曜日


ODS OUTPUTで出力結果を結合する②PERSIST=RUN










前回の続きで、今回はODS OUTPUTの「PERSIST=RUN」というオプションを紹介します。




まずは以下の例をご覧ください。

データセット「SASHELP.CLASS」と「SASHELP.BMT」の定義情報をデータセットOUT1に出力しています。特に問題なく出力できています。

ods output Variables = out1;


   proc datasets lib=sashelp;
      contents data=class;
      contents data=bmt;
   run;
   quit;


ods output close;


データセット OUT1








ここから本題。DATASETSプロシジャは対話型プロシジャです(対話型プロシジャについては以下参照)

https://sas-boubi.blogspot.com/2018/01/runquit.html




そして今度は、説明のため、以下の通りあえて対話型プロシジャを意識した書き方に変えて実行してみます。

😟失敗例


ods output Variables = out1;


   proc datasets lib=sashelp;


      /* RUNグループ1: データセットに出力される */
      contents data=class;
      run;


      /* RUNグループ2: データセットに出力されない */
      contents data=bmt;
      run;


   quit;


ods output close;


データセットOUT1


対話型プロシジャの結果のうち、最初のRUNグループの結果しかデータセットに出力されませんでした。








😄解決策1(グループ毎にODS OUTPUTを記述)

proc datasets lib=sashelp;


   /* RUNグループ1 */
   ods output Variables = out1;
   contents data=class;
   run;


   /* RUNグループ2 */
   ods output Variables = out2;
   contents data=bmt;
   run;


quit;
ods output close;


データセットOUT1



データセットOUT2


上の例では「RUNグループ」毎にODS OUTPUTを記述して、「RUNグループ」毎にデータセットを出力しています。プロシジャの中にODS
OUTPUTを記述しているので、ちょっと違和感を感じるかもしれませんが、ちゃんと動きます。







もうひとつ解決策。これが紹介したかったんですが「PERSIST=RUN」というオプション。

以下のように、対話型プロシジャ内で、出力オブジェクトの名前が一緒であれば(今回の場合は「Variables」)、結合してデータセットに出力することが出来ます。




😄解決策2(PERSIST=RUN)

ods output Variables(persist=run) = out1;


   proc datasets lib=sashelp;


      /* RUNグループ1 */
      contents data=class;
      run;


      /* RUNグループ2 */
      contents data=bmt;
      run;


   quit;


ods output close;


データセットOUT1




注意点:
ODS OUTPUT内に対話型プロシジャを複数書いても、出力できるのは最初のプロシジャのみ。









ちなみに、SQLプロシジャも対話型プロシジャですが「RUNグループ」ではなく、以下のように実行グループ(セミコロン「;」で終わる文)毎に実行されます。そこが違うだけでSQLプロシジャについても今回紹介した2つの解決策を適用できます。




ods output SQL_Results(persist=run) = out1;


   proc sql;


      /* 実行グループ1 */
      select count(*) as c1 from sashelp.class;


      /* 実行グループ2 */
      select count(*) as c1 from sashelp.bmt;


   quit;


ods output close;


データセットOUT1


PERSIST=オプションはSQLプロシジャと相性が良いので、今度その辺りも紹介したいと思います。








0 件のコメント:
メールで送信BlogThis!Twitter で共有するFacebook で共有するPinterest に共有
ラベル: ODS OUTPUT

前の投稿 ホーム

登録: 投稿 (Atom)



自己紹介

a.matsu 詳細プロフィールを表示



ページ

 * ホーム
 * 免責事項




SAS関連リンク

 * SAS Japan Discussion topics
   3 日前
   
 * データステップ100万回
   SAS新手一生
   2 週間前
   
 * Statistics, Programming, and Cross Cultural Communication
   2 年前
   
 * data Memorandum ; set Memory ; run ;
   3 年前
   




ブログ アーカイブ

 * ▼  2022 (4)
   * 7月 (1)
   * 6月 (1)
   * 3月 (1)
   * 2月 (1)

 * ►  2021 (7)
   * 12月 (1)
   * 11月 (2)
   * 10月 (1)
   * 7月 (1)
   * 5月 (1)
   * 4月 (1)

 * ►  2020 (9)
   * 5月 (1)
   * 3月 (2)
   * 2月 (3)
   * 1月 (3)

 * ►  2019 (69)
   * 12月 (2)
   * 11月 (5)
   * 10月 (5)
   * 9月 (6)
   * 8月 (4)
   * 7月 (6)
   * 6月 (9)
   * 5月 (10)
   * 4月 (5)
   * 3月 (6)
   * 2月 (6)
   * 1月 (5)

 * ►  2018 (60)
   * 12月 (4)
   * 11月 (6)
   * 10月 (4)
   * 9月 (5)
   * 8月 (7)
   * 7月 (5)
   * 6月 (4)
   * 5月 (4)
   * 4月 (4)
   * 3月 (8)
   * 2月 (4)
   * 1月 (5)

 * ►  2017 (86)
   * 12月 (3)
   * 11月 (8)
   * 10月 (10)
   * 9月 (9)
   * 8月 (10)
   * 7月 (8)
   * 6月 (6)
   * 5月 (7)
   * 4月 (6)
   * 3月 (5)
   * 2月 (7)
   * 1月 (7)

 * ►  2016 (114)
   * 12月 (4)
   * 11月 (6)
   * 10月 (8)
   * 9月 (8)
   * 8月 (12)
   * 7月 (10)
   * 6月 (6)
   * 5月 (12)
   * 4月 (15)
   * 3月 (16)
   * 2月 (9)
   * 1月 (8)

 * ►  2015 (110)
   * 12月 (5)
   * 11月 (8)
   * 10月 (9)
   * 9月 (8)
   * 8月 (14)
   * 7月 (20)
   * 6月 (10)
   * 5月 (11)
   * 4月 (8)
   * 3月 (2)
   * 2月 (6)
   * 1月 (9)

 * ►  2014 (110)
   * 12月 (12)
   * 11月 (11)
   * 10月 (11)
   * 9月 (8)
   * 8月 (9)
   * 7月 (8)
   * 6月 (10)
   * 5月 (7)
   * 4月 (11)
   * 3月 (12)
   * 2月 (6)
   * 1月 (5)

 * ►  2013 (16)
   * 12月 (10)
   * 11月 (6)




カテゴリ

 * _ALL_ (5)
 * _CHARACTER_ (2)
 * _INFILE_ (1)
 * _N_ (2)
 * _NULL_ (3)
 * _NUMERIC_ (2)
 * _TEMPORARY_ (1)
 * - (2)
 * -- (1)
 * -CHARACTER- (1)
 * -NUMERIC- (1)
 * (*ESC*) (1)
 * [▼ 1行プログラミング (6)
 * [▼ DS2プロシジャ入門 (9)
 * [▼ EXCEL (4)
 * [▼ FORMATプロシジャ入門 (9)
 * [▼ GTL入門 (9)
 * [▼ My Favorite SAS Functions (10)
 * [▼ ODSTABLEプロシジャ入門 (4)
 * [▼ REPORTプロシジャ入門 (10)
 * [▼ RWI入門 (8)
 * [▼ SAS QUIZ (1)
 * [▼ SAS入門 (1)
 * [▼ SAS認定試験 (2)
 * [▼ SAS遊び (18)
 * [▼ SQLプロシジャ入門 (15)
 * [▼ グラフ (21)
 * [▼ サイト紹介 (1)
 * [▼ ゼロパディング (1)
 * [▼ タイムゾーン (1)
 * [▼ テキストファイル入出力 (6)
 * [▼ マクロ言語入門 (12)
 * [▼ 安全性解析 (1)
 * [▼ 欠損値のチェック (1)
 * [▼ 効率を意識したプログラム (3)
 * [▼ 重複データの削除・抽出 (2)
 * [▼ 書籍 (1)
 * [▼ 小ネタ (5)
 * [▼ 全角半角変換 (1)
 * [▼ 日付・時間操作 (12)
 * [▼ 年齢計算 (1)
 * [▼ 変数名の取得 (2)
 * [▼ 連番をふる (3)
 * @@ (1)
 * ATTRIB (1)
 * CALCULATED (1)
 * CALL CATS (1)
 * CALL CATX (1)
 * CALL EXECUTE (2)
 * CALL INV (1)
 * CALL MISSING (4)
 * CALL MULT (1)
 * CALL SET (1)
 * CALL SLEEP (1)
 * CALL SORT (1)
 * CALL SYMPUT (3)
 * CALL SYMPUTX (7)
 * CALL SYSTEM (1)
 * CALL VNEXT (2)
 * CATS (1)
 * CDISC (3)
 * CNTLOUT= (1)
 * COMPLETETYPES (2)
 * DATAステップビュー (1)
 * DDE (1)
 * DICTIONARYテーブル (2)
 * DUPOUT= (1)
 * END= (3)
 * ESCAPE (1)
 * FIRST.by (5)
 * FIRSTOBS= (2)
 * FMTLIB (1)
 * FORMAT (1)
 * GTL (15)
 * Hashオブジェクト (5)
 * IDGROUP (2)
 * IN= (2)
 * LABEL (1)
 * LAST.by (2)
 * LIST (1)
 * LISTVAR (1)
 * MISSING (1)
 * NLEVELS (1)
 * NOBS= (5)
 * NODUP (1)
 * NODUPKEY (2)
 * NODUPRECS (1)
 * NOSYM (1)
 * NOUNIQUEKEY (2)
 * NOVALUES (1)
 * NOWARN (1)
 * OBS= (2)
 * ODS DOCUMENT (4)
 * ODS ESCAPECHAR (1)
 * ODS EXCEL (18)
 * ODS GRAPHICS (5)
 * ODS HTML (3)
 * ODS LAYOUT GRIDDED (3)
 * ODS LISTING (1)
 * ODS OUTPUT (7)
 * ODS PDF (3)
 * ODS POWERPOINT (2)
 * ODS PRINTER (2)
 * ODS RESULTS (1)
 * ODS RTF (5)
 * ODS SELECT (2)
 * ODS TAGSETS.RTF (1)
 * ODS TEXT (1)
 * ODS TRACE (2)
 * ODSOUT (13)
 * ORDER= (3)
 * POINT= (1)
 * PRELOADFMT (2)
 * RWI (14)
 * SAS OnDemand for Academic (1)
 * SAS Studio (3)
 * SAS University Edition (1)
 * SASHELP (2)
 * SASユーザー総会 (11)
 * SHORT (1)
 * SPDE (1)
 * SQL: ALTER TABLE (1)
 * SQL: CREATE TABLE (3)
 * SQL: CROSS JOIN (1)
 * SQL: DELETE (2)
 * SQL: DESCRIBE TABLE (1)
 * SQL: DISTINCT (2)
 * SQL: FEEDBACK (2)
 * SQL: FULL JOIN (1)
 * SQL: GROUP BY (1)
 * SQL: HAVING (1)
 * SQL: INNER JOIN (1)
 * SQL: INSERT (1)
 * SQL: INTO (4)
 * SQL: LEFT JOIN (1)
 * SQL: NATURAL JOIN (2)
 * SQL: ORDER BY (1)
 * SQL: RIGHT JOIN (1)
 * SQL: SELECT (1)
 * SQL: UNION (2)
 * SQL: UPDATE (1)
 * SQL: USING (1)
 * SQL: WHERE (2)
 * SQLビュー (3)
 * STACKODS (1)
 * TRUE/FALSE (7)
 * UNIQUEOUT= (1)
 * WARN= (1)
 * XPT (1)
 * アウトプット (1)
 * インフォーマット: E8601DA (1)
 * インフォーマット: E8601DT (2)
 * インフォーマット: E8601TM (1)
 * インフォーマット: JDATEYMD (1)
 * インフォーマット: JNENGO (1)
 * オプション: ANIMATION (1)
 * オプション: APPEND (1)
 * オプション: BOTTOMMARGIN (1)
 * オプション: BYLINE (1)
 * オプション: FMTERR (1)
 * オプション: FULLSTIMER (1)
 * オプション: INDEX (1)
 * オプション: INSERT (1)
 * オプション: LEFTMARGIN (1)
 * オプション: MERGENOBY (1)
 * オプション: MPRINT (1)
 * オプション: MPRINTNEST (1)
 * オプション: MSTORED (1)
 * オプション: NOBYLINE (1)
 * オプション: NODATE (1)
 * オプション: NOFMTERR (1)
 * オプション: ORIENTATION (2)
 * オプション: PAPERSIZE (1)
 * オプション: PRINTERPATH (1)
 * オプション: QUOTELENMAX (1)
 * オプション: RIGHTMARGIN (1)
 * オプション: SASAUTOS (2)
 * オプション: SASMSTORE (1)
 * オプション: SVGCONTROLBUTTONS (1)
 * オプション: SVGMAGNIFYBUTTON (1)
 * オプション: SYMBOLGEN (1)
 * オプション: TOPMARGIN (1)
 * オプション: VARINITCHK (1)
 * コマンド: SHOW (1)
 * コマンド: VT (1)
 * コマンド: WHERE (1)
 * コロン (2)
 * ステートメント: FOOTNOTE (2)
 * ステートメント: %DO (1)
 * ステートメント: %GLOBAL (2)
 * ステートメント: %IF (6)
 * ステートメント: %INCLUDE (1)
 * ステートメント: %LOCAL (2)
 * ステートメント: %PUT (4)
 * ステートメント: %RETURN (1)
 * ステートメント: %SYSMACDELETE (1)
 * ステートメント: ARRAY (9)
 * ステートメント: ATTRIB (3)
 * ステートメント: BY (1)
 * ステートメント: CARDS (2)
 * ステートメント: CARDS4 (1)
 * ステートメント: CLASS (1)
 * ステートメント: DM (1)
 * ステートメント: DO (5)
 * ステートメント: DO UNTIL (1)
 * ステートメント: DO WHILE (1)
 * ステートメント: DROP (3)
 * ステートメント: ERROR (1)
 * ステートメント: FILENAME (7)
 * ステートメント: FORMAT (2)
 * ステートメント: IF (7)
 * ステートメント: INFILE (4)
 * ステートメント: INFORMAT (1)
 * ステートメント: INPUT (4)
 * ステートメント: KEEP (4)
 * ステートメント: LABEL (2)
 * ステートメント: LIBNAME (7)
 * ステートメント: MERGE (5)
 * ステートメント: MODIFY (1)
 * ステートメント: OUTPUT (5)
 * ステートメント: PUT (9)
 * ステートメント: PUTLOG (1)
 * ステートメント: QUIT (2)
 * ステートメント: REMOVE (1)
 * ステートメント: RENAME (2)
 * ステートメント: RETAIN (4)
 * ステートメント: RUN (1)
 * ステートメント: SELECT (2)
 * ステートメント: SET (6)
 * ステートメント: SKIP (1)
 * ステートメント: STOP (1)
 * ステートメント: SUM (3)
 * ステートメント: TITLE (4)
 * ステートメント: UPDATE (3)
 * ステートメント: WHERE (10)
 * ステートメント: WINDOW (1)
 * ステートメント: コメント (2)
 * ステートメント: サブセット化IF (2)
 * データセットオプション (3)
 * フォーマット: REVERS (1)
 * フォーマット: TIME (1)
 * フォーマット: TOD (1)
 * フォーマット: UPCASE (2)
 * フォーマット: YYMMDDx (1)
 * ブラックホールマクロ問題 (1)
 * プログラムデータベクトル (2)
 * プロシジャ: CATALOG (3)
 * プロシジャ: CHART (1)
 * プロシジャ: COMPARE (3)
 * プロシジャ: CONTENTS (4)
 * プロシジャ: COPY (3)
 * プロシジャ: DATASETS (3)
 * プロシジャ: DELETE (2)
 * プロシジャ: DS2 (15)
 * プロシジャ: EXPLODE (2)
 * プロシジャ: EXPORT (1)
 * プロシジャ: FCMP (2)
 * プロシジャ: FedSQL (4)
 * プロシジャ: FORMAT (15)
 * プロシジャ: FREQ (6)
 * プロシジャ: IMPORT (1)
 * プロシジャ: LIFETEST (1)
 * プロシジャ: LUA (3)
 * プロシジャ: MEANS (8)
 * プロシジャ: ODSTABLE (5)
 * プロシジャ: ODSTEXT (4)
 * プロシジャ: OPTIONS (1)
 * プロシジャ: PLOT (1)
 * プロシジャ: PRINT (3)
 * プロシジャ: PRODUCT_STATUS (1)
 * プロシジャ: RANK (1)
 * プロシジャ: REGISTRY (1)
 * プロシジャ: REPORT (23)
 * プロシジャ: SGPLOT (9)
 * プロシジャ: SGRENDER (5)
 * プロシジャ: SORT (7)
 * プロシジャ: SQL (40)
 * プロシジャ: STDIZE (1)
 * プロシジャ: STREAM (1)
 * プロシジャ: SUMMARY (6)
 * プロシジャ: TABULATE (2)
 * プロシジャ: TEMPLATE (6)
 * プロシジャ: TRANSPOSE (6)
 * プロシジャ: UNIVARIATE (2)
 * プロシジャ:DOCUMENT (4)
 * マクロ (20)
 * マクロ: &SQLOBS (2)
 * マクロ: &SYSNOBS (1)
 * マクロ: &SYSVER (2)
 * マクロ: &SYSVLONG (1)
 * マクロ: &SYSVLONG4 (1)
 * マクロ: %DATATYP (1)
 * マクロ: %EVAL (1)
 * マクロ: %LET (2)
 * マクロ: %MACRO (1)
 * マクロ: %MEND (1)
 * マクロ: %SYSEVALF (2)
 * マクロ: キーワードパラメータ (1)
 * マクロ: 定位置パラメータ (1)
 * マクロ関数: %NRBQUOTE (2)
 * マクロ関数: %NRSTR (1)
 * マクロ関数: %Q (1)
 * マクロ関数: %SYSFUNC (4)
 * マクロ関数:%BQUOTE (1)
 * マクロ関数:%STR (1)
 * ログ (5)
 * 演算子: ^ (2)
 * 演算子: + (1)
 * 演算子: =: (1)
 * 演算子: IN (3)
 * 演算子: NOT (1)
 * 演算子: OF (1)
 * 関数 (4)
 * 関数: ATTRN (2)
 * 関数: BYTE (1)
 * 関数: CATQ (1)
 * 関数: CATS (3)
 * 関数: CATT (1)
 * 関数: CATX (3)
 * 関数: CHOOSEC (3)
 * 関数: CHOOSEN (2)
 * 関数: CMISS (2)
 * 関数: COALESCE (4)
 * 関数: COALESCEC (3)
 * 関数: COLLATE (1)
 * 関数: COMPARE (1)
 * 関数: COMPBL (1)
 * 関数: COMPRESS (3)
 * 関数: CONSTANT (1)
 * 関数: COS (1)
 * 関数: COUNT (1)
 * 関数: COUNTC (1)
 * 関数: DATEPART (2)
 * 関数: DAY (1)
 * 関数: DHMS (2)
 * 関数: DIM (1)
 * 関数: DLGCDIR (2)
 * 関数: DNUM (1)
 * 関数: DOPEN (1)
 * 関数: DOSUBL (2)
 * 関数: DREAD (1)
 * 関数: EXIST (1)
 * 関数: FCLOSE (1)
 * 関数: FETCHOBS (1)
 * 関数: FILEEXIST (2)
 * 関数: FILENAME (2)
 * 関数: FIND (1)
 * 関数: FINFO (1)
 * 関数: FIRST (1)
 * 関数: FOPEN (1)
 * 関数: FOPTNAME (1)
 * 関数: FOPTNUM (1)
 * 関数: GETOPTION (2)
 * 関数: HMS (1)
 * 関数: HOUR (1)
 * 関数: IFC (4)
 * 関数: IFN (4)
 * 関数: INDEX (2)
 * 関数: INDEXC (1)
 * 関数: INDEXW (1)
 * 関数: INPUT (2)
 * 関数: INTNX (1)
 * 関数: KCHARLIST (1)
 * 関数: KCOMPRESS (2)
 * 関数: KCOUNT (1)
 * 関数: KCOUNTC (1)
 * 関数: KCOUNTX (1)
 * 関数: KINDEX (1)
 * 関数: KINDEXC (1)
 * 関数: KLEFT (1)
 * 関数: KPROPCASE (1)
 * 関数: KSCAN (2)
 * 関数: KSTRIP (1)
 * 関数: KSUBSTRN (1)
 * 関数: KTRIM (1)
 * 関数: KVERIFY (2)
 * 関数: LAG (2)
 * 関数: LEFT (1)
 * 関数: LENGTH (1)
 * 関数: LENGTHN (1)
 * 関数: LIBNAME (2)
 * 関数: LOWCASE (1)
 * 関数: MDY (1)
 * 関数: MIN; 関数: MAX (1)
 * 関数: MINUTE (1)
 * 関数: MISSING (1)
 * 関数: MONOTONIC (2)
 * 関数: MONTH (1)
 * 関数: NLDATE (1)
 * 関数: NLDATM (1)
 * 関数: NLTIME (1)
 * 関数: NVALID (2)
 * 関数: OPEN (2)
 * 関数: PATHNAME (1)
 * 関数: PRXCHANGE (2)
 * 関数: PUT (5)
 * 関数: PUTC (1)
 * 関数: PUTN (1)
 * 関数: READ_ARRAY (1)
 * 関数: REPEAT (1)
 * 関数: REVERSE (1)
 * 関数: ROUND (1)
 * 関数: SCAN (2)
 * 関数: SECOND (1)
 * 関数: SIN (1)
 * 関数: SLEEP (2)
 * 関数: SQLEXEC (1)
 * 関数: STRIP (1)
 * 関数: SUBSTR (4)
 * 関数: SUBSTRN (2)
 * 関数: SUM (1)
 * 関数: SYSMSG (2)
 * 関数: TIMEPART (1)
 * 関数: TRANSTRN (1)
 * 関数: TRANWRD (1)
 * 関数: TRIM (1)
 * 関数: TZONES2U (1)
 * 関数: TZONEU2S (1)
 * 関数: UPCASE (2)
 * 関数: VARNAME (1)
 * 関数: VERIFY (1)
 * 関数: VLABEL (1)
 * 関数: VNAME (2)
 * 関数: VVALUE (2)
 * 関数: VVALUEX (1)
 * 関数: WHICHN (6)
 * 関数: WRITE_ARRAY (1)
 * 関数: YEAR (1)
 * 再マージ (1)
 * 算術演算子 (1)
 * 正規表現 (2)
 * 比較演算子 (3)
 * 文字欠損値 (1)
 * 文字値 (1)





「Awesome Inc.」テーマ. テーマ画像の作成者: Goldmund さん. Powered by Blogger.