今回はマクロ引数に「=」を用いる方法について解説していきたいと思います。(事前に読んでおきたい記事:【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」