Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于EOF标记的Fortran错误_Fortran_Eof - Fatal编程技术网

关于EOF标记的Fortran错误

关于EOF标记的Fortran错误,fortran,eof,Fortran,Eof,我提前道歉,因为我知道这个问题已经被其他用户提出并解决了。但我自己似乎无法解决这个问题: 代码部分: integer variable_1 open(522, position='rewind', form='unformatted') write(522) varibale_1 //This is line 110 rewind(522) close(522) 错误: 在文件名的第110行(单位=522,文件=fort.522) Fortran运行时错误:EOF标记后不允

我提前道歉,因为我知道这个问题已经被其他用户提出并解决了。但我自己似乎无法解决这个问题:

代码部分:

integer variable_1 
open(522, position='rewind', form='unformatted')
  write(522) varibale_1    //This is line 110
  rewind(522)
  close(522)
错误: 在文件名的第110行(单位=522,文件=fort.522) Fortran运行时错误:EOF标记后不允许顺序读取或写入,可能使用倒带或退格

文件522由另一个子例程以以下方式创建:

variable_1 = 0
      inquire(522, exist=lex, iostat=ios, recl=i)
      open(522,iostat=ios, form='unformatted')
      read(522, err=37, end=37) variable_1
      close(522)
      go to 38
 37   continue
 38   continue
我不知道该怎么办,我试着把bakcspace(522)或倒带(522)放在不同的地方,结果出现了分割错误或是同样的错误

注意:第110行是write语句


提前感谢大家。

首先,您的问题是可重复的,它发生在(而不是)当前主干和gfortran 4.8上

您在第二个代码段中所做的是创建一个完全空的文件。我不确定这是否是本意,但事情就是这样发生的

接下来发生的是文件在读取错误时未关闭。下一个open语句几乎什么都不做,允许在现有单元上执行多个open语句。之后,当您尝试对具有错误条件的文件执行I/O时,欢闹随之发生

所以把你的代码改成

  logical lex
  variable_1 = 0
  inquire(552, exist=lex, iostat=ios, recl=i)
  open(552,iostat=ios, form='unformatted')
  read(552, err=37, end=37) variable_1
  go to 38
37 continue
38 continue
  close(552)


  open(522, file="fort.552", form='unformatted')
  write(522) variable_1
  rewind(522)
  close(522)
end program
一切都会好起来的


我已经就这两个方面进行了存档和分析。

请参阅附加信息。谢谢,我没有遗漏任何内容,这确实是代码的唯一部分。这种用法可以很好地与不同的编译器配合使用,现在我们不得不使用gcc。这就是问题所在。那是一个打字错误,一切都应该是522单元。我继承了这段代码,我一直在努力修复它。。。感谢您提供的任何帮助:)+1以确定问题,但这里仍然存在许多问题。使用
iostat
格式不好,不必检查结果。同样地,
inquire
结果也没有被使用,为什么不使用
lex
跳过尝试打开?在未格式化的文件上查询
recl
有什么意义?关闭前,没有必要倒带
。就这一点而言,在
结束程序之前关闭没有意义。将未命名文件命名为“fort.nn”的约定不是标准的,因此要么同时命名,要么两者都不命名。亲爱的tkoenig,不幸的是,这会导致分段错误…我可以尝试其他选项吗?如果运行我发布的确切代码,是否会出现分段错误?我还没有尝试过,我把它放在我的代码中,它给了我分段错误。我会遵照你的建议,在几分钟内向你汇报最新情况。谢谢你的帮助!我只尝试了你的代码,它很好,我用gfortran编译了它,它按预期创建了一个文件fort.522…我该从这里走到哪里?