获取fortran运行时错误:文件结尾

时间:2019-01-07 15:48:53

标签: fortran eof

我正在尝试使用以下代码读取文件,但文件结尾出现错误

real u,v,rs,rd
open (10,file='AD02.txt',status='old')
open(12,file='AD02_1.txt',status='unknown')
    pi=atan(1.0e00)*4.0
rad=pi/180.0


    100 read(10,*,end=98)u,v


    rs=sqrt((u*u)+(v*v))
if (v.eq.0.) then
    if (u.gt.0)then
    rd = 90
    else
    rd=270
    endif
    go to 101
end if
  rd=(atan(u/v))/rad
  if((u.ge.0.).and.(v.lt.0.))
 +     rd=rd+180.
  if((u.lt.0.).and.(v.lt.0.))
 +     rd=rd+180.
  if((u.lt.0.).and.(v.ge.0.))
 +     rd=rd+360.
  if((u.eq.0.).and.(v.eq.0.))
 +     rd=0.
 101      rd=rd+180.0
  if(rd.ge.360.0) rd=rd-360.0

 c  write(12,*)rs,rd
    write(12,*)u,v,rs,rd
 goto 100
 98   close(10) 
 99   close(11)
stop
end

它给出了文件结尾错误

样品输入:

1/1/2017    20:00     -2    -2.7        3.360059523 36.45608472
1/1/2017    21:00   -1.71   -2.74       3.229814236 31.89269113       
1/1/2017    22:00   -1.04   -3.48       3.632079294 16.5559465
1/1/2017    23:00   -0.67   -4.09       4.144514447 9.216650926
1/2/2017    0:00    -0.73   -4.51       4.568697845 9.107662714
1/2/2017    2:00    -1.04   -5.35       5.450146787 10.91495543

最多n个值

请帮助我解决这个问题

1 个答案:

答案 0 :(得分:3)

正如@albert所建议的,日期是问题所在。 READ不仅假装日期(和时间)不存在,而且列表导向输入中的斜杠会终止读取。您想使用显式格式-以下工作原理:

100    read (10,'(T18,2F8.2)',end=98) u,v

我还将评论说,您不应使用固定格式的源代码进行编码,并且如果您在此处粘贴代码,则必须知道列的位置。我必须对您的代码进行大量编辑才能使其编译。