%MACRO %MEND = SAS

【SAS】%MACROはマクロを定義することができる。その5 =を使うと数を渡す引数,数を受け取る引数を指定できる。【%MEND】

投稿日:

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


/* %macro act1(no=)  %act1(no=1)*/
%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;



%act1(no=1);

  • %macro~%mendでマクロを定義することができる。
  • %act1(no=1);で「no」に1を渡している。
  • %macro act1(no=);で「no」の引数を受け取っている。
  • データセット名は「DATA1」

/* %macro act1(no1=)  %act1(no=1)*/
%macro act1(no1=);

  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;



%act1(no=1);

  • %macro~%mendでマクロを定義することができる。
  • %act1(no=1);で「no」に1を渡している。
  • %macro act1(no1=);で「no1」の引数を受け取っている。
  • 数を渡すべき「no」が無いため、エラー

/* %macro act1(no=) %act1(1) */
%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;



%act1(1);

  • %macro~%mendでマクロを定義することができる。
  • %act1(1);で格納先を指定せずに1を渡している。
  • %macro act1(no=);で「no」の引数を受け取っている。
  • 「no」が1を受け取れていないため、エラー

/* %macro act1(no) %act1(no=1) */
%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;



%act1(no=1);

  • %macro~%mendでマクロを定義することができる。
  • %act1(no=1);で「no」に1を渡している。
  • %macro act1(no);で「no」の引数を受け取っている。
  • データセット名は「DATA1」

/* %macro act1(no1) %act1(no=1) */
%macro act1(no1);

  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;



%act1(no=1);

  • %macro~%mendでマクロを定義することができる。
  • %act1(no=1);で「no」に1を渡している。
  • %macro act1(no1);で「no1」の引数を受け取とうとしている。
  • 数を渡すべき「no」が無いため、エラー

/* %macro act1(no=,no1=) %act1(no=1) */
%macro act1(no=,no1=);

  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;

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


%mend;



%act1(no=1);

  • %macro~%mendでマクロを定義することができる。
  • %act1(no=1);で「no」に1を渡している。
  • %macro act1(no=,no1=);で「no」「no1」の引数を受け取っている。
  • 「no=1」によりデータセット名①は「DATA1」
  • 「no1=null」によりデータセット名②は「DATA」

-%MACRO, %MEND, =, SAS

執筆者:


comment

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

関連記事

【SAS】MEANSも集計に便利(デフォルトで結果を出力)【NOPRINT】

今回はMEANSについて解説します。 似た文法でSUMMARYプロシージャがあります。 【SAS】SUMMARYは集計に便利 今回のMEANSプロシージャも集計を行うのですが、こちらはデフォルトで「結 …

【SAS】INTCK関数を使って年齢計算をする。【PUT】【SUBSTR】【IF】

今回はINTCK関数を使って、年齢計算を行う方法について解説していきたいと思います。 併わせて読みたい記事 (INTCK:【SAS】INTCK関数は指定された区間に指定された単位を何回跨ぐか数える。 …

【SAS】SQLにおける複数テーブルの結合 その2【INNER JOIN】

今回も複数テーブルの結合について解説します。 前回の記事、【SAS】SQLにおける複数テーブルの結合 その1【UNION ALL】 | ビジネスイッチ (how-to-business.com)の続き …

【SAS】ODS PDFは結果内容をPDFファイルとして出力する

今回はPDFについて解説します。 /* pdf */ data data1; Id1=1111; Char1=”AAAA”; output; Id1=2222; Char1=”BBBB”; outpu …

【SAS】「引用符で囲まれた文字列の後の識別子の意味は、将来のSASリリースで変わる可能性があります。」の対処法【NOTE】

今回は、 「引用符で囲まれた文字列の後の識別子の意味は、将来のSASリリースで変わる可能性があります。」 とログメッセージが出た時の対処法について解説します。 /* メッセージ_1 */ data d …