我有一个宏,它通过一组给定的时间帧将数据插入表中。
它遍历一系列from-to日期(存储在数据集中)并使用proc sql insert语句运行宏。
在所有这些结束时检查数据时,我注意到最终的从 - 到期间的数据只在新数据集中。
这是我在数据步骤中调用宏时的代码。
data _null_;
set extract_insert_dates;
%insert_table_extract(put(extract_start, date11.),put(extract_end, date11.));
run;
我是否应该在数据步骤中调用其他内容来为此工作并为每个from-to时段插入数据(运行宏),而不仅仅是最后一个?
答案 0 :(得分:3)
假装您是宏编译器并将宏调用替换为它将生成的实际SAS代码。请记住,对于宏进程,put(extract_start, date11.)
和put(extract_end, date11.)
的参数值只是字符串。
我怀疑您需要使用call execute,因此数据集变量extract_start
和extract_end
的值可以传递给宏。
data _null_;
set extract_insert_dates;
call execute(cats('%nrstr(%insert_table_extract)(',put(extract_start, date11.),',',put(extract_end,date11.),')'));
run;