Since you didn't show any actual Proc freq or surveyfreq code the answer is "maybe".
You can use ( ) to indicate a group of variables to compare with others in a table statement:
(a b c) * (d e) for example will do tables a*d b*d c*d a*e b*e c*e.
So if you have a group of demographic variables such as sex, age group, race, ethnicity that you want to compare with responses like income those are easy. Have the demographics in one set of parentheses and the other responses in a different group.
Or if you really want all with all , where you will get sex*sex as a result
Tables (&cat_vars.) * (&cat_vars);
For the truly lazy that want to generate horrific amounts of output perhaps: tables _all_ * _all_ ;
The tables statements in Freq and Surveyfreq will accept the list words _all_ (every single variable), _numeric_ (all the numeric variables) and/or _character_ all of the character variables.