jzhyue 发表于 2011-10-14 11:28 
*根据你的思路(有点被你的思路搞蒙了,有点当年我学Passal传统编程语言的味道.)试试下面:
gen str40 name ...
具体一点,母程序是这样的:
* Read in the Creditor records for each of the boroughs;
#delimit;
do "J:\DEPT\REUP\Core Data\Lis Pendens - PDC\lp_creditor1x.do" BX;
然后在子程序里:
**************;
** Creditor **;
#delimit;
args lpboro;
insheet using "J:\DEPT\REUP\Core Data\Lis Pendens - PDC\LP_`lpboro'.txt", clear;
keep if v1=="CR";
rename v2 key;
gen str40 name=""
foreach n of numlist 10/4 {
cap confirm v v`n'
if _rc==0{
tostring v`n', replace
foreach m of numlist 3/`n'{
replace name=name+v`m'+","
}
continue, break
else{
continue, break
}
}
}
replace name=subinstr(name,".","",.)
replace name=subinstr(name,",,","",.)
replace name=substr(name,1,length(name)-1) if substr(name,-1,.)==","
egen address=ends(name),p(,) l
replace name=substr(name,1,length(name)-length(address)-1)
replace address=subinstr(address,"00000","N/A",.)
replace name = trim(name)
egen tag = tag(key name address)
tab tag
drop if tag==0
keep key name address
compress
sort key
save "J:\DEPT\REUP\Core Data\Lis Pendens - PDC\temp data\creditor_`lpboro'.dta", replace;