program rd2921 c c This is to read the DS292.1 "Climatological Data for Clouds over the c Globe from Surface Observations, 1982-1991 (Total Cloud Edition)" c c character*72 inf character*80 one logical endfile integer*4 mgrp,nbxs,size,lo,imoon,year,sn,time,type,fmt c integer*4 box,nlsta,nobs,idn,lob,nsn,nt,nyrs,span c real clat,clon,frl,amt,sd,fq c real phase,smp,vaf,avg,iav,trnd,unc c write(*,*) 'enter input file? ' read(*,'(a)') inf irecl=24 indev=1 endfile=.false. mrec=0 open(unit=indev, file=inf) do while (.not. endfile) read(indev,'(a)',end=900,err=999) one(1:irecl) mrec=mrec+1 write(*,'(a)') ' '//one(1:irecl) read(one,'(2i4,i2,i1,i1,i4,4i2)') & mgrp,nbxs,size,lo,imoon,year,sn,time,type,fmt do i=1,nbxs c read(indev,'(a)',end=900,err=999) one(1:irecl) if(fmt.eq.10) then read(indev,10,end=900,err=999) box,clat,clon,frl,nlsta elseif (fmt.eq.22) then read(indev,20,end=900,err=999) box,nobs,amt,sd,idn,lob,nsn elseif (fmt.eq.32) then read(indev,30,end=900,err=999) box,nobs,fq,sd,idn,lob,nsn elseif (fmt.eq.40 .or. fmt.eq.41 .or. fmt.eq.42) then read(indev,40,end=900,err=999) box,phase,amp,vaf,nt,avg elseif (fmt.eq.51 .or. fmt.eq.52) then read(indev,50,end=900,err=999) box,nyrs,span,iav,trnd,unc else write(*,*) '****ERROR in fmt at rec ,',fmt,mrec call exit(0) endif mrec=mrec+1 enddo enddo 10 format(i4,f5.2,f5.2,f5.4,i5) ! lat,lon, land-fraction,.. 20 format(i4,i6,f5.2,f4.1,i2,i1,i2) ! total cloud 30 format(i4,i6,f5.2,f4.1,i2,i1,i2) ! weather types 40 format(i4,f5.2,f5.2,f4.1,i2,f4.1) ! harmonic anayses 50 format(i4,i2,i2,f5.2,f6.3,f5.3) ! interannual variations and trends 900 continue write(*,*) 'All Done, records read = ',mrec close(unit=indev) stop 999 continue write(*,*) '****ERROR during read, ',mrec stop end