Bob: I am sending you an exabyte tape via regular mail with tigcm data from the July, 1982 run. There are 4 files on the tape, one for each of the fields T, O, O2, and N2. Each file is 175673425 bytes, with record lengths 80 bytes, 100 logical records per physical block. (i.e., 8000 byte blocks). Its all ascii data. The files are also on the NCAR mss (mass store) system. Each file (each field) contains data from the tigcm 3-d spatial grid for all 193 histories (hourly from day 9 (July 9) through day 16 (July 16) plus one history for ut 0, day 17). The files are organized as follows: For each of the 25 pressure levels (-7 to +5 by .5) there is a header as follows: /ROBLE/RGR93/TIJST1 N2 Frame 1 FIELD N2 ZP= -7.0 MTIME= 9 0 0 nx= 73 xx (LONGITUDE)= -0.18000E+03 -0.17500E+03 -0.17000E+03 -0.16500E+03 -0.16000E+03 -0.15500E+03 -0.15000E+03 -0.14500E+03 -0.14000E+03 -0.13500E+03 -0.13000E+03 -0.12500E+03 -0.12000E+03 -0.11500E+03 -0.11000E+03 -0.10500E+03 -0.10000E+03 -0.95000E+02 -0.90000E+02 -0.85000E+02 -0.80000E+02 -0.75000E+02 -0.70000E+02 -0.65000E+02 -0.60000E+02 -0.55000E+02 -0.50000E+02 -0.45000E+02 -0.40000E+02 -0.35000E+02 -0.30000E+02 -0.25000E+02 -0.20000E+02 -0.15000E+02 -0.10000E+02 -0.50000E+01 0.00000E+00 0.50000E+01 0.10000E+02 0.15000E+02 0.20000E+02 0.25000E+02 0.30000E+02 0.35000E+02 0.40000E+02 0.45000E+02 0.50000E+02 0.55000E+02 0.60000E+02 0.65000E+02 0.70000E+02 0.75000E+02 0.80000E+02 0.85000E+02 0.90000E+02 0.95000E+02 0.10000E+03 0.10500E+03 0.11000E+03 0.11500E+03 0.12000E+03 0.12500E+03 0.13000E+03 0.13500E+03 0.14000E+03 0.14500E+03 0.15000E+03 0.15500E+03 0.16000E+03 0.16500E+03 0.17000E+03 0.17500E+03 0.18000E+03 ny= 36 yy (LATITUDE)= -0.87500E+02 -0.82500E+02 -0.77500E+02 -0.72500E+02 -0.67500E+02 -0.62500E+02 -0.57500E+02 -0.52500E+02 -0.47500E+02 -0.42500E+02 -0.37500E+02 -0.32500E+02 -0.27500E+02 -0.22500E+02 -0.17500E+02 -0.12500E+02 -0.75000E+01 -0.25000E+01 0.25000E+01 0.75000E+01 0.12500E+02 0.17500E+02 0.22500E+02 0.27500E+02 0.32500E+02 0.37500E+02 0.42500E+02 0.47500E+02 0.52500E+02 0.57500E+02 0.62500E+02 0.67500E+02 0.72500E+02 0.77500E+02 0.82500E+02 0.87500E+02 [data for (73,36) array starts here] This gives the history volume name, the field, frame number (ignore), a label giving field name, pressure level, and model time (day hour min), the grid longitudes (xx), and grid latitudes (yy). Following this, the data is written from an array (73,36), so longitude is varying first. I know the lat,lon grid stuff is redundant, but I adapted this from previously written code for another purpose and did'nt bother to take it out. So there are 25 of these "blocks" (hdr+data) before the mtime advances by 1 hour. Obviously, your strategy will be to read these data once, and write out appropriate binary files for your own use. (I do not need the exabyte tape returned). Below is an example fortran program that shows how you can read these files. Good luck -- let me know if you need more help. I will work on the video in the meantime. Let me know that you have received this message. --Ben program rdgrid c character*40 fname character*80 histvol,field,lab,labx,laby dimension xx(100),yy(100),f(100,100) data lurd/9/ c do 200 iii=1,1000 write(6,"(' ')") write(6,"('Enter file name (zzz to stop): ',$)") read(5,*) fname if (fname(1:3).eq.'zzz') stop 'bye' open(lurd,file=fname,status='OLD',err=901) c c Read data from each "frame" (pressure level): c 100 continue read(lurd,"(a)",end=900) histvol read(lurd,"(a)") field read(lurd,"(6x,i4)") iframe read(lurd,"(a)") lab read(lurd,"(a)") labx read(labx,"(3x,i4)") nx if (nx.gt.1) read(lurd,"(6e13.5)") (xx(i),i=1,nx) read(lurd,"(a)") laby read(laby,"(3x,i4)") ny if (ny.gt.1) read(lurd,"(6e13.5)") (yy(i),i=1,ny) c if (nx.gt.1.and.ny.gt.1) then read(lurd,"(6e13.5)") ((f(i,ii),i=1,nx),ii=1,ny) elseif (nx.eq.1.and.ny.gt.1) then read(lurd,"(6e13.5)") (f(1,i),i=1,ny) elseif (ny.eq.1.and.nx.gt.1) then read(lurd,"(6e13.5)") (f(i,1),i=1,nx) endif nfr = nfr+1 c write(6,"(' ')") write(6,"(a)") histvol(1:lenstr(histvol)) write(6,"(a)") field(1:lenstr(field)) write(6,"('Frame ',i4)") iframe write(6,"(a)") lab(1:lenstr(lab)) c [can process f here for current pressure level and model time] goto 100 c 900 continue write(6,"('EOF encountered on file ',a,' (lu ',i3,')')") + fname,lurd close(lurd) goto 200 901 write(6,"('Error opening file ',a)") fname 200 continue stop end c function lenstr(str) character*(*) str c c Return index to last non-blank char in str c length = len(str) do i=length,1,-1 if (str(i:i).ne.' ') then lenstr = i return endif enddo lenstr = 0 return end c subroutine clearstr(str) c c Set given string to all blanks c character*(*) str length = len(str) do i=1,length str(i:i) = ' ' enddo return end