*! 12sep2008 //needs to be updated with latest mata program dfmap version 11.1 syntax [anything(name=dir)], [Filter(string) Levels(integer 3)] mata: DFmap() end version 11.1 mata: void DFmap() { class prefs scalar pr pr.make("dfmap",("filter","levels"\"0","1"),("*.dta","3")) pr.updaterow((st_local("filter"),st_local("levels"))) pr.write() files=pathparts(subfiles(dir=pp1(pcanon(st_local("dir"),"dir")),pr.c("filter"),pr.c("levels"))) if (!sum(strlen(files))) { printf("\n{txt}No files were found\n") exit() } files=columnize(files[,1],"/"),concat(files[,2..3],"") files=J(1,cols(files),"")\sort(files,1..cols(files)) pd=cols(files)-1 space=rowsum(files[,1..pd]:!=""):*3 for (r=2;r<=rows(files);r++) { if (files[r,1..pd]!=files[r-1,1..pd]) printf(`"{space %f}{txt:%s} {stata "cdl %s":cd}\n"',space[r]-3,t=concat(files[r,1..pd],"/"),t) printf(`"{space %f}{stata "usel %s":%s}\n"',space[r],concat(files[r,],"/"),files[r,pd+1]) } printf("\n{txt:Start} {res:%s}\n",dir) printf("{txt:Filter} {res:%s}\n",pr.c("filter")) printf("{txt:Levels} {res:%s}\n",strofreal(pr.c("levels"))) } end