<br />READ(5,*)IP
<br />OUTFILE=OUTFILEO(IP)
<br />OUTFILE(10:12)=NSTA
<br />OPEN(3,FILE=OUTFILE,STATUS='UNKNOWN',RECL=464,FORM='UNFORMATTED'
<br />+,ACCESS='DIRECT')
<br />REWIND 1
<br />C date recycle point
<br />15 READ(1,16,ERR=50)INFILE
<br />16 FORMAT(39X,A12)
<br />WRITE(6,*)INFILE,IP
<br />CLOSE (2)
<br />OPEN(2,FILE=INFILE,STATUS='OLD',RECL=460,FORM='UNFORMATTED'
<br />+,IOSTAT=IER,ACCESS='DIRECT')
<br />IF(IER.NE.0)WRITE(6,*)IER, ': can not open ',INFILE
<br />C initial scan for echo coverage
<br />JP=4
<br />IF(IP.LT.4)THEN
<br />KNT=O
<br />DO 18 L=1,360
<br />READ(2 ,REC=L,ERR=15) LN entire radial
<br />DO 18 KM=1,230
<br />K=2*KM-1
<br />L1=LN(K)
<br />IF(Ll.LT.0)L1=L1+256
<br />L2=LN(K+1)
<br />IF(L2.LT.0)L2=L2+256
<br />LIN=L1*256+L2 ! reverse byte order
<br />IF (LIN.GT.0)KNT=KNT+1
<br />18 CONTINUE
<br />IF(KNT.LT.20000)JP=1
<br />IF(KNT.GE.20000.AND.KNT.LT.50000)JP=2
<br />IF(KNT.GE.50000)JP=3
<br />ENDIF ! for coverage partitioning
<br />IF(JP.NE.IP)GOTO 15 ! for a different date; wrong partition
<br />C get precip echo characteristics
<br />DO 30 L=1,360
<br />READ(2,REC=L,ERR=15)LN ! entire radial
<br />DO 20 KM=l,230 ! ranges
<br />K=2*KM-1
<br />L1=LN(K)
<br />IF(L1.LT.0)L1=L1+256
<br />L2=LN(K+1)
<br />IF(L2.LT.0)L2=L2+256
<br />LIN=L1*256+L2 ! reverse byte order
<br />IF(LIN.EQ.O)MINX(L,KM)=O
<br />IF(LIN.GT.O)THEN
<br />X=LIN
<br />SX(L,KM)=SX(L,KM)+X ! sum of non-zero values
<br />SX2(L,KM)=SX2(L,KM)+X*X ! sum of squares
<br />NX(L,KM)=NX(L,KM)+l
<br />MINX(L,KM)=MINO(MINX(L,KM),LIN)
<br />MAXX(L,KM)=MAXO(MAXX(L,KM),LIN)
<br />ENDIF
<br />20 CONTINUE ! range loop
<br />30 CONTINUE ! azimuth loop
<br />GOTO 15 ! for another date
<br />C summary after last file
<br />50 DO 59 L=1,360
<br />DO 58 KM=1,230
<br />58 LINE(KM)=NX(L,KM) ! counts
<br />59 WRITE(3,REC=L)LINE,JP
<br />DO 53 L=1,360
<br />DO 52 KM=l,230
<br />52 LINE(KM)=MINX(L,KM) ! m~n~ma
<br />53 WRITE(3,REC=360+L)LINE,JP
<br />DO 56 L=1,360
<br />DO 55 KM=1,230
<br />55 LINE(KM)=MAXX(L,KM) ! maxima
<br />56 WRITE(3,REC=720+L)LINE,JP
<br />DO 62 L=1,360
<br />DO 61 KM=1,230
<br />AVE=O.
<br />IF(NX(L,KM).GT.O)AVE=SX(L,KM)/FLOAT(NX(L,KM))
<br />61 LINE(KM)=AVE ! averages
<br />62 WRITE(3,REC=1080+L)LINE,JP
<br />DO 65 L=1,360
<br />DO 64 KM=1,230
<br />STD=O.
<br />IF(NX(L,KM) .GT.1)THEN
<br />S=SX(L,KM)
<br />S2=SX2(L,KM)
<br />
<br />24
<br />
|