【发布时间】:2016-07-12 16:42:05
【问题描述】:
现在我有这样的东西
program prova
CHARACTER (LEN=4) :: mvalue
common mvalue
mvalue='01.0'
call funzione(var1, var2,...)
end
subroutine funzione()
common mvalue
*(stuff with var1, var2, ...)*
open(10,file="./prova_"//mvalue//"_.res")
end
编译器返回
open(10,file="./prova_"//mvalue//"_.res")
1
Error: Operands of string concatenation operator at (1) are CHARACTER(1)/INTEGER(4)
我不知道我是否可以在实际代码中使用“隐式无”指令,因为它可能会弄乱其他东西......如果我不能更精确,我很抱歉,但正如我告诉你我是 FORTRAN 的新手,而且代码有点扩展(而且写得非常糟糕)。 我更愿意将 mvalue 变量传递给例程,但如果我尝试这样做
program prova
CHARACTER (LEN=4) :: mvalue
mvalue="01.0"
call func(mvalue)
end
subroutine func(mvalue)
open(10,file="./prova_"//mvalue//"_.res")
end
返回
open(10,file="./prova_"//mvalue//"_.res")
1
Error: Operands of string concatenation operator at (1) are CHARACTER(1)/INTEGER(4)
prova.f:4.16:
call func(mvalue)
Warning: Type mismatch in argument 'mvalue' at (1); passed CHARACTER(1) to INTEGER(4)
【问题讨论】:
-
"_R00.res'看起来不对,必须使用相同的"或'。 -
'unknown"也是无效的。 -
另一个建议:我看不出有任何理由使用
status='unknown'。把它放在外面。或者如果你有理由使用一些已知的状态值。 -
您必须展示完整的代码示例。请参阅如何创建最小、完整且可验证的示例 stackoverflow.com/help/mcve
-
这是一个 7000 行长的代码,我只展示这部分是因为我认为错误就在这里,因为在我修改之前它工作得非常好(文件名曾经被修复)...你需要还想知道什么特别的?
标签: string fortran filenames fortran77