sas为数据步骤中的每个实例执行一个宏

时间:2016-06-03 00:29:41

标签: sql macros sas datastep

我有一个宏,它通过一组给定的时间帧将数据插入表中。

它遍历一系列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时段插入数据(运行宏),而不仅仅是最后一个?

1 个答案:

答案 0 :(得分:3)

假装您是宏编译器并将宏调用替换为它将生成的实际SAS代码。请记住,对于宏进程,put(extract_start, date11.)put(extract_end, date11.)的参数值只是字符串。

我怀疑您需要使用call execute,因此数据集变量extract_startextract_end的值可以传递给宏。

data _null_;
  set extract_insert_dates;
  call execute(cats('%nrstr(%insert_table_extract)(',put(extract_start, date11.),',',put(extract_end,date11.),')'));
run;