Arrays f90 read.txt文件返回NaN

Arrays f90 read.txt文件返回NaN,arrays,fortran,nan,fortran90,readfile,Arrays,Fortran,Nan,Fortran90,Readfile,我正在尝试用fortran程序读取包含多个数组的.txt文件 看起来程序正在查找文件,但它只返回NaN值 ! INTEGER :: T, RH, i, j, ierror ! REAL, DIMENSION(3,3) :: AFILE ! LOGICAL :: dir_e inquire(file='PSR_FAB.txt', exist=dir

我正在尝试用fortran程序读取包含多个数组的.txt文件

看起来程序正在查找文件,但它只返回NaN值

 !
INTEGER                              :: T, RH, i, j, ierror
!
REAL, DIMENSION(3,3)                 :: AFILE
!
LOGICAL                              :: dir_e

inquire(file='PSR_FAB.txt', exist=dir_e)

if ( dir_e ) then
 print*, "dir exists!"
else
 print*, 'nope'
end if

OPEN (UNIT = 1234 , FILE = 'PSR_FAB.txt', STATUS = 'OLD', ACTION = 'READ')

   DO i=1,3
      READ(1234,*, IOSTAT=ierror) (AFILE(i,j),j=1,3)
       print*, (AFILE(i,j),j=1,3)
!      if (ierror>0) then
!        stop 'Error while reading from file. '
!      elseif (ierror<0) then
!        print* ,PSR_FILE
!        stop 'Reached end of file. '
!      endif
   ENDDO
  CLOSE(UNIT=1234)
!
T=2
RH=3
print*,AFILE(T,RH)
!    

此外,当我使用“ierror if test”时,“到达文件末尾”会弹出,这意味着ierror我在Windows 2000上运行程序时遇到了类似的问题,但在Windows 7框上工作正常

在我的情况下,应用程序是使用英特尔Fortran V11在Win7机器上构建的。此应用程序在Win7框上运行,但在Win2000框上运行时,无法读取前2个条目


尝试使用
/arch:IA32
选项进行编译。这将使用X87指令集而不是SSE2增强指令。这将生成一个在两种平台上都能工作的应用程序。

可能是在文件开头以外的位置打开了
PSR\u FAB.txt
文件。在不为
open
语句指定
POSITION=
属性的情况下,将采用文件位置
ASIS
。但是,我不确定是什么条件导致
ASIS
产生文件开头以外的位置

我建议指定文件在打开时重绕,包括:

 OPEN (UNIT = 1234 , FILE = 'PSR_FAB.txt', STATUS = 'OLD',     &
       ACTION = 'READ', POSITION = 'REWIND')

但是,还有其他问题可能导致此问题(或类似问题)。

代码对我来说很好。它读取数组,打印所有预期值,并且不点击
ierror
分支。如果缺少最后一行,请尝试为其添加行尾。您可以/应该信任iostat值——如果忽略它(即注释掉该代码),则看不到会发生什么。这里的一种可能性是您有一些访问/权限问题,例如,在windows下,该文件已经在文本编辑器中打开。这更合适,因为我同意,但我刚刚注册。我得到一个警告,我必须至少有“50个声誉”才能在原始帖子中添加评论。我的回答对你的问题有帮助吗?如果不是,考虑更多的细节来问一个新问题。
 OPEN (UNIT = 1234 , FILE = 'PSR_FAB.txt', STATUS = 'OLD',     &
       ACTION = 'READ', POSITION = 'REWIND')