For a multinomial with a generalized logit link, you don't have to recode purely character strings to numeric values, but it helps when dealing with very large datasets.
For your analysis, perhaps consider an error structure that is common across all main categories, at least to get started. What occurs if you drop the group=maincat option from your RANDOM statement? Also, with as much data as you have, consider using the pseudolikelihood method, rather than the Laplace method. Just drop method=Laplace from the PROC GLIMMIX statement.
If neither of these give reasonable answers in a reasonable time, consider subsampling your data, and then jackknifing the results.
Steve Denham
... View more