log using educ2001, replace set memory 500m set more 1 ! /bin/rm -f /tmp/aef.raw aef.dct dcthead * run with stata6 -p0 do annual2001 to get Stata 5 format ! echo >dcthead dictionary using /tmp/aef.raw program define aef2 * '-A' are missing value indicators in the earlier files. if `1' < 1994 {!zcat /home/data/morg/raw/morg`2'.Z |tr "\-A" " " >/tmp/aef.raw} if `1' >= 1994 {!zcat /home/data/morg/raw/morg`2'.Z >/tmp/aef.raw} ! cat /home/data/morg/sources/dcthead /home/data/morg/sources/aef`3'.dbd >./aef.dct quietly infile using aef if age>15&age!=. #delimit cr * Geography generate int year = `1' if `1'== 1995 { replace hhid = hhid94 if intmonth<9 drop hhid94 } if `1' > 1995 { replace smsa93 = . if smsa93<2 } replace smsasize = . if smsasize <=0 if `1' == 1995 { replace smsastat = smsa995 if intmonth>8 replace icntcity = icntct94 if intmonth<9 replace centcity = centcitx if intmonth<9 replace smsa93 = . if intmonth>=9 & smsa93<2 replace smsa93 = . if intmonth<9 drop pmsarank generate smsa80 = smsasize if intmonth < 10 } if `1' > 1995 & `1' < 1998 { replace smsastat = smsa995 } replace smsastat = . if smsastat==3 | smsastat<0 if `1' == 1994 { replace hhid = hhid94 drop hhid94 drop smsa93 replace centcity = centcitx replace icntcity = icntct94 replace eligible = . if eligible == 0 replace pmsarank = . if intmonth > 3 replace pmsarank = . if pmsarank <= 0 replace cmsarank = . if intmonth > 3 } if `1' > 1995 & `1' <= 1997 { drop hhid94 pmsarank } if `1' > 1993 & `1' < 1998 { drop centcitx icntct94 smsa995 } if `1' > 1993 { replace hurespli =. if hurespli <0 replace peinusyr = . if peinusyr < 0 } replace centcity = . if centcity==4 | centcity<=0 if `1' >= 1986 & `1' < 1994 { replace pmsarank = . if pmsarank<=0 } if `1' >= 1995 & `1' <= 1997 { drop cmsarank} if `1' >= 1986 { replace icntcity = . if icntcity<=0} if `1' > 1984 & `1' < 1995 { replace cmsarank = . if cmsarank<=0} if `1' >= 1989 { replace msafips = . if msafips <=0 replace cmsacode = . if cmsacode<=0} if `1' == 1983 { drop docc70 occ70 } if `1' == 1985 { replace smsarank = . if intmonth > 9} if `1' == 1984 { drop icntcity pmsarank cmsarank } if `1' == 1985 & intmonth < 10 { drop icntcity pmsarank cmsarank } if `1' == 1994 { replace cmsarank = . if intmonth>3 } *replace smsasize=. if smsasize<=0 if `1' < 1985 { generate byte smsa70 = smsasize } if `1' > 1985 & `1' < 1995 { generate byte smsa80 = smsasize } if `1' == 1985 { generate byte smsa70 = smsasize if intmonth<10 } if `1' == 1985 { generate byte smsa80 = smsasize if intmonth>9 } drop smsasize if `1' > 1985 & `1' < 1989 { drop smsarank } if `1' < 1983 { drop unioncov unionmme occ80 ind80 } * Demography if `1' > 1983 & `1' < 1994 { replace ownchild = . if ownchild ==0 replace ownchild = ownchild - 1 generate int ch613=chldpres generate int ch1417=chldpres } if `1' > 1983 & `1' < 1989 { generate int ch05= chldpres recode ch05 4 6/8 = 1 0/3 5 = 0 recode ch613 3 5 7/8 = 1 0/2 4 6 = 0 recode ch1417 2 5/6 8 =1 0/1 3/4 7 = 0 } if `1' > 1988 & `1' < 1994 { generate int ch02 = chldpres generate int ch35 = chldpres recode ch02 2 6/8 12/14 16 = 1 0/1 3/5 9/11 15 = 0 recode ch35 3 6 9/10 12/13 15/16 = 1 0/2 4/5 7/8 11 14 = 0 recode ch613 4 7 9 11/12 14/16 = 1 0/3 5/6 8 10 13 = 0 recode ch1417 5 8 10/11 13/16 = 1 0/4 6/7 9 12 = 0 generate int ch05 = ch02 replace ch05 = ch35 if ch35 == 1 label variable ch02 "Children 0-2" label variable ch35 "Children 3-5"} if `1' > 1983 & `1' < 1994 { label variable ch05 "Children 0-5" label variable ch613 "Children 6-13" label variable ch1417 "Children 6-17" } if `1' == 1998 { drop ownchild chldpres } if `1' >= 1999 {replace ownchild = . if ownchild < 0 replace chldpres = . if chldpres < 0 generate int ch02 = chldpres generate int ch35 = chldpres generate int ch613 = chldpres generate int ch1417 = chldpres recode ch02 1 5/7 11/13 15 = 1 0 2/4 8/10 14 = 0 recode ch35 2 5 8/9 11/12 14/15 = 1 0/1 3/4 6/7 10 13 =0 recode ch613 3 6 8 10/11 13/15 = 1 0/2 4/5 7 9 12 = 0 recode ch1417 4 7 9/10 12/15 = 1 0/3 5/6 8 11 = 0 generate int ch05 = ch02 replace ch05 = ch35 if ch35 == 1 } if `1' == 1999 { replace ownchild = . if intmonth < 10 replace chldpres = . if intmonth < 10 replace ch613 = . if intmonth < 10 replace ch1417 = . if intmonth < 10 replace ch05 = . if intmonth < 10 replace ch02 = . if intmonth < 10 replace ch35 = . if intmonth < 10 } if `1' > 1988 & `1' < 1992 { drop grade92 } if `1' < 1989 { replace gradeat = gradeat - 1 replace marital = 7 if marital==5 } if `1' > 1991 { replace grade92 = . if grade92 < 0 } if `1' >= 1998 { replace ged = . if ged < 0 replace gedhigr = . if gedhigr < 0 replace yrcoll = . if yrcoll < 0 replace grprof = . if grprof < 0 replace gr6cor = . if gr6cor < 0 replace ms123 = . if ms123 < 0 } if `1' == 1992 | `1' == 1993 { drop gradecp gradeat} if `1' == 1995 { replace relref94 = . if intmonth > 2 replace relref95 = . if intmonth < 3 } if `1' > 1995 { drop relref94 } if `1' == 1994 { drop relref95 } if `1' >= 1994 { replace veteran = . if veteran < 0 replace penatvty = . if penatvty < 0 replace pemntvty = . if pemntvty < 0 replace pefntvty = . if pefntvty < 0 replace prcitshp = . if prcitshp < 0 replace prcitflg = . if prcitflg < 0 } if `1' > 1989 { replace ethnic = . if ethnic < 0 replace ethnic = . if ethnic >= 10} * Employment if `1' >= 1994 { replace occ80 = . if occ80 <0 replace ind80 = . if ind80 < 10 replace class94 = . if class94<0 } #delimit ; if `1' >= 1983 { generate int docc80=occ80; recode docc80 1/6=1 7/22=2 23/37=3 44/59=4 64/68=5 69/83=6 84/89=7 95/106=8 113/154=9 155/159=10 178/179=11 43 63 163/177 183/199=12 203/208=13 213/225=14 226/235=15 243=16 253/257=17 258/259=18 263/278=19 283/285=20 303/307=21 308/309=22 313/315=23 337/344=24 354/357=25 316/336 345/353 359/389=26 403/407=27 413/427=28 433/444=29 445/447=30 448/455=31 456/469=32 503/549=33 553/599=34 613/699=35 703/779=36 783/799=37 803/814=38 823/859=39 869=40 875/883=41 863/868 873 874 885/889=42 473/476=43 477/489=44 494/499=45 905=46}; if `1'<= 1982{ replace dind=ind70 ; recode dind 18/19=1 17=2 47/57=3 67/77=4 107/109=5 118=6 119/138=7 139/149=8 157/168 258=9 169=10 177/198=11 199/209=12 219 =13 227=14 228/238=15 239/257=16 259=18 268/298=19 299=20 307/318=21 319/327=22 328/337=23 338/339=24 347/369=25 377/378=26 379/ 387=27 388/398=28 407/429=29 447/449=30 467/479=31 507/588=32 607/698=33 707/709=34 717/718=35 769=36 727/748=37 749/759=38 777/798=39 807/809=40 838=41 828/837 839/848=42 877/879=44 857/868=43 849 869 887/897= 45 027 028 = 46 907/937=52 } ; if `1' <=1993 & `1' >=1983 {replace dind=ind80; recode dind 12/30=1 10/11=2 40/50=3 60=4 230/241=5 242=6 250/262=7 270/280=8 281/300=9 301=10 310/332=11 340/350=12 351=13 352=14 360/370=15 371/382=16 390=17 391/392=18 100/122=19 130=20 132/150=21 151/152=22 160/162=23 171/172=24 180/192=25 200/201=26 210/212=27 220/222=28 400/432=29 440/442=30 450/472=31 500/571=32 580/691=33 700/710=34 711/712=35 761=36 721/750=37 751/760=38 762/791=39 800/810=40 831=41 812/830 832/840=42 842/860=43 861/871=44 841 872/893=45 31/32=46 900/932=52 991=51}; if `1' >= 1994 {replace dind=ind80; recode dind 12/30=1 10/11=2 40/50=3 60=4 230/241=5 242=6 250/262=7 270/280=8 281/300=9 301=10 310/332=11 340/350=12 351=13 352=14 360/370=15 371/382=16 390=17 391/392=18 100/122=19 130=20 132/150=21 151/152=22 160/162=23 171/172=24 180/192=25 200/201=26 210/212=27 220/222=28 400/432=29 440/442=30 450/472=31 500/571=32 580/691=33 700/710=34 711/712=35 761=36 721/750=37 751/760=38 762/791=39 800/810=40 831=41 812/830 832/840=42 842/860=43 861/871=44 841 872/893 =45 032 031 =46 910 922 932 900 901 921 930 931 =52 991=51 }; #delimit cr * Wages (If earnings are 0, then wage rate is missing, not zero). replace paidhr = . if paidhr <=0 replace paidhre = . if paidhre <=0 replace earnhr = . if earnhr <=0 replace earnhre = . if earnhre <=0 replace earnwke = . if earnwke < 0 if `1' < 1989 {replace eligible = 2 if eligible == . } if `1' >= 1989 {replace eligible = 2 if eligible == 0 replace eligible = . if eligible < 0 } if `1' < 1989 {replace I25a = 0 if I25a ==. replace I25b = 0 if I25b ==. replace I25c = 0 if I25c ==. replace I25d = 0 if I25d ==.} if `1' >= 1994 {replace eligible = 0 if eligible ==. replace I25a = 0 if I25a <= 3 replace I25b = 0 if I25b <= 3 *replace I25a = . if I25a < 0 *replace I25b = . if I25b < 0 replace earnhre = . if earnhre ==1 replace uhourse = . if lfsr94 >2 | lfsr94 <1 replace lfsr94 = . if lfsr94 < 0 } if `1' >= 1996 { replace I25c = . if I25c < 0 replace I25d = . if I25d < 0 } if `1' == 1995 { replace I25c = . if I25c < 0 replace I25d = . if I25d < 0 replace I25c = . if intmonth < 9 replace I25d = . if intmonth < 9 } if `1' == 1994 { drop I25c I25d } * Hours, Unions if `1' >= 1994 { replace reason94 = . if reason94< 0 replace absent94 = . if absent94< 0 replace studftpt = . if studftpt< 0 replace ftpt94 = . if ftpt94 < 0 replace hourslw = . if hourslw < 0 replace hourslw = 99 if hourslw >99 & hourslw != . replace uhourse = . if uhourse < 0 replace why3594 = . if why3594 < 0 replace unionmme = . if unionmme< 0 replace unioncov = . if unioncov< 0 } * Save and exit ! /bin/rm -f /home/data/morg/annual/morg`2'.dta compress save /home/data/morg/annual/morg`2',old ! /bin/chmod a+r /home/data/morg/annual/morg*.dta ! /bin/chmod g+w /home/data/morg/annual/morg*.dta ! /bin/chgrp web /home/data/morg/annual/morg*.dta summarize clear ! /bin/rm -f aef.dct /tmp/aef.raw end * Each block of commands does one year of the data. The data must be * decompressed, and possibly have dashes converted to blanks. * Then a dictionary for the particular year is prepared by * concatenating a one line header (with the file name) to a generic * dictionary body that covers several years of data that used the * same format. *Lastly, the data is read, modified, summarized and saved. *aef2 1979 79 79_83 *aef2 1980 80 79_83 *aef2 1981 81 79_83 *aef2 1982 82 79_83 *aef2 1983 83 79_83 *aef2 1984 84 84_88 *aef2 1985 85 84_88 *aef2 1986 86 84_88 *aef2 1987 87 84_88 *aef2 1988 88 84_88 *aef2 1989 89 89_93 *aef2 1990 90 89_93 *aef2 1991 91 89_93 *aef2 1992 92 89_93 *aef2 1993 93 89_93 *aef2 1994 94 94_97 *aef2 1995 95 94_97 *aef2 1996 96 94_97 *aef2 1997 97 94_97 aef2 1998 98 98 *aef2 1999 99 98 *aef2 2000 00 98 *aef2 2001 01 98