C C GETSTM - Get Storms retrieves storm tracks from the binary C storm tracks file (stormtracks.bin), for a given C date range, and generates an ASCII text file C (st_report.txt). C DIMENSION AGRID(3,40) DIMENSION MONS(12) DATA MONS / 31,28,31,30,31,30,31,31,30,31,30,31 / C C OPEN(10,FILE='stormtracks.bin',IOSTAT=IOK,ACCESS='SEQUENTIAL', * FORM='UNFORMATTED') IF(IOK.NE.0) THEN WRITE(6,*) 'Error opening stormtracks.bin - processing halted' STOP END IF C OPEN(20,FILE='st_report.txt',IOSTAT=IOK,ACCESS='SEQUENTIAL', * FORM='FORMATTED') IF(IOK.NE.0) THEN WRITE(6,*) 'Error opening st_report.txt - processing halted' STOP END IF C CALL SYSTEM('clear') WRITE(6,*) ' ' WRITE(6,*) 'Enter date range for storm tracks retrieval' WRITE(6,*) ' YYYYMMDD YYYYMMDD ' WRITE(6,*) ' ' READ(5,*) NB, NF IF(NF.LT.NB) THEN WRITE(6,*) 'Invalid date range ',NB,NF WRITE(6,*) 'Processing Halted' END IF NSWT = 0 C 10 CONTINUE CCC READ(10,NUM=KBYTS,END=300) NKEY,NS READ(10,END=300) NKEY,NS NDATE = NKEY/100 ccc write(6,*) 'Read NKEY NS ',NKEY,NS,NDATE IF(NSWT.EQ.1) GO TO 20 C C Check to see if we're within specified date range yet C IF(NB.LE.NDATE) THEN NSWT=1 WRITE(6,*) 'Found beginning of date range ',NDATE GO TO 20 END IF GO TO 10 C C Check to see if we're still within specified date range C 20 CONTINUE ccc write(6,*) 'At 20 ',nf,ndate IF(NF.LT.NDATE) GO TO 40 C C Report these storms C NHRS = NKEY-(NDATE*100) NYYMM = NDATE/100 NDYS = NDATE-(NYYMM*100) NYRS = NYYMM/100 MTHS = NYYMM-(NYRS*100) IF(MOD(NYRS,4).EQ.0) THEN MONS(2)=29 ELSE MONS(2)=28 END IF WRITE(20,100) NYRS,MTHS,NDYS,NHRS,NS C DO 30 I=1,NS CCC READ(10,NUM=KBYTS,END=310) NT,AGRID READ(10,END=310) NT,(AGRID(M,1),M=1,NT*3) NYR = NYRS MTH = MTHS NDY = NDYS NHR = NHRS DO 25 J=1,NT CCC WRITE(20,110) I,J,AGRID(2,J),AGRID(1,J),AGRID(3,J) WRITE(20,120) I,J,AGRID(2,J),AGRID(1,J),AGRID(3,J), * NYR,MTH,NDY,NHR C NHR=NHR+12 IF(NHR.GT.12) THEN NHR=0 NDY=NDY+1 IF(NDY.GT.MONS(MTH)) THEN NDY=1 MTH=MTH+1 IF(MTH.GT.12) THEN MTH=1 NYR=NYR+1 IF(MOD(NYR,4).EQ.0) THEN MONS(2)=29 ELSE MONS(2)=28 END IF END IF END IF END IF 25 CONTINUE 30 CONTINUE C GO TO 10 C C Finished C 40 CONTINUE CLOSE(10) CLOSE(20) STOP 100 FORMAT(1X,I4,'/',I2.2,'/',I2.2,2X,I2.2,3X, * 'Number of Storms Begun ',I2) 110 FORMAT(1X,4X,I2,2X,I2,3X,F7.2,2X,F6.2,3X,F7.2) 120 FORMAT(1X,4X,I2,2X,I2,3X,F7.2,2X,F6.2,3X,F7.2,4X, * I4,'/',I2.2,'/',I2.2,2X,I2.2) C 300 CONTINUE C C IF EOF REACHED BECAUSE OF REQUESTED DATE THEN C STOP WITHOUT ERROR MESSAGE. C IF(NF.GE.19981229) THEN CLOSE(10) CLOSE(20) STOP END IF C WRITE(6,*) 'Error Reading Input File - Processing Halted' ccc write(6,*) 'KEY NS ',KEY,NS CLOSE(10) CLOSE(20) STOP 300 C 310 CONTINUE WRITE(6,*) 'Error Reading Input File - Processing Halted' ccc write(6,*) 'I NS NT ',I,NS,NT CLOSE(10) CLOSE(20) STOP 310 C END