program define genvsum version 2.1 if "%_*"=="" { di in red "invalid syntax -- see help genvmean" exit 198 } mac def _varlist "req ex min(2)" mac def _in "opt" mac def _if "opt" mac def _options "Generate(str)" parse "%_*" mac def _g "%_generat" if "%_g"=="" { vmean } confirm new var %_g _NOBS capture { gen %_g = 0 %_if %_in gen long _NOBS = 0 %_if %_in parse "%_varlist", parse(" ") while "%_1"!="" { replace %_g = %_g + cond(%_1==.,0,%_1) %_if %_in replace _NOBS = _NOBS + cond(%_1==.,0,1) %_if %_in mac shift } drop _NOBS exit } mac def _rc=_rc capture drop %_g capture drop _NOBS exit %_rc end