Fortran Coder

查看: 13038|回复: 8
打印 上一主题 下一主题

[文件读写] 小白求助 错误代码forrtl: severe (24): end-of-file during read

[复制链接]

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
楼主
发表于 2020-4-5 00:37:16 | 显示全部楼层
声明一个整数变量,例如istat
read语句时,通过iostat=istat语句将读入状态写入istat,例如
read(1003,iostat=istat,*) XXXXXXXX
然后马上判断istat是不是0,若是0,说明正常读入,若不是0,说明读入错误,很可能到文件末尾了
这时候应该跳出读入循环
例如:
if (istat/=0) then
   exit
end if

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
沙发
发表于 2020-4-5 11:54:41 | 显示全部楼层
letitgo1998 发表于 2020-4-5 11:01
谢谢您的帮助 我还想请您帮我看看我改的对不对...这个输出为什么全部是error... ...

不知道你的全部代码,也不知道你读入的是干什么……
很抱歉,我精力有限,无法帮你详细回答
不过,我觉得目前已经有输出了,你应该学会自己怎么通过查看输入输出去调试自己的程序

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
板凳
发表于 2020-4-5 13:37:38 | 显示全部楼层

回头看了一眼你的代码,发现你的read语句没有给格式,这恐怕会带来问题
默认格式也是要有的,你先修复这个试试吧
只有在读二进制数据的时候,才不需要也不能用格式

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
地板
发表于 2020-8-22 00:53:25 | 显示全部楼层
本帖最后由 liudy02 于 2020-8-22 00:54 编辑
wzjdse 发表于 2020-8-20 15:35
您好,我也是用abaqus调用fortran子程序计算,但是把数组Fxm和Fym 进行save以后就会报错:forrtl: severe ...

你应该改进你的变量声明方式,而不是在老的格式里纠结
建议在所有文件的开头几行,use语句的后边都加上“implicit none”
关掉所有的默认变量类型,所有变量都必须声明类型
建议定义双精度实数的时候可以这样定义:
integer, parameter :: DP=kind(1.0d0)
real(kind=DP), dimension(10001, 2) :: Fxm, Fym
这样才是现在通用建议的做法

至于你本身的问题嘛,可能和这个无关。
你这应该是在一个函数或者子程序内部?
save语句会让被save的这几个变量在下次调用的时候会使用上一次的值
你save之后,如果你调用过这个函数或者子进程,那么之前iread已经置1了
所以不会重新读数据,也就是数据只读取了一次
而你不save的话,每次调用这个子程序,iread重新置1,就会重新读数据
不过其实问题还是有点奇怪,问题的产生说明你已经读到文件结尾了还在重新读数据
但是你每次读数据完了都close文件了,按理应该会重新从第一行读呀
估计你在程序的其他地方对文件操作了吧。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-2 23:28

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表