Apart from using the LOGISTIC procedure instead of CATMOD, which may lead you to find the ORDER=FREQ option useful, I suggest that kind of trick :
1) PROC FREQ ORDER=FREQ your data according to the chosen variable (the one to recode), then save results with ODS OUTPUT oneWayFreqs = work.myValues ;
2) Sort MyValues By DESCENDING variable, then with a DATA step, re-read the MyValues dataset to add a new variable, recoded=_N_, to it ;
3) Merge MyValues with your core data BY the chosen variable
4) use recoded as input for your modelling procedure.
This can be performed for each variable in your macro, even if it may be time-consuming to re-FREQ the whole dataset, then re-merge it, at each loop.
Regards.
Olivier