implicit none character*1 head character*5 tow(2) character*300 inline, inline2 integer i, j, month, day, year, hour, minute real TTEMP10(2), TEMP30(2), TEMP10F(2), TEMP30F(2), DTEMP30(2), - REL_HUM(2), WDIR10M(2), WDIR30M(2), VWDIR10(2), VWDIR30(2), - WS10MS(2), WS30MS(2), WSPD10(2), WSPD30(2), VWSPD10(2), - VWSPD30(2), PKWS10Q(2), PKWS30Q(2), Rdata(40), Rain(2) Real STAB, WDrStd10, WDrStd30, WdrStd100 data tow/'TOWA ','TOWB '/ open(10,file='TowAB_15.txt') read(10,*) head read(10,'(a)') inline2 if (inline2(16:16) .eq. ',') then read(inline2,'(i2,2(1x,i2),2x,2(i2,1x),a)') - month, day, year, hour, minute,inline else read(inline2,'(i2,2(1x,i2),2x,i1,1x,i2,1x,a)') - month, day, year, hour, minute,inline endif close(10) Call readL(inline, rData) j = 0 do i = 1, 2 TTEMP10(i) = Rdata(1+j) TEMP30(i) = Rdata(2+j) TEMP10F(i) = Rdata(3+j) TEMP30F(i) = Rdata(4+j) DTEMP30(i) = Rdata(5+j) REL_HUM(i) = Rdata(6+j) WDIR10M(i) = Rdata(7+j) WDIR30M(i) = Rdata(8+j) VWDIR10(i) = Rdata(9+j) VWDIR30(i) = Rdata(10+j) WS10MS(i) = Rdata(11+j) WS30MS(i) = Rdata(12+j) WSPD10(i) = Rdata(13+j) WSPD30(i) = Rdata(14+j) VWSPD10(i) = Rdata(15+j) VWSPD30(i) = Rdata(16+j) PKWS10Q(i) = Rdata(17+j) PKWS30Q(i) = Rdata(18+j) j = 20 end do Rain(1) = Rdata(19) Rain(2) = -999.99 open(20,file='TowABout.txt') do i = 1, 2 write(20,'(a5,3i2.2,1x,2i2.2,23f8.2,a)') - Tow(i), month, day, year, hour, minute, - WDIR10M(i), WDIR30M(i), -999.99, -999.99, WSPD10(i), - WSPD30(i), -999.99, -999.99, TEMP10F(i), TEMP30F(i), - -999.99, -999.00, REL_HUM(i), - (-999.99, j = 1,7), Rain(i), (-999.99,j=1,2), ' 0015 00015' end do close(20) stop end c------------------------------------------ subroutine readL(inline, rData) implicit none integer i, l, iStart, iEnd, ios real rData(100) character*250 inline character*10 cDum i = 1 do while (i .le. 250) if (inline(i:i) .ne. ' ') then l = i endif i = i+1 end do i = 1 iStart = 1 iEnd = 2 do while (iEnd .lt. l .and. i .le. 100) if (inline(iend:iend) .eq. ',') then iEnd = iEnd - 1 cDum = inline(iStart:iStart+2) if (cDum .eq. 'N/A' .or. - cDum .eq. 'INV') then rData(i) = -999.99 else cDum = inline(iStart:iEnd) read(cDum,'(f10.0)', iostat=ios) rdata(i) if (ios .ne. 0) then rdata(i) = -999.99 Endif End if i = i + 1 iStart = iEnd + 2 iEnd = iStart else iEnd = iEnd + 1 Endif end do return end