version 10 mata: mata clear void function Labelvar(string scalar listvar, string scalar listdes) { /* Parsing relevant strings */ t = tokeninit("", "#", (`""""', `"`""'"'), 0, 0) tokenset(t, st_local(listvar)) listvarT = tokengetall(t) tokenset(t, st_local(listdes)) descriptorT = tokengetall(t) /* get variables */ for (i=1;i<=cols(listvarT);i++) { if (i==1) variables = strtrim(listvarT[i]) if (i>1 & listvarT[i]!="#") variables = (variables,strtrim(listvarT[i])) } // comma = `"""' // for (i=1;i<=cols(variables);i++) { // labels[i] = comma+labels[i]+comma // } /* get descriptors */ for (i=1;i<=cols(descriptorT);i++) { if (i==1) descriptor = strtrim(descriptorT[i]) if (i>1 & descriptorT[i]!="#") descriptor = (descriptor,strtrim(descriptorT[i])) } comma = `"""' for (i=1;i<=cols(descriptor);i++) { descriptor[i] = comma+descriptor[i]+comma } /* Create labels definitions in Stata */ for (i=1;i<=cols(variables);i++) { stata("capture su" + " " + variables[i]) stata("scalar inlist=_rc") inlist=st_numscalar("inlist") if (inlist==0) { stata("label var" +" "+ variables[i]+" "+ descriptor[i]) } } } mata mosave Labelvar(), dir(PERSONAL) replace mata clear end