我有这个 SAS 宏:
%让values_list =JUBILADOS RIONEGRO MERCADOABIERTO;
%宏 apply_where_condition(values_list);
%let num_values = %sysfunc(countw(&values_list));
%do i = 1 %to &num_values;
%let current_value = %qsysfunc(scan(&values_list, &i));
%date_loop_inicial(01JAN2022,01JAN2023,¤t_value.)
%end;
%修复;
%apply_where_condition(&values_list);
问题是,当我放置嵌套宏时, do 循环只执行一次迭代。但如果没有它,它就可以正常工作。嵌套宏仅对表执行一系列操作,最后一部分将数据插入到空表中。
我期望它迭代所有值,但它只迭代一次。
分享定义另一个宏的代码。
很可能 date_loop_initial 正在修改宏变量 I 的值。
另一个宏应该创建一个名为 I 的 LOCAL 宏,这样它就无法修改 apply_where_condition 中使用的 I 的值。
如果您无法修复 date_loop_initial,则更改 %DO 循环以使用不同的宏变量。