- 积分
- 2915
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-9-1
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
各位大侠我的原始数据是这样的,是多年秋季月资料,排放顺序是站号,年、月,后面分别是浮尘,扬沙,沙尘暴和大风日数
数据格式
,
由于多个文件,而且命名都是比较有规律的,而且每个站点的时间长度都是同一的,我已进行筛选和排查如图2
我想利用循环计算每个站点,单独计算每年的季节资料,文中的缺测值是999999.00
以下是我的程序和错误提示(是不是代码这样彩色的更清楚,一起放了)
这个循环只能执行第一个循环,后面就不执行了,错误提示貌似说循环出问题,但看了半天我的程序,我自己实在没看出来
希望高手能帮我看看
这个是程序代码
!此程序用于读取file_list.txt下的所有txt文件,计算每年的秋季平均并批量生成新的数据
program tiqu_shuju
implicit none
integer i,j,k
integer,parameter::n=165 !总时间
integer,parameter::m=19 !txt文件数量
character(len=20),dimension(m)::file_n
!character(len=20),dimension(19)::file_n2
real::sum1,sum2,sum3,sum4
!定义派生类数据
type station
!character*8 id
integer id,yy,mm
real fc,ys,sc,df !分别对应资料中的年月日,浮尘,扬沙,沙尘暴,大风日数
end type
type(station),dimension (n)::sta
!打开已生成的filename文件
open(11,file='file_list.txt',form='formatted')
!open(18,file='file_list2.txt',form='formatted')
do i=1,m
read(11,'(a)') file_n(i)
! read(18,'(a)')file_n2(i)
write(*,*) file_n(i) !检查是否有错误
enddo
close(11)
do i=1,m
open(12,file=''//trim(file_n(i))//'',form='formatted')
open(16,file='n'//trim(file_n(i))//'',form='formatted')
!open(14,file='autumn_end.txt',form='formatted')
do j=1,n
read(12,*) sta(j)
! write(*,*) j,i
! print*, sta(j).fc
end do
do j=1,n
! print*, sta(j)
sum1=0.0
sum2=0.0
sum3=0.0
sum4=0.0
if(sta(j).yy==sta(j+1).yy.and.sta(j+1).yy==sta(j+2).yy)then
if(sta(j).fc==999999.or.sta(j+1).fc==999999.or.sta(j+2).fc==999999)then
sum1=999.0
sum2=999.0
sum3=999.0
sum4=999.0
else
sum1=sta(j).fc+sta(j+1).fc+sta(j+2).fc
sum2=sta(j).ys+sta(j+1).ys+sta(j+2).ys
sum3=sta(j).sc+sta(j+1).sc+sta(j+2).sc
sum4=sta(j).df+sta(j+1).df+sta(j+2).df
end if
write(16,'(2i7,4f10.2)')sta(j).id,sta(j).yy,sum1,sum2,sum3,sum4
end if
end do
close(16)
close(12)
end do
end
|
|