*! version 1.0.1 Fri Apr 8 10:46:37 CDT 1994 (STB20: sg25) program define xi_eic version 3.1 local orig "`1'" /* of form i.* */ local ichar "`2'" local lstar = index("`orig'","`ichar'") local part1 = substr("`orig'",1,`lstar'-1) local part2 = substr("`orig'",`lstar'+1,.) _crcunab `part2' local part2 "$S_1" local type : type `part2' xi_ei `part1' local res1 "$S_1" if "`res1'"=="." { di in gr "`orig'" _col(36) "(requires no interaction terms)" xi_eicu `part2' exit } _crcunab `res1' local uab1 "$S_1" parse "`uab1'", parse(" ") local len1 0 while "`1'"!="" { if length("`1'")>`len1' { local len1 = length("`1'") } mac shift } local len1 = `len1'-length("`res1'") + 1 local c1 = substr("`res1'",2,1) local c2 = substr("`part2'",1,4-`len1') local stub "I`c1'X`c2'_" xi_mkun2 `stub' local stub "$S_1" parse "`uab1'", parse(" ") local i 1 while "``i''"!="" { local num1 = substr("``i''",length("`res1'"),.) local lbl1 : variable label ``i'' qui gen `type' `stub'`num1' = ``i''*`part2' label var `stub'`num1' "(`lbl1')*`part2'" local i=`i'+1 } xi_eicu `part2' if "`ichar'"=="*" { global S_1 "`res1' ${S_1}`stub'*" } else global S_1 "${S_1}`stub'*" di in gr "`orig'" _col(23) "`stub'#" /* */ _col(36) "(coded as above)" end