我有一个Fortran子例程,在主程序中调用了几次(我无法访问) . 在我的子程序中,我希望根据输入参数在每次迭代中从几个(~10 ^ 4)个文件中的一个读取数据 . 每个文件都有一行数据;我的数据格式如下:
0.97014199999999995 0.24253600000000000 0.0000000000000000
我正在使用以下代码行来打开和读取文件:
program test_read
implicit none
integer :: i, iopen_status, iread_status
real :: gb
CHARACTER(len=25) :: filename
CHARACTER(*), PARAMETER :: fileplace =
& "/home/ajax/hexmesh_readn/G3/"
dimension gb(3)
i = 5
WRITE(filename,'(a,I0,a)')'GBn_',i,'.txt'
open(unit=15,
& file=fileplace//filename,IOSTAT=iopen_status)
read (15,*,IOSTAT=iread_status) gb
print *,"gb",gb(1),gb(2),gb(3)
close(15)
end program test_read
在主程序中,i是一个变量,但我有一个文件,表示i的所有可能值 .
现在,当我在本地计算机上运行时,此代码运行良好 . 但是,当我将它与主程序一起提交时,它表现得有些奇怪 . 具体来说,它会读取一些文件,但不会读取其他文件 .
当我打开IOSTAT进行打开和读取时,我看到所有文件的打开IOSTAT为0,而对于某些文件,读取命令的值为0,有些为-1,其他为29!我查看了错误代码29的含义,并了解到它可能表明该文件未在路径中找到 . 但文件绝对是存在的 .
另外,我不能阅读 . 事实上,我甚至看到同一个文件给出IOSTAT值为0和29!
需要注意的一点是,我在几个核心上运行主程序 . 这可能与错误有关吗?