PROGRAM convert integer, parameter :: NST = 7, NYR = 10, NMN = 12, NDAY=31 real, parameter :: NGUONG=25.0 integer :: ist, iyr, imn, iday, itmp, lastday character (len = 20) :: stname(NST) character (len = 100) :: filenm real :: obsdatain(NST,NYR,NMN,NDAY) real :: cmodatain(NST,NYR,NMN,NDAY) real :: gsmdatain(NST,NYR,NMN,NDAY) real :: trmdatain(NST,NYR,NMN,NDAY) real :: vngdatain(NST,NYR,NMN,NDAY) real :: rtmp ! <-~~~=| Begin ! <-~~~=| Read station info open (1,file = "lonlat.info") do ist = 1, NST read (1,*) stname(ist), rtmp, rtmp, rtmp enddo close (1) !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! <-~~~| Read data again data open (31,file = "input/CH_OBS_dd_all.txt") open (32,file = "input/CH_CMORPH_dd_all.txt") open (33,file = "input/CH_GSMaP_dd_all.txt") open (34,file = "input/CH_TRMM_dd_all.txt") open (35,file = "input/CH_VnGP_dd_all.txt") do ist = 1, NST do iyr = 1, NYR do imn = 5,8 lastday=DayOfMonth(imn,iyr+2000) do iday=1,lastday read (31,*) obsdatain(ist,iyr,imn,iday) read (32,*) cmodatain(ist,iyr,imn,iday) read (33,*) gsmdatain(ist,iyr,imn,iday) read (34,*) trmdatain(ist,iyr,imn,iday) read (35,*) vngdatain(ist,iyr,imn,iday) enddo enddo enddo enddo close (31) close (32) close (33) close (34) close (35) !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! <-~~~| Write data only if OBS >25mm open (41,file = "LOC25mm/CH_OBS_dd_all.txt") open (42,file = "LOC25mm/CH_CMORPH_dd_all.txt") open (43,file = "LOC25mm/CH_GSMaP_dd_all.txt") open (44,file = "LOC25mm/CH_TRMM_dd_all.txt") open (45,file = "LOC25mm/CH_VnGP_dd_all.txt") do ist = 1, NST do iyr = 1, NYR do imn = 5,8 lastday=DayOfMonth(imn,iyr+2000) do iday=1,lastday IF (obsdatain(ist,iyr,imn,iday).ge.NGUONG) then write (41,*) obsdatain(ist,iyr,imn,iday) write (42,*) cmodatain(ist,iyr,imn,iday) write (43,*) gsmdatain(ist,iyr,imn,iday) write (44,*) trmdatain(ist,iyr,imn,iday) write (45,*) vngdatain(ist,iyr,imn,iday) ENDIF enddo enddo enddo enddo close (41) close (42) close (43) close (44) close (45) !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CONTAINS Integer Function DayOfMonth ( Mon, Year) Integer :: Mon, Year Select Case (Mon) Case (1,3,5,7,8,10,12) DayOfMonth = 31 Case (4,6,9,11) DayOfMonth = 30 Case (2) if ((MOD(Year, 4) == 0).AND.(MOD(Year, 100) /= 0)) then DayOfMonth = 29 else DayOfMonth = 28 endif if (MOD(Year, 400) == 0) DayOfMonth = 29 End Select End Function DayOfMonth END