%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】SASで良く使うテクニック。その8 「=」~修正前後のプログラムを比較したい時~【Excel】【VBA】

今回はSASで良く使うテクニックということで、修正前後のプログラムを比較したい時は、「=」が役に立つ理由を解説していきます。(このテクニックはコーディングなら、SASに限らず、VBAでも他のどの言語で …

【SAS】オブザベーションを跨いだ計算【RETAIN】【SAS Base Programming対策4】

/* retain */ data data1; Id1=1111; Id2=1111; Id3=1111; output; Id1=2222; Id2=2222; Id3=2222; output; …

【SAS】FORMATプロシージャはフォーマットルールを定義し、値を書き換える

今回はFORMATプロシージャについて解説します。 /* format */ data data1; 番号=”111111″; test = 10; output; 番号=”222222″; test …

【SAS】PUTC関数は文字列に対して出力形式を指定して変換する。

今回はPUTC関数について解説します。 /* putc_1 */ proc format; value point “aaaa”=’Low’ “bbbb”=’High’; run; data data …

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

今回はDATASETSプロシージャを使ってデータセットを削除する方法の続きを解説していきます。(前回の参考:【SAS】DATASETSプロシージャを使ってデータセットを削除する。【DELETE】 | …