24小时热门版块排行榜    

查看: 4183  |  回复: 2

hbyi

金虫 (小有名气)

[求助] fortan数据读写程序运行中断-attempt to read past end of file

错误信息:
PGFIO-F-217/formatted read/unit=20/attempt to read past end of file.
File name = revcon.dat    formatted, sequential access   record = 15601
In source file rw.f, at line number 11

代码:
CODE:
        program datarw

        implicit none
        real cpp(100000,3)
        character(len=70) atom(10000)
        integer mm,nn,i
        open (unit=20,file='revcon.dat',status='OLD')
            mm=1
            nn=1
        do  i=1,100000
            read (20,"(A60)") atom(mm)
            write (21,"(A60)") atom(mm)
            mm=mm+1
            read (20,*) cpp(nn,1),cpp(nn,2),cpp(nn,3)
            write (21,'(1X,70f25.12)') cpp(nn,1),cpp(nn,2),cpp(nn,3)
            nn=nn+1
            read (20,*)
            read (20,*)
        enddo

        end

[b]所读取的数据:[/b]
Li+              1
     2.746803216         12.55330094        -12.99248420
     10.66618940        0.3223086867         3.778856268
    -310.2131566        -239.3087786        -1156.167949
OW               2
     5.018759444        -13.73254722        -10.42497717
    -6.792120468         6.684578080        0.8270499669
    -10012.33517         1517.067066        -1730.305606
HW               3
     5.238233676        -14.20991259        -9.574122673
    -2.210386016        0.4942204612        -3.827830367
     4207.269462        -4704.110533         1081.427173
HW               4
     5.861095418        -13.55235241        -10.93291412
    -11.27024952        -5.811575868        -11.03237547
     7199.223146         1181.695230         962.2304789
OW               5
   -0.1579831608E-01     14.46257939         13.84156632
     2.714915221        0.3512805832         3.644804605
    -9629.957237         3494.442578        -7514.307295
HW               6
    0.5887639543        -14.74543957         13.92683356
     3.120055032        -1.032759705         13.62768740
     6113.811128         2702.933269        -302.2261157
HW               7
    0.4557842376         13.64590271         14.17420593
     2.276057422        -4.072649809        -6.594359606
     6373.187526        -6552.602197         5661.626838
OW               8
    -8.119643322         14.40506213        -4.729075754
    -8.877414205         8.048914337        -1.524141547
    -25.17597014         12014.46622        -2810.302761
HW               9
    -7.670578465         13.51541147        -4.811915797
    -2.745808245         11.89401813        -9.579632369
    -543.6076008        -9834.986593         1200.939832
HW              10
    -8.175062137         14.66191861        -3.764216432
   -0.1109329961         4.326463756       -0.2965383891E-01
    -416.7378548        -1787.752553         1136.372317
OW              11
     5.081441489         6.984758637         13.66853357
     2.243570789        -1.790733782         7.088075843
     13976.16390         12874.79148        -2145.396165

[ Last edited by jjdg on 2013-8-31 at 00:46 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dongdong_xmc

木虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2013-08-31 00:46:29
你的atom维数是10,000,但是do循环从1到100,000?
2楼2013-08-30 04:05:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2013-08-31 00:46:35
出错信息已经提示问题是读取文件时出的错,结合程序其实就是你的do循环次数太多,超过了文件的行数还想读。
解决办法是
第一种方法: 把   do  i=1,100000中100000改成正确的文件行数
第二种方法:      
do  i=1,100000改成 do
read(20,*)改成 read(20,*,End=1000) 表示读到底部就跳转到1000号语句,
然后在          end do下面加一行
1000          close(20)
这样就实现了读到文件底部就不读了。
希望对你有帮助。
3楼2013-08-30 09:55:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hbyi 的主题更新
信息提示
请填处理意见