c c PROGRAM: PUMS.F c c DESCRIPTION: reads census data with the following record layout c c Field Type Size Definition c ----- ---- ---- ---------- c Sex C 1 0 = Male; 1 = Female c Agegrp C 1 0 = Total (15 yrs and over) c 1 = 15 to 24 years c 2 = 25 to 34 years c 3 = 35 to 44 years c 4 = 45 to 54 years c 5 = 55 to 64 years c 6 = 65 to 74 years c 7 = 75 years and over c Mstat C 1 0 = Total c 1 = Single c 2 = Married,spouse present c 3 = Married,s.p.,youngest<6 c 4 = Married,s.p.,youngest 6-17 c 5 = Married,spouse absent c 6 = Widowed c 7 = Divorced c Totpop N 9 Total population (1) c Empl N 9 Number employed (2) c Totpt N 9 Total employed part-time (3) c Hrs1_14 N 9 Employed 1 to 14 hrs/week (4) c Hrs15_29 N 9 Employed 15 to 29 hrs/week (5) c Hrs30_34 N 9 Employed 30 to 34 hrs/week (6) c Totft N 9 Total employed full-time (7) c Hrs35_39 N 9 Employed 35 to 39 hrs/week (8) c Hrs40 N 9 Employed 40 hours (9) c Hrs41_48 N 9 Employed 41 to 48 hrs/week (10) c Hrs49_59 N 9 Employed 49 to 59 hrs/week (11) c Hrs60pl N 9 Employed 60+ hours (12) c Avepearn N 9 Mean personal earned income (13) c c Note: there are 5 files (kh-1950,kh-1960,kh-1970, c kh-1980,kh-1990) with same ordering of rows. c c OUTPUT: pums.out: Tables summarizing hours, employment, c and earnings for various characteristics c (e.g., age, sex, marital status). c c pums.m: Matlab file for making plots c c REFERENCES: Public Use Microsample, Bureau of the Census c c U S. Department of Commerce, Bureau of the Census, c Subject Reports, Employment Status and Work c Experience 1950,1960,1970,1990 c c CONTACTS: Karen Hovermale c Library -- Federal Reserve Bank of Minneapolis c (612) 340-2536 c c Wendy Treadwell c Machine Readable Data Center -- Univ. Minnesota c (612) 624-4389 c c NOTE: Income and wage rate statistics for 1950 are not c compatible with those of 1960-1990. c c c Ellen McGrattan, 8-4-96 c Revised, 11-6-96, ERM * * c Key matrices: c c ryr(i,j) = real-valued characteristics for group i, year yr c j=1: hours per person (hours = reported hours x #empl./#reporting) c j=2: hours per worker c j=3: employed/population c j=4: wages/hour c c iyr(i,j) = integer-valued characteristics for group i, year yr c j=1: total population c j=2: number employed c j=3: number employed 1-14 hours c j=4: number employed 15-29 hours c j=5: number employed 30-34 hours c j=6: number employed 35-39 hours c j=7: number employed 40 hours c j=8: number employed 41-48 hours c j=9: number employed 49-59 hours c j=10: number employed 60+ hours c j=11: number reporting hours c implicit double precision (a-h,o-z) character*1 mlett character*42 label,thead,title character*56 line1 double precision r50(128,6), r60(128,6), r70(128,6), & r80(128,6), r90(128,6), tab(7,5), & tab2(4,5) integer i50(128,11), i60(128,11), i70(128,11), & i80(128,11), i90(128,11), ind(5), & s(128), a(128), m(128) c open(unit=7, file='pums.out') open(unit=8, file='kh-1950') open(unit=9, file='kh-1960') open(unit=10, file='kh-1970') open(unit=11, file='kh-1980') open(unit=12, file='kh-1990') open(unit=14, file='pums.m') c c Read in PUMS data. c do 10 i=1,128 read(8,*) s(i),a(i),m(i),(i50(i,j),j=1,2),i1, & (i50(i,j),j=3,5),i2,(i50(i,j),j=6,10),r50(i,4) read(9,*) i1,i2,i3, (i60(i,j),j=1,2),i4, & (i60(i,j),j=3,5),i5,(i60(i,j),j=6,10),r60(i,4) read(10,*) i1,i2,i3, (i70(i,j),j=1,2),i4, & (i70(i,j),j=3,5),i5,(i70(i,j),j=6,10),r70(i,4) read(11,*) i1,i2,i3, (i80(i,j),j=1,2),i4, & (i80(i,j),j=3,5),i5,(i80(i,j),j=6,10),r80(i,4) read(12,*) i1,i2,i3, (i90(i,j),j=1,2),i4, & (i90(i,j),j=3,5),i5,(i90(i,j),j=6,10),r90(i,4) i50(i,11) = i50(i,3)+i50(i,4)+i50(i,5)+i50(i,6)+i50(i,7)+ & i50(i,8)+i50(i,9)+i50(i,10) i60(i,11) = i60(i,3)+i60(i,4)+i60(i,5)+i60(i,6)+i60(i,7)+ & i60(i,8)+i60(i,9)+i60(i,10) i70(i,11) = i70(i,3)+i70(i,4)+i70(i,5)+i70(i,6)+i70(i,7)+ & i70(i,8)+i70(i,9)+i70(i,10) i80(i,11) = i80(i,3)+i80(i,4)+i80(i,5)+i80(i,6)+i80(i,7)+ & i80(i,8)+i80(i,9)+i80(i,10) i90(i,11) = i90(i,3)+i90(i,4)+i90(i,5)+i90(i,6)+i90(i,7)+ & i90(i,8)+i90(i,9)+i90(i,10) 10 continue c c Add up populations of males and females for each year. c tpop50 = float(i50(1,1)+i50(9,1)) tpop60 = float(i60(1,1)+i60(9,1)) tpop70 = float(i70(1,1)+i70(9,1)) tpop80 = float(i80(1,1)+i80(9,1)) tpop90 = float(i90(1,1)+i90(9,1)) c c Compute variables in ryr matrix. c (NOTE: we define hours for group i as follows: c hours(i) = (7.5*[#emp 1-14](i) + ...+62.5*[#emp 60+](i)) c x #employed(i)/#reporting hours(i) ) c do 20 i=1,128 r50(i,1) = (7.5*float(i50(i,3)) & +22.0*float(i50(i,4)) & +32.0*float(i50(i,5)) & +37.0*float(i50(i,6)) & +40.0*float(i50(i,7)) & +44.5*float(i50(i,8)) & +54.0*float(i50(i,9)) & +62.5*float(i50(i,10))) & * float(i50(i,2))/float(i50(i,11)) r60(i,1) = (7.5*float(i60(i,3)) & +22.0*float(i60(i,4)) & +32.0*float(i60(i,5)) & +37.0*float(i60(i,6)) & +40.0*float(i60(i,7)) & +44.5*float(i60(i,8)) & +54.0*float(i60(i,9)) & +62.5*float(i60(i,10))) & * float(i60(i,2))/float(i60(i,11)) r70(i,1) = (7.5*float(i60(i,3)) & +22.0*float(i70(i,4)) & +32.0*float(i70(i,5)) & +37.0*float(i70(i,6)) & +40.0*float(i70(i,7)) & +44.5*float(i70(i,8)) & +54.0*float(i70(i,9)) & +62.5*float(i70(i,10))) & * float(i70(i,2))/float(i70(i,11)) r80(i,1) = (7.5*float(i80(i,3)) & +22.0*float(i80(i,4)) & +32.0*float(i80(i,5)) & +37.0*float(i80(i,6)) & +40.0*float(i80(i,7)) & +44.5*float(i80(i,8)) & +54.0*float(i80(i,9)) & +62.5*float(i80(i,10))) & * float(i80(i,2))/float(i80(i,11)) r90(i,1) = (7.5*float(i90(i,3)) & +22.0*float(i90(i,4)) & +32.0*float(i90(i,5)) & +37.0*float(i90(i,6)) & +40.0*float(i90(i,7)) & +44.5*float(i90(i,8)) & +54.0*float(i90(i,9)) & +62.5*float(i90(i,10))) & * float(i90(i,2))/float(i90(i,11)) r50(i,2) = r50(i,1)/float(i50(i,2)) r60(i,2) = r60(i,1)/float(i60(i,2)) r70(i,2) = r70(i,1)/float(i70(i,2)) r80(i,2) = r80(i,1)/float(i80(i,2)) r90(i,2) = r90(i,1)/float(i90(i,2)) r50(i,1) = r50(i,1)/float(i50(i,1)) r60(i,1) = r60(i,1)/float(i60(i,1)) r70(i,1) = r70(i,1)/float(i70(i,1)) r80(i,1) = r80(i,1)/float(i80(i,1)) r90(i,1) = r90(i,1)/float(i90(i,1)) r50(i,3) = float(i50(i,2))/float(i50(i,1)) r60(i,3) = float(i60(i,2))/float(i60(i,1)) r70(i,3) = float(i70(i,2))/float(i70(i,1)) r80(i,3) = float(i80(i,2))/float(i80(i,1)) r90(i,3) = float(i90(i,2))/float(i90(i,1)) r50(i,4) = r50(i,4) * 130.7d0/24.1d0 / 52.d0 /r50(i,1) r60(i,4) = r60(i,4) * 130.7d0/29.6d0 / 52.d0 /r60(i,1) r70(i,4) = r70(i,4) * 130.7d0/38.8d0 / 52.d0 /r70(i,1) r80(i,4) = r80(i,4) * 130.7d0/82.4d0 / 52.d0 /r80(i,1) r90(i,4) = r90(i,4) / 52.d0 /r90(i,1) 20 continue line1='--------------------------------------------------------' write(14,'(''iprint = input('',A1,''Print the pictures?'', & A1,''); '')') '\'','\'' write(14,'(''a=15:10:75;'')') do 30 l=1,4 if (l.eq.1) then title = 'TABLE 1. AVERAGE HOURS ' thead = ' Average hours by Age' mlett = 'a' endif if (l.eq.2) then title = 'TABLE 2. HOURS PER WORKER ' thead = ' Hours/Worker by Age ' mlett = 'h' endif if (l.eq.3) then title = 'TABLE 3. EMPLOYMENT/POPULATION ' thead = ' Employment/Population by Age' mlett = 'e' endif if (l.eq.4) then title = 'TABLE 4. WAGE RATE (90$) ' thead = ' Wages/Avg. Hrs. by Age' mlett = 'w' endif write(7,'(A42)') title write(7,*) write(7,*) label='a. TOTAL ' do 40 i=1,7 do 40 j=1,5 tab(i,j) = 0.d0 40 continue do 50 i=1,128 if ((m(i).ne.0).and.(a(i).ne.0) & .and.((m(i).lt.3).or.(m(i).gt.4))) then tab(a(i),1) = tab(a(i),1) + r90(i,l)*float(i90(i,1)) tab(a(i),2) = tab(a(i),2) + r80(i,l)*float(i80(i,1)) tab(a(i),3) = tab(a(i),3) + r70(i,l)*float(i70(i,1)) tab(a(i),4) = tab(a(i),4) + r60(i,l)*float(i60(i,1)) tab(a(i),5) = tab(a(i),5) + r50(i,l)*float(i50(i,1)) endif 50 continue do 60 i=1,7 tab(i,1) = tab(i,1)/float(i90(i+1,1)+i90(i+9,1)) tab(i,2) = tab(i,2)/float(i80(i+1,1)+i80(i+9,1)) tab(i,3) = tab(i,3)/float(i70(i+1,1)+i70(i+9,1)) tab(i,4) = tab(i,4)/float(i60(i+1,1)+i60(i+9,1)) tab(i,5) = tab(i,5)/float(i50(i+1,1)+i50(i+9,1)) 60 continue call table1(tab,label,thead,mlett,0,0,l) do 70 j=0,1 if (j.eq.0) label='b. ALL MALES ' if (j.eq.1) label='c. ALL FEMALES ' do 80 i=1,7 do 80 k=1,5 tab(i,k) = 0.d0 80 continue do 90 i=1,128 if ((s(i).eq.j).and.(m(i).ne.0).and.(a(i).ne.0) & .and.((m(i).lt.3).or.(m(i).gt.4))) then tab(a(i),1) = tab(a(i),1) + r90(i,l)*float(i90(i,1)) tab(a(i),2) = tab(a(i),2) + r80(i,l)*float(i80(i,1)) tab(a(i),3) = tab(a(i),3) + r70(i,l)*float(i70(i,1)) tab(a(i),4) = tab(a(i),4) + r60(i,l)*float(i60(i,1)) tab(a(i),5) = tab(a(i),5) + r50(i,l)*float(i50(i,1)) endif 90 continue if (j.eq.0) then do 100 i=1,7 tab(i,1) = tab(i,1)/float(i90(i+1,1)) tab(i,2) = tab(i,2)/float(i80(i+1,1)) tab(i,3) = tab(i,3)/float(i70(i+1,1)) tab(i,4) = tab(i,4)/float(i60(i+1,1)) tab(i,5) = tab(i,5)/float(i50(i+1,1)) 100 continue else do 110 i=1,7 tab(i,1) = tab(i,1)/float(i90(i+9,1)) tab(i,2) = tab(i,2)/float(i80(i+9,1)) tab(i,3) = tab(i,3)/float(i70(i+9,1)) tab(i,4) = tab(i,4)/float(i60(i+9,1)) tab(i,5) = tab(i,5)/float(i50(i+9,1)) 110 continue endif call table1(tab,label,thead,mlett,j,0,l) 70 continue do 120 j=0,1 do 130 k=1,7 if ((j.eq.0).and.(k.eq.1)) & label='d. SINGLE MALES ' if ((j.eq.0).and.(k.eq.2)) & label='e. MARRIED MALES, SPOUSE PRESENT ' if ((j.eq.0).and.(k.eq.5)) & label='f. MARRIED MALES, SPOUSE ABSENT ' if ((j.eq.0).and.(k.eq.6)) & label='g. WIDOWED MALES ' if ((j.eq.0).and.(k.eq.7)) & label='h. DIVORCED MALES ' if ((j.eq.1).and.(k.eq.1)) & label='i. SINGLE FEMALES ' if ((j.eq.1).and.(k.eq.2)) & label='j. MARRIED FEMALES, SPOUSE PRESENT ' if ((j.eq.1).and.(k.eq.3)) & label='k. MARRIED FEMALES, S.P., YOUNGEST < 6 ' if ((j.eq.1).and.(k.eq.4)) & label='l. MARRIED FEMALES, S.P., YOUNGEST 6-17 ' if ((j.eq.1).and.(k.eq.5)) & label='m. MARRIED FEMALES, SPOUSE ABSENT ' if ((j.eq.1).and.(k.eq.6)) & label='n. WIDOWED FEMALES ' if ((j.eq.1).and.(k.eq.7)) & label='o. DIVORCED FEMALES ' if ( (j.eq.1).or.((j.eq.0).and. & ((k.lt.3).or.(k.gt.4))) ) then do 140 i=1,128 if ((m(i).eq.k).and.(s(i).eq.j).and.(a(i).ne.0)) then tab(a(i),1) = r90(i,l) tab(a(i),2) = r80(i,l) tab(a(i),3) = r70(i,l) tab(a(i),4) = r60(i,l) tab(a(i),5) = r50(i,l) endif 140 continue call table1(tab,label,thead,mlett,j,k,l) endif 130 continue 120 continue write(7,*) write(7,*) 30 continue title = 'TABLE 5. CELL POPULATION/TOTAL POPULATION' thead = ' % Population by Age ' mlett = 'p' write(7,'(A42)') title write(7,*) write(7,*) label='a. TOTAL ' do 150 i=1,7 do 150 j=1,5 tab(i,j) = 0.d0 150 continue do 160 i=1,128 if ((m(i).ne.0).and.(a(i).ne.0) & .and.((m(i).lt.3).or.(m(i).gt.4))) then tab(a(i),1) = tab(a(i),1) + float(i90(i,1))/tpop90 *100.d0 tab(a(i),2) = tab(a(i),2) + float(i80(i,1))/tpop80 *100.d0 tab(a(i),3) = tab(a(i),3) + float(i70(i,1))/tpop70 *100.d0 tab(a(i),4) = tab(a(i),4) + float(i60(i,1))/tpop60 *100.d0 tab(a(i),5) = tab(a(i),5) + float(i50(i,1))/tpop50 *100.d0 endif 160 continue call table1(tab,label,thead,mlett,0,0,l) do 170 j=0,1 if (j.eq.0) label='b. ALL MALES ' if (j.eq.1) label='c. ALL FEMALES ' do 180 i=1,7 do 180 k=1,5 tab(i,k) = 0.d0 180 continue do 190 i=1,128 if ((s(i).eq.j).and.(m(i).ne.0).and.(a(i).ne.0) & .and.((m(i).lt.3).or.(m(i).gt.4))) then tab(a(i),1) = tab(a(i),1) + float(i90(i,1))/tpop90 *100.d0 tab(a(i),2) = tab(a(i),2) + float(i80(i,1))/tpop80 *100.d0 tab(a(i),3) = tab(a(i),3) + float(i70(i,1))/tpop70 *100.d0 tab(a(i),4) = tab(a(i),4) + float(i60(i,1))/tpop60 *100.d0 tab(a(i),5) = tab(a(i),5) + float(i50(i,1))/tpop50 *100.d0 endif 190 continue call table1(tab,label,thead,mlett,j,0,l) 170 continue do 200 j=0,1 do 210 k=1,7 if ((j.eq.0).and.(k.eq.1)) & label='d. SINGLE MALES ' if ((j.eq.0).and.(k.eq.2)) & label='e. MARRIED MALES, SPOUSE PRESENT ' if ((j.eq.0).and.(k.eq.5)) & label='f. MARRIED MALES, SPOUSE ABSENT ' if ((j.eq.0).and.(k.eq.6)) & label='g. WIDOWED MALES ' if ((j.eq.0).and.(k.eq.7)) & label='h. DIVORCED MALES ' if ((j.eq.1).and.(k.eq.1)) & label='i. SINGLE FEMALES ' if ((j.eq.1).and.(k.eq.2)) & label='j. MARRIED FEMALES, SPOUSE PRESENT ' if ((j.eq.1).and.(k.eq.3)) & label='k. MARRIED FEMALES, S.P., YOUNGEST < 6 ' if ((j.eq.1).and.(k.eq.4)) & label='l. MARRIED FEMALES, S.P., YOUNGEST 6-17 ' if ((j.eq.1).and.(k.eq.5)) & label='m. MARRIED FEMALES, SPOUSE ABSENT ' if ((j.eq.1).and.(k.eq.6)) & label='n. WIDOWED FEMALES ' if ((j.eq.1).and.(k.eq.7)) & label='o. DIVORCED FEMALES ' if ( (j.eq.1).or.((j.eq.0).and. & ((k.lt.3).or.(k.gt.4))) ) then do 220 i=1,128 if ((m(i).eq.k).and.(s(i).eq.j).and.(a(i).ne.0)) then tab(a(i),1) = float(i90(i,1))/tpop90 *100.d0 tab(a(i),2) = float(i80(i,1))/tpop80 *100.d0 tab(a(i),3) = float(i70(i,1))/tpop70 *100.d0 tab(a(i),4) = float(i60(i,1))/tpop60 *100.d0 tab(a(i),5) = float(i50(i,1))/tpop50 *100.d0 endif 220 continue call table1(tab,label,thead,mlett,j,k,l) endif 210 continue 200 continue write(7,*) write(7,*) c c Calculate aggregates. c write(7,'(''TABLE 6. AGGREGATE STATISTICS'')') write(7,*) write(7,*) label='a. TOTAL ' write(7,'(A42)') label do 230 i=1,4 do 230 j=1,5 tab2(i,j) = 0.d0 230 continue pop90 = 0.d0 pop80 = 0.d0 pop70 = 0.d0 pop60 = 0.d0 pop50 = 0.d0 do 240 i=1,128 if ( (m(i).gt.0).and.((m(i).lt.3).or.(m(i).gt.4)) & .and.(a(i).ne.0) ) then do 250 l=1,4 tab2(l,1) = tab2(l,1) + r90(i,l)*float(i90(i,1)) tab2(l,2) = tab2(l,2) + r80(i,l)*float(i80(i,1)) tab2(l,3) = tab2(l,3) + r70(i,l)*float(i70(i,1)) tab2(l,4) = tab2(l,4) + r60(i,l)*float(i60(i,1)) tab2(l,5) = tab2(l,5) + r50(i,l)*float(i50(i,1)) 250 continue pop90 = pop90 + float(i90(i,1)) pop80 = pop80 + float(i80(i,1)) pop70 = pop70 + float(i70(i,1)) pop60 = pop60 + float(i60(i,1)) pop50 = pop50 + float(i50(i,1)) endif 240 continue do 260 i=1,4 tab2(i,1) = tab2(i,1)/pop90 tab2(i,2) = tab2(i,2)/pop80 tab2(i,3) = tab2(i,3)/pop70 tab2(i,4) = tab2(i,4)/pop60 tab2(i,5) = tab2(i,5)/pop50 260 continue call table2(tab2) label='b. ALL MALES ' write(7,'(A42)') label do 270 i=1,4 do 270 j=1,5 tab2(i,j) = 0.d0 270 continue pop90 = 0.d0 pop80 = 0.d0 pop70 = 0.d0 pop60 = 0.d0 pop50 = 0.d0 do 280 i=1,128 if ( (s(i).eq.0).and.(m(i).gt.0).and.((m(i).lt.3) & .or.(m(i).gt.4)).and.(a(i).ne.0) ) then do 290 l=1,4 tab2(l,1) = tab2(l,1) + r90(i,l)*float(i90(i,1)) tab2(l,2) = tab2(l,2) + r80(i,l)*float(i80(i,1)) tab2(l,3) = tab2(l,3) + r70(i,l)*float(i70(i,1)) tab2(l,4) = tab2(l,4) + r60(i,l)*float(i60(i,1)) tab2(l,5) = tab2(l,5) + r50(i,l)*float(i50(i,1)) 290 continue pop90 = pop90 + float(i90(i,1)) pop80 = pop80 + float(i80(i,1)) pop70 = pop70 + float(i70(i,1)) pop60 = pop60 + float(i60(i,1)) pop50 = pop50 + float(i50(i,1)) endif 280 continue do 300 i=1,4 tab2(i,1) = tab2(i,1)/pop90 tab2(i,2) = tab2(i,2)/pop80 tab2(i,3) = tab2(i,3)/pop70 tab2(i,4) = tab2(i,4)/pop60 tab2(i,5) = tab2(i,5)/pop50 300 continue call table2(tab2) label='c. ALL FEMALES ' write(7,'(A42)') label do 310 i=1,4 do 310 j=1,5 tab2(i,j) = 0.d0 310 continue pop90 = 0.d0 pop80 = 0.d0 pop70 = 0.d0 pop60 = 0.d0 pop50 = 0.d0 do 320 i=1,128 if ( (s(i).eq.1).and.(m(i).gt.0).and.((m(i).lt.3) & .or.(m(i).gt.4)).and.(a(i).ne.0) ) then do 330 l=1,4 tab2(l,1) = tab2(l,1) + r90(i,l)*float(i90(i,1)) tab2(l,2) = tab2(l,2) + r80(i,l)*float(i80(i,1)) tab2(l,3) = tab2(l,3) + r70(i,l)*float(i70(i,1)) tab2(l,4) = tab2(l,4) + r60(i,l)*float(i60(i,1)) tab2(l,5) = tab2(l,5) + r50(i,l)*float(i50(i,1)) 330 continue pop90 = pop90 + float(i90(i,1)) pop80 = pop80 + float(i80(i,1)) pop70 = pop70 + float(i70(i,1)) pop60 = pop60 + float(i60(i,1)) pop50 = pop50 + float(i50(i,1)) endif 320 continue do 340 i=1,4 tab2(i,1) = tab2(i,1)/pop90 tab2(i,2) = tab2(i,2)/pop80 tab2(i,3) = tab2(i,3)/pop70 tab2(i,4) = tab2(i,4)/pop60 tab2(i,5) = tab2(i,5)/pop50 340 continue call table2(tab2) do 350 j=0,1 do 360 k=1,7 if ( (j.eq.1).or.((j.eq.0).and.((k.lt.3).or.(k.gt.4))))then if ((j.eq.0).and.(k.eq.1)) & label='d. SINGLE MALES ' if ((j.eq.0).and.(k.eq.2)) & label='e. MARRIED MALES, SPOUSE PRESENT ' if ((j.eq.0).and.(k.eq.5)) & label='f. MARRIED MALES, SPOUSE ABSENT ' if ((j.eq.0).and.(k.eq.6)) & label='g. WIDOWED MALES ' if ((j.eq.0).and.(k.eq.7)) & label='h. DIVORCED MALES ' if ((j.eq.1).and.(k.eq.1)) & label='i. SINGLE FEMALES ' if ((j.eq.1).and.(k.eq.2)) & label='j. MARRIED FEMALES, SPOUSE PRESENT ' if ((j.eq.1).and.(k.eq.3)) & label='k. MARRIED FEMALES, S.P., YOUNGEST < 6 ' if ((j.eq.1).and.(k.eq.4)) & label='l. MARRIED FEMALES, S.P., YOUNGEST 6-17 ' if ((j.eq.1).and.(k.eq.5)) & label='m. MARRIED FEMALES, SPOUSE ABSENT ' if ((j.eq.1).and.(k.eq.6)) & label='n. WIDOWED FEMALES ' if ((j.eq.1).and.(k.eq.7)) & label='o. DIVORCED FEMALES ' write(7,'(A42)') label do 370 i=1,4 do 370 l=1,4 tab2(i,l) = 0.d0 370 continue pop90 = 0.d0 pop80 = 0.d0 pop70 = 0.d0 pop60 = 0.d0 pop50 = 0.d0 do 380 i=1,128 if ((s(i).eq.j).and.(m(i).eq.k).and.(a(i).ne.0))then do 390 l=1,4 tab2(l,1) = tab2(l,1) + r90(i,l)*float(i90(i,1)) tab2(l,2) = tab2(l,2) + r80(i,l)*float(i80(i,1)) tab2(l,3) = tab2(l,3) + r70(i,l)*float(i70(i,1)) tab2(l,4) = tab2(l,4) + r60(i,l)*float(i60(i,1)) tab2(l,5) = tab2(l,5) + r50(i,l)*float(i50(i,1)) 390 continue pop90 = pop90 + float(i90(i,1)) pop80 = pop80 + float(i80(i,1)) pop70 = pop70 + float(i70(i,1)) pop60 = pop60 + float(i60(i,1)) pop50 = pop50 + float(i50(i,1)) endif 380 continue do 400 i=1,4 tab2(i,1) = tab2(i,1)/pop90 tab2(i,2) = tab2(i,2)/pop80 tab2(i,3) = tab2(i,3)/pop70 tab2(i,4) = tab2(i,4)/pop60 tab2(i,5) = tab2(i,5)/pop50 400 continue call table2(tab2) endif 360 continue 350 continue write(7,*) write(7,*) write(7,'(''TABLE 7. AGGREGATE HOURS PER PERSON'')') write(7,*) write(7,*) write(7,'(A56)') line1 write(7, &'('' Fixed Fixed'')') write(7, &'(''Year True Weight Hour '')') write(7,'(A56)') line1 do 410 i=1,3 do 410 j=1,5 tab(i,j) = 0.d0 410 continue do 420 i=1,128 if (((m(i).lt.3).or.(m(i).gt.4)).and.(a(i).gt.0). & and.(m(i).gt.0)) then tab(1,1) = tab(1,1) + r90(i,1)*float(i90(i,1))/tpop90 tab(1,2) = tab(1,2) + r80(i,1)*float(i80(i,1))/tpop80 tab(1,3) = tab(1,3) + r70(i,1)*float(i70(i,1))/tpop70 tab(1,4) = tab(1,4) + r60(i,1)*float(i60(i,1))/tpop60 tab(1,5) = tab(1,5) + r50(i,1)*float(i50(i,1))/tpop50 tab(2,1) = tab(2,1) + r90(i,1)*float(i50(i,1))/tpop50 tab(2,2) = tab(2,2) + r80(i,1)*float(i50(i,1))/tpop50 tab(2,3) = tab(2,3) + r70(i,1)*float(i50(i,1))/tpop50 tab(2,4) = tab(2,4) + r60(i,1)*float(i50(i,1))/tpop50 tab(2,5) = tab(2,5) + r50(i,1)*float(i50(i,1))/tpop50 tab(3,1) = tab(3,1) + r50(i,1)*float(i90(i,1))/tpop90 tab(3,2) = tab(3,2) + r50(i,1)*float(i80(i,1))/tpop80 tab(3,3) = tab(3,3) + r50(i,1)*float(i70(i,1))/tpop70 tab(3,4) = tab(3,4) + r50(i,1)*float(i60(i,1))/tpop60 tab(3,5) = tab(3,5) + r50(i,1)*float(i50(i,1))/tpop50 endif 420 continue write(7,'(''1950 |'',3(F11.2,5X))') (tab(i,5),i=1,3) write(7,'(''1960 |'',3(F11.2,5X))') (tab(i,4),i=1,3) write(7,'(''1970 |'',3(F11.2,5X))') (tab(i,3),i=1,3) write(7,'(''1980 |'',3(F11.2,5X))') (tab(i,2),i=1,3) write(7,'(''1990 |'',3(F11.2,5X))') (tab(i,1),i=1,3) write(7,'(A56)') line1 write(7,*) write(7,*) write(7,'(A56)') line1 write(7, &'(''Year | 15-24 25-34 35-44 45-54 55-64 65-74 75-99'')') write(7,'(A56)') line1 do 430 i=1,7 do 430 j=1,5 tab(i,j) = 0.d0 430 continue do 440 k=1,7 pop90 = 0.d0 pop80 = 0.d0 pop70 = 0.d0 pop60 = 0.d0 pop50 = 0.d0 do 450 i=1,128 if (((m(i).lt.3).or.(m(i).gt.4)).and.(a(i).eq.k). & and.(m(i).gt.0)) then tab(k,1) = tab(k,1) + r90(i,1)*float(i90(i,1)) tab(k,2) = tab(k,2) + r80(i,1)*float(i80(i,1)) tab(k,3) = tab(k,3) + r70(i,1)*float(i70(i,1)) tab(k,4) = tab(k,4) + r60(i,1)*float(i60(i,1)) tab(k,5) = tab(k,5) + r50(i,1)*float(i50(i,1)) pop90 = pop90 + float(i90(i,1)) pop80 = pop80 + float(i80(i,1)) pop70 = pop70 + float(i70(i,1)) pop60 = pop60 + float(i60(i,1)) pop50 = pop50 + float(i50(i,1)) endif 450 continue tab(k,1) = tab(k,1)/pop90 tab(k,2) = tab(k,2)/pop80 tab(k,3) = tab(k,3)/pop70 tab(k,4) = tab(k,4)/pop60 tab(k,5) = tab(k,5)/pop50 440 continue write(7,'(''1950 |'',F6.2,6F7.2)') (tab(i,5),i=1,7) write(7,'(''1960 |'',F6.2,6F7.2)') (tab(i,4),i=1,7) write(7,'(''1970 |'',F6.2,6F7.2)') (tab(i,3),i=1,7) write(7,'(''1980 |'',F6.2,6F7.2)') (tab(i,2),i=1,7) write(7,'(''1990 |'',F6.2,6F7.2)') (tab(i,1),i=1,7) write(7,'(A56)') line1 write(7,*) write(7,*) write(7,'(A56)') line1 write(7, &'(''Year | Single M.S.P. M.S.A. Widowed Divorced'')') write(7,'(A56)') line1 do 460 i=1,5 do 460 j=1,5 tab(i,j) = 0.d0 460 continue ind(1) = 1 ind(2) = 2 ind(3) = 5 ind(4) = 6 ind(5) = 7 do 470 k=1,5 k1 = ind(k) pop90 = 0.d0 pop80 = 0.d0 pop70 = 0.d0 pop60 = 0.d0 pop50 = 0.d0 do 480 i=1,128 if ((m(i).eq.k1).and.(a(i).gt.0)) then tab(k,1) = tab(k,1) + r90(i,1)*float(i90(i,1)) tab(k,2) = tab(k,2) + r80(i,1)*float(i80(i,1)) tab(k,3) = tab(k,3) + r70(i,1)*float(i70(i,1)) tab(k,4) = tab(k,4) + r60(i,1)*float(i60(i,1)) tab(k,5) = tab(k,5) + r50(i,1)*float(i50(i,1)) pop90 = pop90 + float(i90(i,1)) pop80 = pop80 + float(i80(i,1)) pop70 = pop70 + float(i70(i,1)) pop60 = pop60 + float(i60(i,1)) pop50 = pop50 + float(i50(i,1)) endif 480 continue tab(k,1) = tab(k,1)/pop90 tab(k,2) = tab(k,2)/pop80 tab(k,3) = tab(k,3)/pop70 tab(k,4) = tab(k,4)/pop60 tab(k,5) = tab(k,5)/pop50 470 continue write(7,'(''1950 |'',5(F7.2,3X))') (tab(i,5),i=1,5) write(7,'(''1960 |'',5(F7.2,3X))') (tab(i,4),i=1,5) write(7,'(''1970 |'',5(F7.2,3X))') (tab(i,3),i=1,5) write(7,'(''1980 |'',5(F7.2,3X))') (tab(i,2),i=1,5) write(7,'(''1990 |'',5(F7.2,3X))') (tab(i,1),i=1,5) write(7,'(A56)') line1 write(7,*) write(7,*) write(7,'(A56)') line1 write(7, &'(''Year | Single M.S.P. M.S.A. Widowed Divorced'')') write(7,'(A56)') line1 do 490 i=1,5 do 490 j=1,5 tab(i,j) = 0.d0 490 continue ind(1) = 1 ind(2) = 2 ind(3) = 5 ind(4) = 6 ind(5) = 7 do 500 k=1,5 k1 = ind(k) pop90 = 0.d0 pop80 = 0.d0 pop70 = 0.d0 pop60 = 0.d0 pop50 = 0.d0 do 510 i=1,128 if ((m(i).eq.k1).and.(a(i).gt.1)) then tab(k,1) = tab(k,1) + r90(i,1)*float(i90(i,1)) tab(k,2) = tab(k,2) + r80(i,1)*float(i80(i,1)) tab(k,3) = tab(k,3) + r70(i,1)*float(i70(i,1)) tab(k,4) = tab(k,4) + r60(i,1)*float(i60(i,1)) tab(k,5) = tab(k,5) + r50(i,1)*float(i50(i,1)) pop90 = pop90 + float(i90(i,1)) pop80 = pop80 + float(i80(i,1)) pop70 = pop70 + float(i70(i,1)) pop60 = pop60 + float(i60(i,1)) pop50 = pop50 + float(i50(i,1)) endif 510 continue tab(k,1) = tab(k,1)/pop90 tab(k,2) = tab(k,2)/pop80 tab(k,3) = tab(k,3)/pop70 tab(k,4) = tab(k,4)/pop60 tab(k,5) = tab(k,5)/pop50 500 continue write(7,'(''1950 |'',5(F7.2,3X))') (tab(i,5),i=1,5) write(7,'(''1960 |'',5(F7.2,3X))') (tab(i,4),i=1,5) write(7,'(''1970 |'',5(F7.2,3X))') (tab(i,3),i=1,5) write(7,'(''1980 |'',5(F7.2,3X))') (tab(i,2),i=1,5) write(7,'(''1990 |'',5(F7.2,3X))') (tab(i,1),i=1,5) write(7,'(A56)') line1 write(7,'(''note: assumes ages 25+'')') write(7,*) write(7,*) write(7,*) write(7,*) write(7,'(''TABLE 8. AGGREGATE HOURS PER WORKER'')') write(7,*) write(7,*) write(7,'(A56)') line1 write(7, &'('' Fixed Fixed'')') write(7, &'(''Year True Weight Hour '')') write(7,'(A56)') line1 do 520 i=1,3 do 520 j=1,5 tab(i,j) = 0.d0 520 continue do 530 i=1,128 if (((m(i).lt.3).or.(m(i).gt.4)).and.(a(i).gt.0). & and.(m(i).gt.0)) then tab(1,1) = tab(1,1) + r90(i,2)*float(i90(i,1))/tpop90 tab(1,2) = tab(1,2) + r80(i,2)*float(i80(i,1))/tpop80 tab(1,3) = tab(1,3) + r70(i,2)*float(i70(i,1))/tpop70 tab(1,4) = tab(1,4) + r60(i,2)*float(i60(i,1))/tpop60 tab(1,5) = tab(1,5) + r50(i,2)*float(i50(i,1))/tpop50 tab(2,1) = tab(2,1) + r90(i,2)*float(i50(i,1))/tpop50 tab(2,2) = tab(2,2) + r80(i,2)*float(i50(i,1))/tpop50 tab(2,3) = tab(2,3) + r70(i,2)*float(i50(i,1))/tpop50 tab(2,4) = tab(2,4) + r60(i,2)*float(i50(i,1))/tpop50 tab(2,5) = tab(2,5) + r50(i,2)*float(i50(i,1))/tpop50 tab(3,1) = tab(3,1) + r50(i,2)*float(i90(i,1))/tpop90 tab(3,2) = tab(3,2) + r50(i,2)*float(i80(i,1))/tpop80 tab(3,3) = tab(3,3) + r50(i,2)*float(i70(i,1))/tpop70 tab(3,4) = tab(3,4) + r50(i,2)*float(i60(i,1))/tpop60 tab(3,5) = tab(3,5) + r50(i,2)*float(i50(i,1))/tpop50 endif 530 continue write(7,'(''1950 |'',3(F11.2,5X))') (tab(i,5),i=1,3) write(7,'(''1960 |'',3(F11.2,5X))') (tab(i,4),i=1,3) write(7,'(''1970 |'',3(F11.2,5X))') (tab(i,3),i=1,3) write(7,'(''1980 |'',3(F11.2,5X))') (tab(i,2),i=1,3) write(7,'(''1990 |'',3(F11.2,5X))') (tab(i,1),i=1,3) write(7,'(A56)') line1 write(7,*) write(7,*) write(7,*) write(7,*) stop end subroutine table1(tab,label,thead,mlett,j,k,l) implicit double precision (a-h,o-z) character*1 mlett character*7 inf1 character*14 inf2 character*21 inf3 character*28 inf4 character*35 inf5 character*42 inf6,label,thead character*56 line1,line2,line3 double precision tab(7,5) inf1 =' inf' inf2 =' inf inf' inf3 =' inf inf inf' inf4 =' inf inf inf inf' inf5 =' inf inf inf inf inf' inf6 =' inf inf inf inf inf inf' line1='--------------------------------------------------------' line2=' Age ------------------------------------------------' line3='in 50 15-24 25-34 35-44 45-54 55-64 65-74 75-99' write(7,'(A42)') label write(7,'(A56)') line1 write(7,'(A42)') thead write(7,'(A56)') line2 write(7,'(A56)') line3 write(7,'(A56)') line1 write(7,'(''-25:-16'', 5F7.2)') tab(1,1) write(7,'(''-15: -6'', 5F7.2)') tab(1,2),tab(2,1) write(7,'('' -5: 4'', 5F7.2)') tab(1,3),tab(2,2),tab(3,1) write(7,'('' 5: 14'', 5F7.2)') tab(1,4),tab(2,3),tab(3,2), & tab(4,1) write(7,'('' 15: 24'', 5F7.2)') tab(1,5),tab(2,4),tab(3,3), & tab(4,2),tab(5,1) write(7,'('' 25: 34'', 7X,5F7.2)') tab(2,5),tab(3,4), & tab(4,3),tab(5,2),tab(6,1) write(7,'('' 35: 44'',14X,5F7.2)') tab(3,5),tab(4,4), & tab(5,3),tab(6,2),tab(7,1) write(7,'('' 45: 54'',21X,5F7.2)') tab(4,5),tab(5,4), & tab(6,3),tab(7,2) write(7,'('' 55: 64'',28X,5F7.2)') tab(5,5),tab(6,4),tab(7,3) write(7,'('' 65: 74'',35X,5F7.2)') tab(6,5),tab(7,4) write(7,'('' 75: 99'',42X,5F7.2)') tab(7,5) write(7,'(A56)') line1 write(7,*) write(7,*) write(14,'(A1,I1,I1,''=[ ... '')') mlett,j,k write(14,'( F9.2,A42)') tab(1,1),inf6 write(14,'(2F9.2,A35)') tab(1,2),tab(2,1),inf5 write(14,'(3F9.2,A28)') tab(1,3),tab(2,2),tab(3,1),inf4 write(14,'(4F9.2,A21)') tab(1,4),tab(2,3),tab(3,2),tab(4,1),inf3 write(14,'(5F9.2,A14)') tab(1,5),tab(2,4),tab(3,3),tab(4,2), & tab(5,1),inf2 write(14,'(A7,5F9.2,A7)') inf1,tab(2,5),tab(3,4), & tab(4,3),tab(5,2),tab(6,1),inf1 write(14,'(A14,5F9.2)') inf2,tab(3,5),tab(4,4),tab(5,3), & tab(6,2),tab(7,1) write(14,'(A21,4F9.2)') inf3,tab(4,5),tab(5,4),tab(6,3), & tab(7,2) write(14,'(A28,3F9.2)') inf4,tab(5,5),tab(6,4),tab(7,3) write(14,'(A35,2F9.2)') inf5,tab(6,5),tab(7,4) write(14,'(A42, F9.2)') inf6,tab(7,5) write(14,'(''];'')') write(14,'(''plot(a,'',A1,I1,I1,'')'')') mlett,j,k write(14,'(''title('',A1,A42,A1,'')'')') '\'',label,'\'' write(14,'(''xlabel('',A5,'')'')') '\'age\'' write(14,'(''ylabel('',A1,A42,A1,'')'')')'\'',thead,'\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(1,:),'',A3,'')'')') & mlett,j,k,'\'0\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(2,:),'',A3,'')'')') & mlett,j,k,'\'1\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(3,:),'',A3,'')'')') & mlett,j,k,'\'2\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(4,:),'',A3,'')'')') & mlett,j,k,'\'3\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(5,:),'',A3,'')'')') & mlett,j,k,'\'4\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(6,:),'',A3,'')'')') & mlett,j,k,'\'5\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(7,:),'',A3,'')'')') & mlett,j,k,'\'6\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(8,:),'',A3,'')'')') & mlett,j,k,'\'7\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(9,:),'',A3,'')'')') & mlett,j,k,'\'8\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(10,:),'',A3,'')'')') & mlett,j,k,'\'9\'' write(14,'(''text(a-.5,'',A1,I1,I1,''(11,:),'',A4,'')'')') & mlett,j,k,'\'10\'' if (l.eq.1) write(14,'(''axis([10,80,0,43])'')') if (l.eq.2) write(14,'(''axis([10,80,24,46])'')') if (l.eq.3) write(14,'(''axis([10,80,0,1])'')') if (l.eq.4) write(14,'(''axis([10,80,0,30])'')') write(14,'(''grid'')') write(14,'(''if iprint==1;'')') write(14,'('' print -deps temp'')') write(14,'('' !lpr temp.eps'')') write(14,'(''end'')') write(14,'(''pause(5)'')') return end subroutine table2(tab2) double precision tab2(4,5) character*56 line1,head1,head2 line1='--------------------------------------------------------' head1=' Average Hours/ Employment/ Wage ' head2='Year Hours Worker Population Rate ' write(7,'(A56)') line1 write(7,'(A56)') head1 write(7,'(A56)') head2 write(7,'(A56)') line1 write(7,'(''1950 |'',F8.2,3F12.2)') (tab2(i,5),i=1,4) write(7,'(''1960 |'',F8.2,3F12.2)') (tab2(i,4),i=1,4) write(7,'(''1970 |'',F8.2,3F12.2)') (tab2(i,3),i=1,4) write(7,'(''1980 |'',F8.2,3F12.2)') (tab2(i,2),i=1,4) write(7,'(''1990 |'',F8.2,3F12.2)') (tab2(i,1),i=1,4) write(7,'(A56)') line1 write(7,*) write(7,*) return end