Data are stored in ASCII All values are integers Pressures are stored as hectapascals (hPa) * 100 The day, month and year are stored at the start of each day. Data Array (25x10) Item (1,1) stores the value for the 5-deg-area centred at 70W and 70N Item (25,10) stores the value for the 5-deg-area centred at 50E and 25N ----- ----- ----- | | | | | YR | MON | DAY | |_____|_____|_____|_____________________________ 70N |(1,1) | | | | | | | | | | | 25N |(1,10)_________________________________(25,10)| 70W 50E -------------------------------------------------------------------- The following Fortran will read the data Sample code: implicit none integer nyr,fix parameter (nyr = 154) parameter(fix=1849) integer nlat, nlon parameter(nlon=25,nlat=10) integer n_month, ndays parameter (n_month=12) integer idata(nlon,nlat) integer ilat, ilon integer iyear, imonth real gd(nlon,nlat) integer HEADER(3) integer jmon(12) data jmon/31,28,31,30,31,30,31,31,30,31,30,31/ integer ndays, itest logical leapyear integer iy,im,k, yr !- - - - - - - - - - open(10,file='emulate_3.2_1850-2003.asc', & status='old',form='formatted') do iy=1,nyr yr = fix + iy do im=1,n_month leapyear=.true. itest = 1996 - iy if (mod(itest,4).ne.0) leapyear=.false. if (iy.eq.1900) leapyear=.false. if(im.ne.2) then ndays = jmon(im) elseif(im.eq.2) then ndays = jmon(im) if (leapyear) ndays=jmon(im) + 1 endif do k=1,ndays read(10,'(3i7)',err=888,end=999)header PRINT*,'YEAR: ',HEADER(1),' MONTH: ',HEADER(2), ' DAY: ', & HEADER(3) read(10,'(25i8)',err=888,end=999)idata do ilat=1,nlat do ilon=1,nlon gd(ilon,ilat)=(idata(ilon,ilat)*0.01) enddo enddo ! assign values to array .... enddo enddo enddo go to 300 888 stop 'error' 999 stop'eof' end