PROGRAM READ_TRACKS C PARAMETER(NC=500) INTEGER*2 YYYY,MM,DD,HH INTEGER*2 NTR INTEGER*2 ILAT(NC) INTEGER*2 ILON(NC) INTEGER*2 IPRESS(NC) INTEGER*2 IVORT(NC) INTEGER*2 ICIRC(NC) INTEGER*2 IRAD(NC) INTEGER*2 IWSPD(NC) CHARACTER*72 LINE C Output records INTEGER*4 YEAR,MONTH,DAY,HOUR !of first track point REAL*4 TLAT(NC) REAL*4 TLON(NC) REAL*4 TPRESS(NC) REAL*4 TVORT(NC) REAL*4 TCIRC(NC) REAL*4 TRAD(NC) REAL*4 TWSPD(NC) LOGICAL CLOSED(NC) !open or closed center LOGICAL FOUND C C OPEN DATA FILE C ============================================================================== C OPEN(UNIT=2,NAME='CY_NH.DAT',STATUS='OLD',FORM='FORMATTED',READONLY) READ(2,'(A)')LINE PRINT *,LINE !HEADER INFO READ(2,'(A)')LINE PRINT *,LINE !MORE HEADER INFO IREC=0 N_ERROR=0 100 READ(2,'(I4,4I2,100(2I4,I6,4I5))',END=999,ERR=99)YYYY,MM,DD,HH,NTR,(ILAT(NN), - ILON(NN),IPRESS(NN),IVORT(NN),ICIRC(NN),IRAD(NN),IWSPD(NN),NN=1,NTR) IREC=IREC+1 NTRK=NTR !no. of 12h points in track YEAR=YYYY MONTH=MM DAY=DD HOUR=HH N_INCR=12 !Track points are 12 h apart DO NT=1,NTRK TLAT(NT)=ILAT(NT)/10. !center latitude (pos=NH, neg=SH) TLON(NT)=ILON(NT)/10. !center longitude (0->360) TVORT(NT)=IVORT(NT)*0.01 !center vorticity (10-5 s-1) TCIRC(NT)=ICIRC(NT)*0.01 !center circulation TRAD(NT)=IRAD(NT)*0.01 !radius in deg. lat TWSPD(NT)=IWSPD(NT)*0.01 !max windspeed in cyclone domain IF(IPRESS(NT).LT.0)THEN !center pressure in mb TPRESS(NT)=(IABS(IPRESS(NT))*0.01)+900. CLOSED(NT)=.TRUE. ELSE TPRESS(NT)=(IPRESS(NT)*0.01)+900. CLOSED(NT)=.FALSE. ENDIF END DO C C process this track as desired C Here, I'm outputting tracks that have more than 6 track points and whose C minimum pressure is less than 950 mb that occur between 1990 and 2000 C FOUND=.FALSE. DO NT=1,NTRK IF(TPRESS(NT).LT.950.0)FOUND=.TRUE. END DO IF(NTRK.GT.6.AND.FOUND.AND.YEAR.GE.1990.AND.YEAR.LE.1999)THEN WRITE(*,'(1X,I4.4,3(1X,I2.2),1X,A)')YEAR,MONTH,DAY,HOUR, - ' lat long press vort circ rad wspd ' DO NT=1,NTRK IMIN=0 FLLON=TLON(NT) IF(FLLON.GT.180.)FLLON=FLLON-360. WRITE(*,'(15X,F5.1,1X,F6.1,3X,5F7.2)') - TLAT(NT),FLLON,TPRESS(NT),TVORT(NT),TCIRC(NT), - TRAD(NT),TWSPD(NT) END DO ENDIF C GOTO 100 !get another cyclone track C 99 N_ERROR=N_ERROR+1 GOTO 100 999 PRINT *,'LAST RECORD ',YYYY,MM,DD,HH,NTR PRINT *,'Total # of records read is ',IREC PRINT *,'No. of error records is ',N_ERROR CLOSE(UNIT=2) STOP END C