我有一个宏,可以在给定的时间范围内将数据插入表中。
它遍历一系列从头到尾的日期(存储在数据集中),并使用proc sql insert语句运行宏。
在所有这些操作的最后检查数据时,我注意到新数据集中只有最后的起始至结束期间的数据。
这是在数据步骤中调用宏时的代码。
data _null_; set extract_insert_dates; %insert_table_extract(put(extract_start, date11.),put(extract_end, date11.)); run;
我还需要在数据步骤中调用其他方法,以便该方法可以工作,并为每个from-to周期(而不是最后一个周期)插入数据(运行宏)吗?
假设您是宏编译器,然后将宏调用替换为它将生成的实际SAS代码。请记住,对于宏处理,put(extract_start, date11.)和的参数值put(extract_end, date11.)只是字符串。
put(extract_start, date11.)
put(extract_end, date11.)
我怀疑你需要使用呼叫执行这样的数据集变量的值extract_start,并extract_end可以传递给宏。
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;