*! version 1.0.1 PR 01oct2004.
program define misplit, rclass
version 7
syntax, CLEAR [ IMPid(string) m(int 5) ]
cap assert `m'>1
if _rc {
	di "{err}more than one imputation is required"
	exit 198
}
if "`impid'"=="" {
	local impid _j
}
cap confirm var `impid'
if _rc {
	di as err "imputation identifier `impid' not found in file `using'"
	exit 601
}
tempvar J
egen int `J'=group(`impid')
sum `J', meanonly
local m=r(max)
if r(max)<2 {
	di as error "more than one imputation is required"
	exit 198
}
if r(max)<`m' {
	local m=r(max)
	di as text "[note: data for only `m' imputations found in file]"
}
preserve
quietly {
	forvalues j=1/`m' {
		keep if `J'==`j'
		drop `J'
		cap erase "_mitemp`j'.dta"
		save "_mitemp`j'.dta"
		restore, preserve
		*egen int `J'=group(`impid')
	}
	global mi_uf `using'
	global mi_sf _mitemp
	global mimps `m'

	use _mitemp1.dta, clear
}
if $mimps==2 {
	di "{p}{txt}data for $mimps imputations have been copied to _mitemp1.dta and _mitemp$mimps.dta"
}
else {
	di _n "{p}{txt}Data for $mimps imputations have been copied to ${mi_sf}1.dta to $mi_sf$mimps.dta"
}
restore, not
end