我需要在 SAS 循环中临时动态存储日期值。当我在宏之外运行下面的代码时,它可以工作。
/*This works outside of a macro*/
%let i=1;
/* Assuming &i contains the row number*/
data _null_;
set new_dataset;
if _n_=&i then do;
call symputx('start', date_var,'g');
end;
stop;
run;
%put Start Date: &start;
此代码是另一段在宏之外但不在宏循环内工作的代码。
proc sql noprint inobs=&i;
select date_var into :start from new_dataset;
quit;
但是,当我运行下面的代码时,它不起作用。有谁知道问题是什么以及可能的解决方案?
%macro loop_enrollment_first;
%do i = 1 %to 10;
%put &i;
/* Assuming &i contains the row number*/
data _null_;
set new_dataset;
if _n_=&i then do;
call symputx('start', date_var,'g');
end;
stop;
run;
%put Start Date: &start;
%end;
%mend loop_enrollment_first;
%loop_enrollment_first;
三点: