Fortran Coder

查看: 33914|回复: 16
打印 上一主题 下一主题

[文件读写] 求助end-of-file during read

[复制链接]

14

帖子

2

主题

0

精华

入门

F 币
73 元
贡献
42 点
跳转到指定楼层
楼主
发表于 2015-3-2 11:01:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位前辈,这是小弟第一次发帖,言语措辞不当之处望海涵。
小弟编程运行时出现了这样的错误file not found,unit 5,fileE:\fortran\fem tsinghua \tsinghua fem 4 \IN.DAT。可是程序已经运用了in.dat文件的数据做了一次运算,只是后面的循环运算就不再进行了,open(5,file=‘in.dat’,status=‘old’)语句样式为此,求各位大神解惑。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

955

帖子

0

主题

0

精华

大师

F 币
188 元
贡献
77 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2015-3-2 18:04:44 | 只看该作者
可能性较多。
1.路径不正确。
2.第一次循环结束时,把文件删除了。

你试试把 status = 'old' 去掉试试看,会不会在其他文件夹生成 in.dat ?

如果还是找不出原因,请不全部代码给出来。

14

帖子

2

主题

0

精华

入门

F 币
73 元
贡献
42 点
板凳
 楼主| 发表于 2015-3-3 16:13:35 | 只看该作者
vvt 发表于 2015-3-2 18:04
可能性较多。
1.路径不正确。
2.第一次循环结束时,把文件删除了。

将status=old删掉后运行时显示end-of-file during read,unit 5,fileE.......
删除前我是将in.dat文件放在debug文件夹里的,删除后运行时在debug文件夹外生成了一个in.dat和一个out.dat,两个均为空文件。

14

帖子

2

主题

0

精华

入门

F 币
73 元
贡献
42 点
地板
 楼主| 发表于 2015-3-3 16:18:19 | 只看该作者
vvt 发表于 2015-3-2 18:04
可能性较多。
1.路径不正确。
2.第一次循环结束时,把文件删除了。

[Fortran] 纯文本查看 复制代码
01PROGRAM MAIN
02       DIMENSION C(5000),IA(1000),EK(36)
03       
04      OPEN(5,FILE='IN.DAT')
05      OPEN(6,FILE='OUT.DAT',STATUS='UNKNOWN')
0610          READ(5,*)NG
07      IF(NG.EQ.0) STOP
08      WRITE(6,15)
0915          FORMAT(//,5X
10     &            '************ PLANE PROBLEM ***********',/)
11     READ(5,*)NE,MC,NX,NB,ND,EO,VO,T
12     WRITE(6,20)NG,NE,MC,NX,NB,ND,EO,VO,T
1320         FORMAT(//,10X,'NG=',I4,5X,'NE=',I4,5X,'MC=',I4,5X,'NX=',I4,/,
14     &        10X,'NB=',I4,5X,'ND=',I4,/,10X,'EO=',E10.4,5X,'VO=',F7.2,
15     &        5X,'T=',F7.2)
16     READ(5,*)NWA,NWE,NWK,NWP,NWD
17     WRITE(6,25)NWA,NWE,NWK,NWP,NWD
1825         FORMAT(/10X,'NWA=',I2,3X,'NWE=',I2,3X,'NWK=',I2,3X,
19     &        'NWP=',I2,3X,'NWD=',I2)
20      NT=2*NG
21      M1=3*NE+1
22      M2=M1+2*NB
23      N1=2*NG+1
24      N2=N1+NB
25      N3=7*NE+N2
26      N4=N3+NT*ND
27      N5=N4+NT
28      NEND=N5
29      IF(NEND.LE.5000) GOTO 35
30    WRITE(*,*)'***EXCEED THE  LIMIT OF ARRAY C(IN THE MIDDLE)!!***'
31    WRITE(*,30) NEND
3230           FORMAT(/,'*******NEND=',I6,1X,'>5000********')
33      STOP 111
3435          CALL INPUT(NE,NG,NB,IA(1),C(1),IA(M1),C(N1))
35       WRITE(*,40)
3640          FORMAT(/10X,'##### INPUT PASSED ######')
37       IF(MC.EQ.0)GOTO 45
38       E=EO/(1.0-VO*VO)
39       V=VO/(1.0-VO)
40       GOTO 50
4145            E=EO
42        V=VO
4350            NX1=NX
44        A1=E/(1.0-V*V)/4.0
45      A2=0.5*(1.0-V)
46      CALL ABC(NE,NG,NWA,IA(1),C(1),C(N2))
47      WRITE(*,55)
4855            FORMAT(/10X,'###### ABC  PASSED  ######')
49     DO 60 I=N3,N4
50      C(I)=0.0
5160          CONTINUE
52     DO 65 K=1,NE
53      IO=K
54      CALL KE(IO,NE,NWE,T,A1,A2,V,EK(1),C(N2))
55      CALL SUMK(IO,NE,ND,NT,IA(1),C(N3),EK(1))
5665          CONTINUE
57      WRITE(*,70)
5870          FORMAT(/10X,'#####  SUMK  PASSED  #####')
59      CALL CHECK(NT,ND,NWK,C(N3))
60      WRITE(*,75)
6175          FORMAT(/10X,'#####  CHECK PASSED  #####')
6280         READ(5,*)NF,NP
63     M3=M2+2*NF
64     N6=N5+NF
65     NEND=N6+NP-1
66     MEND=M3+2*NP-1
67     NM=0
68     IF(NEND.LE.5000)GOTO 85
69     WRITE(*,*)'***EXCEED THE LIMIT OF ARRAY C(AT THE END)!!***'
70     WRITE(*,30)NEND
71     NM=1
7285         IF(MEND.LE.1000)GOTO 95
73     WRITE(*,*)'***EXCEED THE LIMIT OF ARRAY IA(AT THE END)!!***'
74     WRITE(*,90)MEND
7590         FORMAT(/,'********MEND=',I6,1X,'>1000*******')
76     STOP 222
7795         IF(NM.EQ.1)STOP 222
78     DO 100 I=N4,N5
79      C(I)=0.0
80100        CONTINUE
81     IF(NF.GT.0)CALL PF(NF,NP,NT,NWP,C(N4),IA(M2),C(N5))
82     WRITE(*,105)
83105        FORMAT(/10X,'#####  PF  PASSED  #####')
84     IF(NP.GT.0)CALL PP(NP,NT,NG,NWP,C(1),C(N4),IA(M3),C(N6))
85     WRITE(*,110)
86110        FORMAT(/10X,'##### PP  PASSED #####')
87     CALL DBC(NT,ND,NB,NX,NX1,C(N3),C(N4),IA(M1),C(N1))
88     WRITE(*,115)
89115        FORMAT(/10X,'##### DBC  PASSED #####')
90     CALL GAUSS(NT,ND,NWD,NX,NX1,C(N3),C(N4))
91     WRITE(*,120)
92120        FORMAT(/10X,'#####  GAUSS PASSED  #####')
93     CALL STRESS(NE,NT,A1,A2,V,IA(1),C(N2),C(N4))
94     WRITE(*,125)
95125        FORMAT(/10X,'#####STRESS PASSED #####')
96     NX1=NX1-1
97     IF(NX1.GT.0)GOTO 80
98     GOTO 10
99     END

