- 积分
- 2353
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-12-25
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2018-4-8 10:51:56
|
显示全部楼层
!对上午星10点到11点取均值,下午星13点到14点取均值.
program first
character*15 ch0
character*5 zhandian0
res=systemqq('dir /b *.txt>dir.txt')
open(1,file='dir.txt')
do while(.not.eof(1))
read(1,*) ch0 !ch0 BJZPM09-10.txt
if(ch0(1:7)=='dir.txt') then
cycle
else
zhandian0=ch0(1:len_trim(ch0)-11) !zhandian BJZ
call CSHNET(ch0,zhandian0)
end if
end do
close(1)
end
subroutine CSHNET(ch0,zhandian0)
character*15 ch0
character*5 zhandian0
character*(len_trim(zhandian0)) zhandian
character*(20) wjm
integer day(5000),riqi(5000),num,i,j
real aa(5000),bb(5000),cc(5000),dd(5000),ee(5000),ff(5000)
zhandian=zhandian0(1:len_trim(zhandian0))
open(9,file=ch0)
wjm='SWX'//zhandian//'DJPM.txt' !此处先打开文件9,即需要读取的各站点TXT文档,将站点名赋值给上午星文件名10和下午星文件名11?
open(10,file=wjm)
wjm='XWX'//zhandian//'DJPM.txt'
open(11,file=wjm)
num=0
do while(.not.eof(9))
read(9,*)
num=num+1
end do
rewind(9)
num=num-1 !此处为什么要-1,是因为前面要空读了一行?
read(9,*)
do i=1,num
read(9,*) day(i),aa(i),bb(i) !aa pm25 bb pm10
cc(i)=-9999
dd(i)=-9999
ee(i)=-9999
ff(i)=-9999
riqi(i)=-9999
enddo
j=1
do i=1,num,4
riqi(j)=day(i)
if(aa(i)/=-9999.and.aa(i+1)/=-9999)then
cc(j)=(aa(i)+aa(i+1))/2 !cc swx pm25
end if
if(bb(i)/=-9999.and.bb(i+1)/=-9999)then
dd(j)=(bb(i)+bb(i+1))/2 !dd swx pm10
end if
if(aa(i+2)/=-9999.and.aa(i+3)/=-9999)then
ee(j)=(aa(i+2)+aa(i+3))/2 ! ee xwx pm25
end if
if(bb(i+2)/=-9999.and.bb(i+3)/=-9999)then
ff(j)=(bb(i+2)+bb(i+3))/2 ! ff xwx pm10
end if
j=j+1
end do
write(10,*) '日期 PM25 PM10'
write(11,*) '日期 PM25 PM10'
do i=1,(num/4)
write(10,100) riqi(i),cc(i),dd(i)
write(11,100) riqi(i),ee(i),ff(i)
enddo
100 format(i10,4x,f9.3,4x,f9.3,4x)
close(9)
close(10)
close(11)
end
|
|