免责声明:我使用了一个用FORTRAN编写的程序,我在使用它时遇到了麻烦。我一点也不精通FORTRAN。如果这是个愚蠢的问题,我很抱歉。
我得到了以下错误:
At line 1494 of file phot_star_fit18.f90 (unit = 45)
Fortran runtime error: Cannot open file '/Users/.../SSPFITTING/GASFIT/ssp/ssplist.d': No such file or directory
Error termination. Backtrace:
#0 0x10a0a9729
#1 0x10a0aa3f5
#2 0x10a0aab59
#3 0x10a16f70a
#4 0x10a16f950
#5 0x10a09815c
#6 0x10a09ee5e
第1494行是:
open(unit=45,file=splist,status='old',action='read')
在/Users/.../SSPFITTING/GASFIT/ssp/
目录中,我有以下与ssplist
相关的文件。一些东西:
ssplist.dat2
ssplist.dat04
ssplist.dat5
ssplist.dat08
有人能解释一下为什么这是失败的,为什么代码需要一个ssplist.d
文件吗?
发布于 2016-07-22 00:09:46
问题中没有足够的数据来确定这是否真的是问题所在,但我有强烈的怀疑:
它试图打开一个不存在的名为/Users/.../SSPFITTING/GASFIT/ssp/ssplist.d
的文件。现在有几个文件以ssplist.d
开头,但没有一个文件的全名。
如果尝试将字符串赋值给固定长度char变量,则删除最后一个字符:
program string1
implicit none
character(len=8) :: h
h = "Hello World"
print *, h
end program string1
指纹:
Hello Wo
我的建议是搜索字符变量splist
的声明,我怀疑它如下所示:
character(len=xx) :: splist
但也可能更老:
character*xx splist
或者类似这样的东西,其中xx
是一个数字。这个xx
至少需要/Users/.../SSPFITTING/GASFIT/ssp/ssplist.dat08
中的字符数(我还怀疑您已经用...
替换了一长串子目录,所以我无法告诉您有多少个字符。)我怀疑这个数字只是有点短。
发布于 2016-07-21 06:45:13
斜线是朝正确的方向倾斜吗?你可以问问..。
LOGICAL :: Existent = .FALSE.
...
INQUIRE(FILE='somefile', EXIST=Existent)
IF(Existent) THEN
OPEN(...
READ(...
CLOSE(...
ELSE
WRITE(*,10) SomeFile(1:??)
10 FORMAT(" Cannot find file="',A,'"')
ENDIF
写语句所显示的主要内容是不存在什么。如果保存文件名的字符串被修改为80个字符,并且您正在截断'at1‘,那么这将给您提供洞察力。
这是chw21所说的话的由来已久的表达方式。
https://stackoverflow.com/questions/38491974
复制相似问题