%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】SAS日時値をyyyymmddhhmmss形式にする。【PUT】【DATETIME】【DATEPART】【TOD】

今回はdatetime関数を使って、SAS日時値を取得した後、yyyymmddhhmmss形式に加工する方法を解説していきます。 (参考PUT:【SAS】PUTはSAS日付値をフォーマットを変換して表 …

【SAS】データセットのオブザベーション数で処理を分岐させる方法【IF】【NOBS】

今回は、データセットのオブザベーション数により、処理を分岐させる方法について解説していきたいと思います。 (参考:【SAS】データセットの有無で処理を分岐させる方法【%IF】【EXIST】 | ビジネ …

【SAS】ATTRIBの使い方を解説

今回はATTRIBの使い方を解説していきます。 (参考:【SAS】ATTRIBとRENAMEを同時に使うときの注意点 | ビジネスイッチ (how-to-business.com)) /* 長さ */ …

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

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

【SAS】PATHNAME関数はライブラリのディレクトリパスを返す

今回はPATHNAME関数について解説します。 data data1; Id1 = pathname(“work”); run; pathnameによりライブラリworkのディレクトリパスを代入できる …