今回はマクロ引数に「=」を用いる方法について解説していきたいと思います。(事前に読んでおきたい記事:【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);
![](https://how-to-business.com/wp-content/uploads/2022/10/macro-act1no-act1no1_1.png)
- %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);
![](https://how-to-business.com/wp-content/uploads/2022/10/macro-act1no1-act1no1_1.png)
- %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);
![](https://how-to-business.com/wp-content/uploads/2022/10/2699e22eea238f3f85dcef947aa8c148.png)
- %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);
![](https://how-to-business.com/wp-content/uploads/2022/10/e3a6f9a289101c770202fe41e31320db.png)
- %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);
![](https://how-to-business.com/wp-content/uploads/2022/10/b493506077d6b11c0cc82cfed753e563.png)
- %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);
![](https://how-to-business.com/wp-content/uploads/2022/10/3a54244cda8eef7c2d998707bafd2063.png)
![](https://how-to-business.com/wp-content/uploads/2022/10/73dfd2aa40dd612f1e98ca937ced9fcf.png)
- %macro~%mendでマクロを定義することができる。
- %act1(no=1);で「no」に1を渡している。
- %macro act1(no=,no1=);で「no」「no1」の引数を受け取っている。
- 「no=1」によりデータセット名①は「DATA1」
- 「no1=null」によりデータセット名②は「DATA」