Why would you ever need to use CAT() in macro code? Just expand the values where you want them.
What are you trying to do? If you want to make a date literal use double quotes so the macro function calls are processed. Strings in single quote (which your code is creating by accident) are ignored by the macro processor.
%Let timtet="%sysfunc(intnx(month,&TD,-1,b),date9.)"d;
%put &=timtet;
But why bother? SAS language does not care whether you give it "01FEB2021"d or 22312, they both represent the same number of days since 1960.
... View more