Fortran Coder

标题: fortran中forrtl:severe(24):end-of-file during read,unit 7·· [打印本页]

作者: pass74    时间: 2014-4-2 17:59
标题: fortran中forrtl:severe(24):end-of-file during read,unit 7··
本帖最后由 pass74 于 2014-4-3 08:54 编辑

在IVF下编译(源码是由Fortran 66和77写的,所以个别地方需做修改方能编译通过,主程序在文件NRLXRF.FOR中)通过后,运行时输入 1  回车  RES 回车  CON 57 40 W 45 26 1 回车后出现以上错误,请问是为什么?源代码在附件中,已经困惑两天了,谢谢

NRLXRF1.rar

351.28 KB, 下载次数: 11

修改之后.rar

356.15 KB, 下载次数: 9


作者: fcode    时间: 2014-4-2 18:33
请问主程序在哪儿?还有 SPIN 函数(子程序)找不到
作者: pass74    时间: 2014-4-2 19:59
fcode 发表于 2014-4-2 18:33
请问主程序在哪儿?还有 SPIN 函数(子程序)找不到

不好意思,刚刚疏忽了,主程序在文件NRLXRF.FOR中,附件文件已更新,谢谢
作者: fcode    时间: 2014-4-2 20:11
主程序有了,现在缺 SPIN 子程序
作者: pass74    时间: 2014-4-2 20:31
fcode 发表于 2014-4-2 20:11
主程序有了,现在缺 SPIN 子程序

SPIN 子程序在文件NRL4.FOR中呢
作者: fcode    时间: 2014-4-2 21:00
你确定你的代码在 IVF 上能编译链接?我这里一大堆的错误,各种类型不匹配,各种common溢出,各种实参虚参不匹配。
作者: fcode    时间: 2014-4-2 21:03
比如说吧。
NRL2.for 中。251行
[Fortran] 纯文本查看 复制代码
 character*10     HBL6 , HUND, HXU, HXS
      DOUBLE PRECISION SDUMP

后面又
SDUMP( 1)= HBL6  

双精度数组,怎么能等于字符串呢?
作者: pass74    时间: 2014-4-3 08:32
fcode 发表于 2014-4-2 21:03
比如说吧。
NRL2.for 中。251行
[mw_shl_code=fortran,true] character*10     HBL6 , HUND, HXU, HXS

