PROGRAM for_Grads implicit none integer, parameter :: NST = 488, NMN = 12, NSS = 4 integer :: ist, imn, itmp, nlev, nflag, iss character (len = 8), dimension (NST):: stnid real, dimension (NST) :: lon,lat real :: time, rtmp real, dimension (NST,NMN) :: data_in real, dimension (NST,NSS) :: data_out ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ open (1,file = "bk.station.list",status = "old") do ist = 1, NST read (1,*) stnid(ist), lon(ist), lat(ist), rtmp, itmp enddo close (1) open (2,file = "./output/OBS.yearmean.txt",status = "old") do ist = 1, NST read (2,*) (data_in(ist,imn), imn = 1, NMN) select case (ist) case (7, 32, 34, 36, 240,241, 474) data_in(ist,:) = -99.0 end select enddo close (2) do ist = 1, NST data_out(ist,1) = (data_in(ist,12) + data_in(ist,1) + data_in(ist,2))/3 data_out(ist,2) = (data_in(ist,3) + data_in(ist,4) + data_in(ist,5))/3 data_out(ist,3) = (data_in(ist,6) + data_in(ist,7) + data_in(ist,8))/3 data_out(ist,4) = (data_in(ist,9) + data_in(ist,10) + data_in(ist,11))/3 print*, (data_out(ist,iss),iss=1,NSS) enddo time=0 nlev=1 nflag=1 open (66,file= "./output/OBS.yearmean_grads.bin",form='unformatted',status='unknown',access='stream') do iss = 1, NSS do ist=1, NST nlev=1 write(66) stnid(ist),lat(ist),lon(ist),time,nlev,nflag write(66) data_out(ist,iss) enddo nlev=0 write(66) stnid(NST),lat(NST),lon(NST),time,nlev,nflag enddo close (66) END