带有 Do 循环的 SAS 嵌套宏

问题描述 投票:0回答:1

我有这个 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,&current_value.)

    



%end;

%修复;

%apply_where_condition(&values_list);

问题是,当我放置嵌套宏时, do 循环只执行一次迭代。但如果没有它,它就可以正常工作。嵌套宏仅对表执行一系列操作,最后一部分将数据插入到空表中。

我期望它迭代所有值,但它只迭代一次。

sas sas-macro
1个回答
0
投票

分享定义另一个宏的代码。

很可能 date_loop_initial 正在修改宏变量 I 的值。

另一个宏应该创建一个名为 I 的 LOCAL 宏,这样它就无法修改 apply_where_condition 中使用的 I 的值。

如果您无法修复 date_loop_initial,则更改 %DO 循环以使用不同的宏变量。

© www.soinside.com 2019 - 2024. All rights reserved.