在IVF下编译(源码是由Fortran 66和77写的,所以个别地方需做修改方能编译通过,主程序在文件NRLXRF.FOR中)通过后。。。我是把这几个地方修改之后才编译通过的,源文件中有个NRLX.EXE,不用修改直接就能运行,但用IVF运行就会出现以上你说的错误,也正在纳闷他是怎么运行的
作者: pass74    时间: 2014-4-3 08:53
pass74 发表于 2014-4-3 08:32
在IVF下编译(源码是由Fortran 66和77写的,所以个别地方需做修改方能编译通过,主程序在文件NRLXRF.FOR ...

附件中我又添加了一个修改过的,就是把一些变量类型转换成同一类型等等,修改之后编译能通过,运行时会出现以下错误:fortran中forrtl:severe(24):end-of-file during read,unit 1··
作者: 楚香饭    时间: 2014-4-3 08:59
pass74 发表于 2014-4-3 08:32
在IVF下编译(源码是由Fortran 66和77写的,所以个别地方需做修改方能编译通过,主程序在文件NRLXRF.FOR ...

你应该一开始就给修改以后的,至少能正常编译链接的。

文件中的 NRLX.exe 是其他编译器编译出来的。大概早期的编译器对语法检查不严格,所以允许这些错误存在吧。
作者: pass74    时间: 2014-4-3 09:13
chuxf 发表于 2014-4-3 08:59
你应该一开始就给修改以后的,至少能正常编译链接的。

文件中的 NRLX.exe 是其他编译器编译出来的。大概 ...

不好意思,附件只能添加1000k以下的文件,我修改以后的压缩包是1380k,所以只好上传了源文件,今天我把里面没用的文件都删了才传上去的,那请问上面的问题到底是什么原因?我已经检查了三天了还是没找出。。。
作者: fcode    时间: 2014-4-3 09:26
我现在可以正常编译链接了。但是出现错误的位置与你不同。

NRL40.for 文件 568 行
READ( KRA, 101) NZLAST, IZERO,( BUF5( IJ), IJ= 1, 5)

此时的 KRA = 0,前面也没有 Open 过 0 的文件,IVF不允许文件通道号为0,这是屏幕读取吗?
还有你的错误,是发生在文件通道号 1 还是 7 ?你自己好像都说得不一致。







作者: pass74    时间: 2014-4-3 09:56
fcode 发表于 2014-4-3 09:26
我现在可以正常编译链接了。但是出现错误的位置与你不同。

NRL40.for 文件 568 行

谢谢你的耐心回答,我一开始也是碰到这个错误,后来也不知道怎么的这个错误就没了,又出现了fortran中forrtl:severe(24):end-of-file during read,unit 1··都是在READ语句这里出错, 关于设备号KRA = 0我也没搞懂什么原因,我的错误是发生在以下:

QQ图片20140403095408.jpg (87.9 KB, 下载次数: 460)

QQ图片20140403095408.jpg

QQ图片20140403095414.jpg (66.82 KB, 下载次数: 454)

QQ图片20140403095414.jpg

作者: 楚香饭    时间: 2014-4-3 10:05
检查一下 XRDATS 文件是否有内容吧。应该是 6KB,你是否弄没了?变成了 0 KB ?
作者: 楚香饭    时间: 2014-4-3 10:07
12楼的错误不是没有了,还在。

你的问题是出现了一个新的错误(XRDATS文件内容丢失),而这个错误早于12楼的错误。因此你只能看到这个错误,12楼的错误还没有引发。
作者: pass74    时间: 2014-4-3 10:18
本帖最后由 pass74 于 2014-4-3 10:19 编辑
chuxf 发表于 2014-4-3 10:07
12楼的错误不是没有了,还在。

你的问题是出现了一个新的错误(XRDATS文件内容丢失),而这个错误早于12楼 ...

还真是你说的那样,现在原问题解决了,又出现了之前的那个问题,就是和你一样的问题:

QQ图片20140403101932.jpg (174.55 KB, 下载次数: 426)

QQ图片20140403101932.jpg

QQ图片20140403101941.jpg (66.55 KB, 下载次数: 446)

QQ图片20140403101941.jpg

作者: 楚香饭    时间: 2014-4-3 10:33
IVF 不允许对 0 通道号直接使用。

你应该了解一下此处是屏幕输入,还是文件输入?如果是文件输入,了解一下此处应该从哪个文件输入?假设为 a.txt

那么在程序一开始加一句 Open( 0 , File = 'a.txt' )
作者: pass74    时间: 2014-4-3 12:22
本帖最后由 pass74 于 2014-4-3 12:24 编辑
chuxf 发表于 2014-4-3 10:33
IVF 不允许对 0 通道号直接使用。

你应该了解一下此处是屏幕输入,还是文件输入?如果是文件输入,了解一 ...

问题可能出在以下(图片标注的地方),“IF ( IBUFA.LE. 0) GO TO 3”   这一句直接跳过了 “   2     KRA= IA       CALL FILIO( KRA, 4, 1, 1, 1) ”的执行,导致KRA=0,下面就找不到设备号为0的文件,至于为什么会跳过目前还没找到原因,因为源程序不是我写的,但既然他能运行出结果说明源程序本身没问题,我再找找原因,实在找不出再麻烦你,非常感谢!

QQ图片20140403114922.jpg (106.54 KB, 下载次数: 459)

QQ图片20140403114922.jpg

QQ图片20140403110743.jpg (116.15 KB, 下载次数: 466)

QQ图片20140403110743.jpg

作者: 楚香饭    时间: 2014-4-3 12:28
我估计代码也不是你写的。

这段代码非常非常老,可读性很差。确实遇到问题不知道怎么办。(除非你可以联系上作者)

如果你能弄清楚这部分读取的是什么文件,那就好办了。给 KRA 一个初值就可以了。
作者: pass74    时间: 2014-4-3 21:57
本帖最后由 pass74 于 2014-4-3 22:01 编辑
chuxf 发表于 2014-4-3 12:28
我估计代码也不是你写的。

这段代码非常非常老,可读性很差。确实遇到问题不知道怎么办。(除非你可以联系 ...

12#的问题还是没能解决,我又下载安装了CVF6.6,运行后程序能全部走完,就是结果不对,但最终还是想在IVF下调试和修改





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2