What about your project makes the SURVEY procs inappropriate.
The BY group has the exact same reason that the survey procs do with BY group processing:
Note that using a BY statement provides completely separate analyses of the BY groups. It does not provide a statistically valid subpopulation or domain analysis, where the total number of units in the subpopulation is not known with certainty.
(my emphasis)
You should share your existing code attempts and indicate which variables represent which levels of your population.