You should specify the survey design (stratum variables, cluster variables [if any], and respondent sampling weight variables) in your PROC SURVEYFREQ "paragraph". Before running PROC SURVEYFREQ, sort your data by the stratum variables and the cluster variables.
Your syntax also uses the same variable, NAME, for the stratum variable and for the respondent weight variable. This is somewhat unusual, and I would recheck the variables
on your data set to be sure that this is correct.
This is how I'd change your syntax:
proc sort data=abc;
by name [clustervar, if any];
run;
proc surveyfreq data=abc missing;
strata name / list;
[cluster clustervar];
weight respwt;
tables (gender race gender*race) * diabetes / row col cl nostd;
run;
The MISSING option of the PROC SURVEYFREQ statement considers missing values of strata,
cluster variables, and categorical variables in the TABLE statement as valid categories
for calculating percentages. This is useful in determining how missing values might affect the estimates.
The TABLES statement includes tables for gender-by-diabetes, race-by-diabetes, and
gender-by-race-by-diabetes. Both the row percentages and the column percentages
for these tables are estimated (the ROW and the COL options) as well as 95% confidence limits for these percentages (the CL option). Once these confidence limits are estimated, the standard errors for the percentages are less helpful (omitted using the NOSTD option).