%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】WORKライブラリの性質について解説

今回はWORKライブラリについて解説します。 libnameを使わなくてもデフォルトで存在するライブラリです。 そのため、libnameを使わずにworkライブラリを使用することができます。 /* l …

【SAS】PUTLOGステートメントは文字列をログに出力する。

今回はPUTLOGについて解説します。 /* putlog_1 */ data _null_; putlog ‘2022/03/26’; run; putlogにより、ログに文字列を出力できる。%pu …

【SAS】SASで良く使うテクニック。その3 「Ctrl+D」~データセットのオブザベーション数が多いとき~【Excel】

今回はSASで良く使うテクニックということで、データセットのオブザベーション数(行数)が多いときは「Ctrl+D」が役に立つ理由を解説していきます。 (参考:【SAS】SASで良く使うテクニック。その …

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

今回はDROPについて解説します。 /* drop_1 */ data data1; Id1=1111; Id2=1111; Id3=1111; Id4=1111; output; Id1=2222; …

【SAS】DATASETSプロシージャを使ってデータセットを削除する。【DELETE】

今回はDATASETSプロシージャを使ってデータセットを削除する方法について解説します。  /* delete; */ data data1; id1=”1111″; id2=”1111″; …