1) It looks to me that you are not using the weights. When I use the following, I get roughly the right number (it is differing by 3 cases which I think is due to some missing data):
. tab sb325 [iw=hv005/1000000] if sb325 == 1 | sb325 == 0
glucose |
measured |
before | Freq. Percent Cum.
------------+-----------------------------------
no | 9,828.9921 75.94 75.94
yes |3,114.39667 24.06 100.00
------------+-----------------------------------
Total | 12,943.389 100.00
Yes, some cases from the dataset are not used, specifically those that refused to answer the questions about glucose or refused to be tested.
For the table 13.5.3 on page 235 I match the number of cases using the following code:
tab sb335b [iw=hv005/1000000] if sb302==2 & sb303c >= 35 & sb335b < 900,m
This results in 3437 cases matching the table. Here I have included women age 35+ who have valid measures for glucose.
2) The data are recorded with 1 implied decimal place. That is a value of 125 should have one implied decimal place and is thus 12.5, or a value of 52 should have one implied decimal place and is thus 5.2. The label is a bit confusing and is as you say 10*mmol/L.