我在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
任何想法?感谢
答案 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。