What are you actually trying to do?
You want to rename F0 to September_17, F1 to September_18. So what happens when you wrap past the end of the month?
I think you will find the code simpler to maintain if you keep the macro logic and code generation separate.
So here is version that builds the OLD=NEW pairs for the RENAME statement first into a macro variable and then uses that macro in the data step code. Now the data step code itself is not interrupted by the macro logic and is easier to read, understand and make sure you are generating valid SAS code.
%macro schedule(num);
%local today month rename ;
%let today=%sysfunc(today());
%let month=%sysfunc(today(),monname);
%do i = 0 %to #
%let rename=&rename F&i=&month._%sysfunc(intnx(day,&today,&i),day.) ;
%end;
data schedule;
length activity $60;
set extract(keep=activity F0-F&num);
rename &rename;
run;
%mend;
%schedule(12)