Well, I know nobody really uses base SAS any more (/sarcasm). It has lots of functions for date manipulations, data structures associated with dates, your code looks like:
data _null_;
call symputx("CALYEAR",year(datepart(today())));
call symput("MONTH",month(datepart(today())));
call symput("YYYYMM",cats(year(datepart(today())),month(datepart(today()))));
run;
%put &CALYEAR., &MONTH., &YYYYMM.;
The above creates your macro variables base on the date of run. I would of course advise that there are better ways to do this, use datasets for your parameters etc. Macro language is text only and doesn't do anything other than create text strings.