14

帖子

2

主题

0

精华

入门

F 币
73 元
贡献
42 点
5#
 楼主| 发表于 2015-3-3 16:19:09 | 只看该作者
vvt 发表于 2015-3-2 18:04
可能性较多。
1.路径不正确。
2.第一次循环结束时,把文件删除了。

[Fortran] 纯文本查看 复制代码
01SUBROUTINE KE(IO,NE,NWE,T,A1,A2,V,EK,BCA)
02   DIMENSION B(7),BCA(7,NE),EK(6,6)
03   DO 10 I=1,7
04    B(I)=BCA(I,IO)
0510     CONTINUE
06   A=A1/B(7)*T
07   DO 20 I=1,3
08    DO 20 J=I,3
09    I1=2*I
10    J1=2*J
11    EK(I1-1,J1-1)=A*(B(I)*B(J)+A2*B(I+3)*B(J+3))
12    EK(I1-1,J1)=A*(V*B(I)*B(J+3)+A2*B(I+3)*B(J))
13    EK(I1,J1-1)=A*(V*B(I+3)*B(J)+A2*B(I)*B(J+3))
14    EK(I1,J1)=A*(B(I+3)*B(J+3)+A2*B(I)*B(J))
1520     CONTINUE
16   DO 30 I=3,6
17    DO 30 J=1,I
18     EK(I,J)=EK(J,I)
1930     CONTINUE
20   IF(NWE.EQ.0)GOTO 60
21   WRITE(6,40) IO
2240     FORMAT(/1X,'EK   NE=',I5)
23   WRITE(6,50)EK
2450     FORMAT(1X,6E11.4)
2560     RETURN
26      END

14

帖子

2

主题

0

精华

入门

F 币
73 元
贡献
42 点
6#
 楼主| 发表于 2015-3-3 16:23:43 | 只看该作者
vvt 发表于 2015-3-2 18:04
可能性较多。
1.路径不正确。
2.第一次循环结束时,把文件删除了。

以上两段程序分别是主程序及其中一段相关的子程序,不知道是哪里出了错误,麻烦前辈了。小弟不胜感激。。。

955

帖子

0

主题

0

精华

大师

F 币
188 元
贡献
77 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
7#
发表于 2015-3-4 09:04:32 | 只看该作者
从代码片段里找出错误的难度非常大。

建议你直接上传全部源代码文件(而非复制粘贴),及输入文件 in.dat

14

帖子

2

主题

0

精华

入门

F 币
73 元
贡献
42 点
8#
 楼主| 发表于 2015-3-4 09:32:38 | 只看该作者
vvt 发表于 2015-3-4 09:04
从代码片段里找出错误的难度非常大。

建议你直接上传全部源代码文件(而非复制粘贴),及输入文件 in.dat ...

前辈,附件为全部程序源代码,麻烦前辈了。

ABC.FOR

781 Bytes, 下载次数: 2

计算单元参数

CHECK.FOR

483 Bytes, 下载次数: 1

检验主元

DBC.FOR

507 Bytes, 下载次数: 1

引入给定位移

GAUSS.FOR

1.27 KB, 下载次数: 1

高斯消去

INPUT.FOR

746 Bytes, 下载次数: 3

数据输入

KE.FOR

625 Bytes, 下载次数: 1

计算单刚矩阵

MAIN PRO.FOR

2.95 KB, 下载次数: 2

主程序

PF.FOR

552 Bytes, 下载次数: 1

组装载荷

PP.FOR

714 Bytes, 下载次数: 3

计算等效节点荷载

STRESS.FOR

927 Bytes, 下载次数: 1

计算单元应力

SUMK.FOR

495 Bytes, 下载次数: 3

总刚集成

955

帖子

0

主题

0

精华

大师

F 币
188 元
贡献
77 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
9#
发表于 2015-3-4 09:38:02 | 只看该作者
及输入文件 in.dat

14

帖子

2

主题

0

精华

入门

F 币
73 元
贡献
42 点
10#
 楼主| 发表于 2015-3-4 09:55:35 | 只看该作者
vvt 发表于 2015-3-4 09:38
及输入文件 in.dat

附件为输入数据文件

IN.DAT

2.85 KB, 下载次数: 4

输入文件

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2025-5-2 13:00

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

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