program def sortlist, rclass
*! NJC 1.2.0 7 June 2000
* NJC 1.1.0 22 Dec 1999
* NJC 1.0.0 22 Sept 1999
	version 6.0
	gettoken list 0 : 0, parse(",")
	if "`list'" == "" | "`list'" == "," {
		di in r "nothing in list"
		exit 198
	}
	syntax [, Noisily Global(str) ]

	if length("`global'") > 8 {
		di in r "global name must be <=8 characters"
		exit 198
	}

	tokenize `list'
	local nwords : word count `list'

	if `nwords' > _N {
		preserve
		clear
		qui set obs `nwords'
	}

	tempvar words miss
	qui gen str1 `words' = ""

	local i = 1
	while `i' <= `nwords' {
		local len = length("``i''")
		if `len' > 80 {
			di in r "cannot handle word length > 80"
			exit 498
		}
		qui replace `words' = "``i''" in `i'
		local i = `i' + 1
	}
	gen byte `miss' = missing(`words')
	sort `miss' `words'

	local i = 1
	while `i' <= `nwords' {
		local word = `words'[`i']
		local newlist "`newlist' `word'"
		local i = `i' + 1
	}

	if "`noisily'" != "" { di "`newlist'" }
	if "`global'" != "" { global `global' "`newlist'" }
	return local list `newlist'
end