- 积分
- 1016
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-1-10
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为这些数据文件每个都是不同的行数,我想批量处理两年的数据,尝试用do while(.not.eof(文件号))来判断每个文件的行数,能判断出来,但是在处理的时候老是提示错误。以下是程序代码,望高手帮忙解决 万分感谢了
program main
implicit none
integer :: i,j,m,n,k,c,L,iw,ix,kx,ky,jx,jy,dy,len
parameter(L=3000)
real ::tmax(L),tmin(L)
integer ::sta(L)
real ::lat(L),lon(L),height(L)
integer ::nline
character(len=20)::b,fileName
character(len=2)::yy,mm,day
do kx=14,15 !年
write(yy,'(i2)') kx
yy=trim(adjustl(yy))
if(len_trim(yy)<2) yy='0'//yy
write(*,*)yy
do jx=1,12 !月
write(mm,'(i2)') jx
mm=trim(adjustl(mm))
if(len_trim(mm)<2) mm='0'//mm
if(jx==2) then
len=28
elseif(j==4.or.j==6.or.j==9.or.j==11) then
len=30
else
len=31
end if
write(*,*)mm,len
do dy=1,len
write(day,'(i2)') dy
day=trim(adjustl(day))
if(len_trim(day)<2) day='0'//day
write(*,*)day
! write(*,*)yymmday20
open(unit=21,file="D:\fortran\data\sk\tmax\"//yy//mm//day//"
&02.000",access="sequential",form="formatted",status="old")
open(unit=23,file="D:\fortran\data\sk\tmax\sk_tmax_
&"//yy//mm//day//"02.txt")
! nstn=2404
nline=0
do while(.not.eof(21))
nline=nline+1
read(21,*) 从这里开始程序就提示错误了
enddo
write(*,*)nline
do k=1,5
read(21,*)
enddo
do i = 6,nline
read(21,*)sta(i),lon(i),lat(i),height(i),tmax(i)
if(tmax(i)>1000.00)then
tmax(i)= 999.00
write(23,"(I8,F8.2)")sta(i),tmax(i)
else
tmax(i)=tmax(i)
write(23,"(I8,F8.2)")sta(i),tmax(i)
endif
! if(rain1(i)<0) pause
enddo
close(21)
close(23)
enddo !日
enddo !月
enddo !年
end
错误提示就是end of file during read ,unit 21,file D:\fortran\data\sk\tmax\14010102.000
|
|