*! mcompr3.ado 3/29/94 by Bill Rogers (sg28: STB-22) program define mcompr3 local options " Cutoff(real 1) LAbel Greater(string) LEss(string) Default(string)" local varlist "req ex max(1)" parse "`*'" parse "`varlist'", parse(" ") preserve if "`default'"=="" { local default default } local numcat = $S_2 + ("$S_4"!="nocons") local ncontr = `numcat'*(`numcat'+1)/2 local i 1 * in this program, i and j are indexing the macros as well as the variables while (`i'<=`numcat') { local gr : word `i' of `greater' local le : word `i' of `less' global `gr' global `le' local j 1 while `j'<=`numcat' { local i1 = min(`i',`j') local j1 = max(`i',`j') local pat = (`j1'-1)*(`j1'-2)/2 + `i1' local p = `1'[`pat'] if (`i'!=`j' & `p'<`cutoff') { local bi = 0 if "$S_4"=="nocons" | `i1'>1 { local ii = `i1' - ("$S_4"!="nocons") local ii : word `ii' of $S_3 local bi = _b[`ii'] } local bj = 0 local name "`default'" if "$S_4"=="nocons" | `j1'>1 { local jj = `j1' - ("$S_4"!="nocons") local jj : word `jj' of $S_3 local bj = _b[`jj'] } if "$S_4"=="nocons" | `j'>1 { local jj = `j' - ("$S_4"!="nocons") local name : word `jj' of $S_3 if ("`label'"!="") { local name : variable label `name' } } local diff = `bj' - `bi' if "$`gr'"!="" & (`diff'>0)==(`i'>`j') { global `gr' "$`gr',`name'" } if "$`le'"!="" & (`diff'>0)==(`i'<`j') { global `le' "$`le',`name'" } if "$`gr'"=="" & (`diff'>0)==(`i'>`j') { global `gr' "`name'" } if "$`le'"=="" & (`diff'>0)==(`i'<`j') { global `le' "`name'" } } local j = `j' + 1 } local i = `i' + 1 } end