program define dropmissing
syntax varlist [, missing(string) delete]

tokenize `varlist'
local nbitems:word count `varlist'
if "`missing'"=="" {
	local missing="."
}

local nbmissing:word count `missing'

forvalues i=1/`nbitems' {
	forvalues j=1/`nbmissing' {
		local miss:word `j' of `missing'
		if "`delete'"!="" {
                        drop if ``i''==`miss'
                }
                else {
                        replace ``i'=. if ``i''==`miss'
                }
	}
}
end