情况1
218 %let Mv=shoes;
219 %macro PRODUCT(Mv=bicycles);
220 %let Mv=clothes;
221 %mend;
222 %PRODUCT(Mv=tents)
223 %put Mv is &Mv;
Mv is shoes
定义了全局宏变量mv和本地宏变量mv(通过注册列表), 在宏程序外只能引用全局宏变量.
情况2
224 %let Mv=shoes;
225 %macro PRODUCT;
226 %let Mv=clothes;
227 %mend;
228 %PRODUCT;
229 %put Mv is &Mv;
Mv is clothes
定义了全局宏mv, 同时在product中未声明修改mv是全局的还是本地的, 因此一层一层往外找, 找到全局的mv并修改了它.
情况3
230 %let Mv=shoes;
231 %macro PRODUCT;
232 %local mv;
233 %let Mv=clothes;
234 %mend;
235 %PRODUCT;
236 %put Mv is &Mv;
Mv is shoes
在注册列表定义宏变量就相当与在宏程序中写%local语句.