@ballardw has already given a sufficient and satisfactory answer I guess, but here's an alternative (to working with %sysfunc()).
I think this is what you're after:
data _NULL_;
initial_date='01Feb2021'd; put initial_date date9.;
final_date='28Feb2021'd; put final_date date9.;
initial_year=year(initial_date); put initial_year;
final_year =year(final_date); put final_year;
initial_month=month(initial_date); put initial_month;
final_month =month(final_date); put final_month;
call symput('initial_date' ,"'"!!put(initial_date,date9.)!!"'d");
call symput('final_date' ,"'"!!put(final_date,date9.)!!"'d");
call symput('initial_year' ,put(initial_year,4.));
call symput('final_year' ,put(final_year,4.));
call symput('initial_month',strip(put(initial_month,2.)));
call symput('final_month' ,strip(put(initial_month,2.)));
run;
%PUT *****&=initial_date*****;
%PUT *****&=final_date*****;
%PUT *****&=initial_year*****;
%PUT *****&=final_year*****;
%PUT *****&=initial_month*****;
%PUT *****&=final_month*****;
data work.vendas_&initial_year._&initial_month._&final_year._&final_month.;
set dataw.f_Sales;
where ( (data>=&initial_date. and data<&final_date.)
AND (TIPOLIN = 'V')
AND (substr(id,1,1) in ('2','3','4','5','6','7','8','9') ) );
run;
/* end of program */
Cheers,
Koen
... View more