%MACRO %MEND SAS

【SAS】%MACROはマクロを定義することができる。その4 引数違いの同名マクロは区別できない。【%MEND】

投稿日:

今回は引数違いの同名マクロについて解説していきたいと思います。(事前に読んでおきたい記事:【SAS】%MACROはマクロを定義することができる。その3 マクロには引数を設定できる。【%MEND】 | ビジネスイッチ (how-to-business.com)


/* act1_1 */
%macro act1;

  data data1;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;



%macro act1(no);

  data data&no.;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;



%macro act1(no1,no2);

  data data&no1.&no2.;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;


%act1;

  • %macro~%mendでマクロを定義することができる。
  • %act1でマクロを呼び出している。
  • 呼び出されるマクロは「act1(no1,no2)」
  • 引数が無いため、データセット名は「DATA」

/* act1(no)_1 */
%macro act1;

  data data1;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;



%macro act1(no);

  data data&no.;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;



%macro act1(no1,no2);

  data data&no1.&no2.;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;


%act1(2);

  • %macro~%mendでマクロを定義することができる。
  • %act1(2)でマクロを呼び出している。
  • 呼び出されるマクロは「act1(no1,no2)」
  • 引数は2のため、no1に”2″が入り、データセット名は「DATA2」

/* act1(no1,no2)_1 */
%macro act1;

  data data1;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;



%macro act1(no);

  data data&no.;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;



%macro act1(no1,no2);

  data data&no1.&no2.;
    id1="1111"; id2="1111"; id3="1111";
      output;
    id1="2222"; id2="2222"; id3="2222";
      output;
    id1="3333"; id2="3333"; id3="3333";
      output;
  run;

%mend;


%act1(3,4);



  • %macro~%mendでマクロを定義することができる。
  • %act1(3,4)でマクロを呼び出している。
  • 呼び出されるマクロは「act1(no1,no2)」
  • 引数は3,4のため、データセット名は「DATA34」

引数の数だけが異なり、同名マクロだった場合、一番最後に定義したマクロが実行された。

(引数の数による区別はできない。)

(参考:【SAS】%MACROはマクロを定義することができる。その2 同名マクロによる再定義【%MEND】 | ビジネスイッチ (how-to-business.com)

-%MACRO, %MEND, SAS

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【SAS】DROPはデータセットから変数を削除する

今回はDROPについて解説します。 (対比:KEEP 【SAS】KEEPはカラムの選択に使える。 | ビジネスイッチ (how-to-business.com)) /* drop_1 */ data …

【SAS】”nは本来使用できない文字を使用可能にする。その2 SQLのSELECT文

今回も”nについて解説します。 (前回:【SAS】”nは本来使用できない文字を使用可能にする。 | ビジネスイッチ (how-to-business.com)) (参考:Solved: what th …

【SAS】YYYY-MM表記にする方法【SUBSTR】【||】

今回はYYYYMMDD表記の年月日をYYYY-MM表記にしたいと思います。 結論:SUBSTRと||を使います。 (SUBSTR:【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。 | …

【SAS】LABELオプションは変数名ではなく、ラベル名を出力する。【PRINTプロシージャ】【SAS Base Programming対策2】

今回はLABELオプションについて解説します。 SAS Base Programmingの四択問題でも出されそうな感じです。 /* label */ data data1; attrib Id1 le …

【SAS】SORTプロシージャはBYで指定した変数で並べ替える その1 昇順

今回はSORTプロシージャについて解説します。 /*sort1*/ data data1; id1=”1111″; id2=”1111″; output; id1=”1111″; id2=”2222″ …