program vel_hr_read c c This program reads TAO anonymous FTP ascii-format velocity c files, for example 0n110w_hr.vel. It creates an arrays called c uvel and vvel, which are evenly spaced in time, and arrays c called iuqual and ivqual which contains the data quality c for each depth and time. c c You can easily adapt this program to your needs. c c Programmed by Dai McClurg, NOAA/PMEL/OCRD, April 1999 c integer nz, nt parameter(nz = 30, nt = 100000) c integer k, n, m c integer nblock, nk, ndep, nn, nhour, n1, n2 c integer kdep(nz), iuqual(nz,nt), ivqual(nz,nt) integer idate(nt), ihour(nt), idep(nz) c real flag, depth(nz), uvel(nz,nt), vvel(nz,nt) c character infile*80, header*132 c c ....................................................................... c write(*,*) ' Enter the input hourly current file name ' read(*,'(a)') infile c open(1,file=infile,status='old',form='formatted') c c Read total number of data, depths, and blocks c read(1,10) nhour, ndep, nblock 10 format(63x,i7,7x,i3,8x,i3) c write(*,*) nhour, ndep, nblock c c Read the missing data flag c read(1,20) flag 20 format(39x,f9.2) c write(*,*) flag c c Initialize t array to flag and iqual array to 5. c do k = 1, nz do n = 1, nt uvel(k,n) = flag vvel(k,n) = flag iuqual(k,n) = 5 ivqual(k,n) = 5 enddo enddo c c Read the data c do m = 1, nblock read(1,30) n1, n2, nn, nk read(1,40) (kdep(k),k=1,nk) read(1,50) (idep(kdep(k)),k=1,nk) do k = 1, nk depth(kdep(k)) = real(idep(kdep(k))) enddo read(1,'(a)') header do n = n1, n2 read(1,60) idate(n), ihour(n), . (uvel(kdep(k),n),vvel(kdep(k),n),k=1,nk), . (iuqual(kdep(k),n),ivqual(kdep(k),n),k=1,nk) enddo enddo c 30 format(55x,i8,3x,i8,x,i8,7x,i3) 40 format(17x,(i7,7x)) 50 format(17x,(i7,7x)) c 60 format(x,i8,x,i6,x,(2f7.2),x,(2i1)) c close(1) c c Write out the depth, temperature, and quality arrays to the c standard output c write(*,*) 'depth = ', (depth(k),k=1,ndep) c c For some files this statement may be too long for your max output c record length on your terminal. If so, comment out these lines. c do n = 1, nhour write(*,70) idate(n), ihour(n), . (uvel(k,n),vvel(k,n),k=1,ndep), . (iuqual(k,n),ivqual(k,n),k=1,ndep), n enddo c 70 format(x,i8,x,i6,x,(2f7.2),x,(2i1),i8) c end