*! version 2.0.1 SRD & JI 22jul2010
program define zscore
	version 7.0
	syntax varlist [aweight fweight iweight] [if] [in] /*
		*/ [, stub(string) Listwise]

	if "`weight'" != "" {
		local weight "[`weight'`exp']"
	}

	if "`stub'" == "" {
		local stub "z_"
	}

	foreach var of local varlist {
		capture confirm new variable `stub'`var'
		if _rc > 0 {
			di as err "`stub'`var' is not a valid variable name"
			exit 198
		}
	}

	if "`listwise'" != "" {
		tempvar totmis
		egen `totmis' = rowmiss(`varlist')
		if "`if'" == "" {
			local if "if (`totmis' == 0)"
		}
		else {
			local if "`if' & (`totmis' == 0)"
		}
	}

	foreach var of local varlist {
		qui sum `var' `weight' `if' `in'
		qui gen double `stub'`var' = (`var' - r(mean)) / r(sd) `if' `in'

		qui count if `stub'`var' == .
		local miss = r(N)

		if `miss' == 1 {
			local value "value"
		}
		else {
			local value "values"
		}

		local type : type `stub'`var'
		di as res "`stub'`var' " as txt /*
			*/ "created with `miss' missing `value'"
	}
end