*! version 1.0.0  02/02/93 extrname <unintl> utility; STB-13: dm13
program define _crcexne
	version 3.0

	local fn "`1'"
	local mn "`2'"
	local ln "`3'"

	tempvar bad
	while 1 {
		capture drop `bad'
		gen byte `bad'=`fn'!="" & `mn'!="" & substr(`ln',2,1)=="."
		replace `bad'=2 if `fn'!="" & `mn'!="" & substr(`ln',2,1)==" "
		capture assert `bad'==0
		if _rc==0 { exit }
		local type : type `mn'
		local d = min(real(substr("`type'",4,.))+3,80)
		minlen `d' `mn'
		replace `mn'=trim(`mn'+" " + substr(`ln',1,1)+".") if `bad'
		replace `ln'=trim(substr(`ln',3,.)) if `bad'
		compress `mn' `ln'
	}
	/*NOTREACHED*/
end