Jetzt habe ich so etwas wie diesesBringen Sie Strings in Dateinamen
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
und der Compiler gibt
open(10,file="./prova_"//mvalue//"_.res")
1
Error: Operands of string concatenation operator at (1) are CHARACTER(1)/INTEGER(4)
Ich weiß nicht, ob ich die "implizite keine" Anweisung verwenden können, in der echte Code, denn vielleicht würde es etwas anderes vermasseln ... Es tut mir leid, wenn ich nicht genauer sein kann, aber wie ich Ihnen sagte, ich bin neu in FORTRAN, und der Code ist irgendwie erweitert (und EXTREM geschrieben schlecht). Ich würde es vorziehen, die mvalue Variable auf die Routine zu übergeben, aber wenn ich
program prova
CHARACTER (LEN=4) :: mvalue
mvalue="01.0"
call func(mvalue)
end
subroutine func(mvalue)
open(10,file="./prova_"//mvalue//"_.res")
end
zu tun versuchen, gibt es
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)
deklariert wird '' oder ' '' „_R00.res'' Hat nicht richtig angezeigt werden, müssen Sie die gleiche' verwenden“. –
''unknown" 'ist ebenfalls ungültig. –
Noch eine Empfehlung: Ich sehe keinen Grund, jemals' status = 'unknown'' zu verwenden.Lass es einfach aus. Oder verwenden Sie einen bekannten Statuswert, wenn Sie einen Grund dazu haben. –