Fortran 90错误:未定义END标记标签

时间:2014-12-30 18:00:29

标签: file-io fortran

我在FORTRAN的初学者级别。 我需要使用READ-Opiton END。但我得到一个错误,没有定义END标签标签...... 这是我的代码:

    subroutine readfiles

implicit none


integer :: N, l
real, allocatable :: pos(:,:)

N = 2 !Number of Lines

allocate(orte(N,3))

open (unit=99, file='positions.txt', status='old', action='read',)
do l=1,N
  read (99,* ,END=999) pos(l,1), pos(l,2), pos(l,3)
enddo
do l=1,N
    print *, pos(l,1), pos(l,2), pos(l,3)
enddo

return
END subroutine readfiles

这是错误:

gfortran -c -O3 -fdefault-real-8 -I/usr/include readfiles.f90
readfiles.f90:22.25:

  read (99,* ,END=999) pos(l,1), pos(l,2), pos(l,3)
                     1
Error: END tag label 999 at (1) not defined
make: *** [readfiles.o] Fehler 1

任何想法?感谢

1 个答案:

答案 0 :(得分:1)

如错误消息所示,您需要一个标记为999的行号,当到达文件末尾时,控制权将转移到该行号,如下所示。

        subroutine readfiles

    implicit none


    integer :: N, l
    real, allocatable :: pos(:,:)

    N = 2 !Number of Lines

    allocate(orte(N,3))

    open (unit=99, file='positions.txt', status='old', action='read',)
    do l=1,N
      read (99,* ,END=999) pos(l,1), pos(l,2), pos(l,3)
    enddo
    999 continue
    N = l-1
    do l=1,N
        print *, pos(l,1), pos(l,2), pos(l,3)
    enddo

return
END subroutine readfiles

顺便说一下,我建议不要使用名为“l”的变量,因为“l”看起来像1。