*! version 1.0.5 22aug2012 Daniel Klein pr labvars vers 9.2 syntax [anything(id = varlist equalok everything)] /// [, Remove Carryon Alternate NAMes ] if !(c(k)) { di as err "no variables defined" e 111 } // check options and pass to subroutine if ("`alternate'`names'" != "") { if ("`alternate'" != "") labvars_alt `0' if ("`names'" != "") labvars_nam `0' e 0 // done } loc opt : word count `remove' `carryon' if (`opt' > 1) { di as err "options remove and carryon not both allowed" e 198 } // parse user if (`"`macval(anything)'"' == "") { if !(`opt') { di as err `"`c(k)' `= plural(`c(k)', "variable")' "' /// "but 0 labels specified" e 100 } else loc varlist * } else { gettoken quotes : anything ,p(`"`""'\"') qed(q) if (`q') loc varlist * else { gettoken varlist anything : anything ,p("\") if (`"`macval(varlist)'"' == "\") loc varlist * else if (`"`macval(anything)'"' == "") { gettoken varlist anything : varlist ,p(`"`""'"') } else gettoken bs anything : anything ,p("\") } } // check varlist and match unab varlist : `varlist' loc nvar : word count `varlist' loc nlab : word count `anything' if (`nvar' != `nlab') { if (`nvar' < `nlab') loc opt 0 if !(`opt') { di as err `"`nvar' `= plural(`nvar', "variable")' "' /* */ `"but `nlab' `= plural(`nlab', "label")' specified"' e 198 } } if ("`carryon'" == "") loc remove remove // label variables token `"`macval(anything)'"' loc l 0 foreach v of loc varlist { loc ++l if (`"`macval(`l')'"' != "") | ("`remove'" != "") { loc lbl "``l''" } if strpos(`"`macval(lbl)'"', `"""') la var `v' `"`lbl'"' else la var `v' "`lbl'" } end pr labvars_alt syntax [anything(id = varname equalok everything)] ,Alternate // check loc nany : word count `anything' if !(`nany') err 102 if mod(`nany', 2) { loc nvar = ceil(`nany'/2) loc nlab = floor(`nany'/2) di as err `"`nvar' `= plural(`nvar', "variable")' "' /// `"but `nlab' `= plural(`nlab', "label")' specified"' e 198 } // check varlist token `"`macval(anything)'"' forv j = 1(2)`nany' { loc varlist `varlist' ``j'' } conf v `varlist' // label variables loc l 2 foreach v of loc varlist { if strpos(`"`macval(`l')'"', `"""') { la var `v' `"``l''"' } else la var `v' "``l''" loc l = `l' + 2 } end pr labvars_nam syntax [varlist] ,NAMes // label variables foreach v of loc varlist { la var `v' "`v'" } end e 1.0.5 22aug2012 fix small bug 1.0.4 27jun2012 new option -names- subroutines label variables 1.0.3 01mar2012 enhanced syntax: backslash no longer needed varlist is optional variable names and labels may alternate fix bug with single left quote 1.0.2 06jun2011 version 9.2 compatibility changes in options/default: option -remove- added option -carryon- replaces -unique- (default change) option -test- and -echo- removed 1.0.1 22nov2010