【问题标题】:sas execute a macro for each instance in a data stepsas 为数据步骤中的每个实例执行一个宏
【发布时间】:2016-06-03 00:29:41
【问题描述】:

我有一个宏,它可以在一组给定的时间范围内将数据插入表中。

它遍历一系列起始日期(存储在数据集中)并使用 proc sql insert 语句运行宏。

在所有这一切结束时检查数据时,我注意到只有最终从到期的数据在新数据集中。

这是我在数据步骤中调用宏时的代码。

data _null_;
    set extract_insert_dates;
    %insert_table_extract(put(extract_start, date11.),put(extract_end, date11.));
run;

我是否应该在数据步骤中调用其他东西才能使其工作并为每个从到时间段插入数据(运行宏),而不仅仅是最后一个?

【问题讨论】:

    标签: sql macros sas datastep


    【解决方案1】:

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

    我怀疑您需要使用调用执行,以便将数据集变量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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多