All you need:
data _null_;
length setlist $32000;
date = input("202201",yymmn6.);
do while (date le input("202504",yymmn6.));
setlist = catx(" ",setlist,"perfout.acct_lvl_" !! put(date,yymmn6.) !! "(drop=MTHOPN)");
date = intnx('month`,date,1,"b");
end;
call symputx("setlist",setlist);
run;
data perf.gpcc_perf_append;
set &setlist;
keep account_id YYYYMM MthSncAction EXSTATCD EXSTATRSNCD d_apply_mth d_apply_qtr d_book_mth d_book_qtr c_portfolio
AVGBAL DLQ000 DLQ000BAL DLQ001 DLQ001BAL DLQ030 DLQ030BAL DLQ060 DLQ060BAL DLQ060X DLQ060XBAL
DLQ090 DLQ090BAL DLQ090X DLQ090XBAL DLQ120 DLQ120BAL DLQ150 DLQ150BAL DLQ180 DLQ180BAL
BALEOM COPRNBAL RECOVERYPRNAMT REVTOTNET CO COBK COCUM;
run;
No macro loop needed, and it's much easier in a DATA step.
Also see the advantage of using SAS date values, as it allows the use of the date functions.
PS untested code, posted from my tablet.
... View more