I am using NHIS data from 1986-2009. I want to find a simpler way to generate ID variable for datasets labeled personsx_year.dta (year 1986-2009). The id variable - publicid - for years 1986-94 is generated using seven variabes , for years 1995-96 using three, years 1997-2003 using four.,,

I'm using the following the syntax.

Code:
*1986-1994 NHIS
* 1986
use personsx_1986, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1986, replace
clear

*1987
use personsx_1987, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1987, replace
clear

*1988
use personsx_1988, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1988, replace
clear

*1989
use personsx_1989, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1989, replace
clear

*1990
use personsx_1990, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1990, replace
clear

*1991
use personsx_1991, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1991, replace
clear

*1992
use personsx_1992, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1992, replace
clear

*1993
use personsx_1993, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1993, replace
clear

*1994
use personsx_1994, clear
egen publicid = concat(year quarter psunumr weekcen segnum hhnum pnum)
save personsx_1994, replace
clear


*1995-1996 NHIS
*1995
use personsx_1995, clear
egen publicid=concat(year hhid pnum)
save personsx_1995, replace
clear

*1996
use personsx_1996, clear
egen publicid=concat(year hhid pnum)
save personsx_1996, replace
clear

*1997-2003 NHIS
*1997
use personsx_1997, clear
egen publicid = concat (srvy_yr hhx fmx px)
save personsx_1997, replace
clear
Once I create the ID variable I want to append them using the syntax shared with me earlier.

Code:
forvalues y = 1986/2009 {
    append using personsx_`y
    replace year = `y' if missing(year)
}
Thanks