免责声明:我使用的是用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
文件?
答案 0 :(得分:0)
问题中没有足够的数据来确定这是否真的是问题,但我有一个强烈的怀疑:
它尝试打开一个名为/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
中的字符数(我还怀疑您已用...
替换了一长串子目录,因此我无法告诉您如何许多人物都是。)我怀疑这个数字只是一点点的缩短。
答案 1 :(得分:-1)
斜线是否正确倾斜? 你可以询问......
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
write语句显示的主要内容是无法存在的内容。 如果包含文件名的字符串被限制为80个字符,并且您正在截断' at1'然后那可以给你洞察力。
这是一个冗长的方式来说明chw21说的话。