Ich benutze einen Unterprogrammaufruf zu GET_ENVIRONMENT_VARIABLE
, um den Hostnamen des Computers in einem Fortran-Programm zu lesen. Ich kann diese Variable nicht lesen, obwohl es in Ordnung ist, wenn ich andere Variablen wie $USER
lese. In meinem System (Debian Jessie, gfortran 4.9):Unerwartetes Verhalten von get_environment_variable mit gfortran
$ echo $HOSTNAME
deckard
$ echo $USER
curro
Ich habe dieses kurzes Programm vorbereitet:
program hello
!
implicit none
integer :: ivar = 0, len, stat
character(LEN=256) :: host, user
call GET_ENVIRONMENT_VARIABLE('HOSTNAME', host, len, stat)
if (stat == 0) then
print*, "Hostname read: ", host
else
print*, "Hostname read failed: stat = ", stat
endif
call GET_ENVIRONMENT_VARIABLE('USER', user, len, stat)
if (stat == 0) print*, "Username read: ", user
print *, "This is user ", trim(user), " in node ", trim(host), "."
!
end program hello
Wenn ich dieses einfache Programm ausführen (kompilierte mit oder ohne -std = F2003) die Ausgang:
$ ./a.out
Hostname read failed: stat = 1
Username read: curro
This is user curro in node .
Daher ist der Fehler stat = 1. ich weiß, dass gfortran hat die intrinsische HOSTNM
aber Für Kompatibilität mit anderen Compilern würde ich GET_ENVIRONMENT_VARIABLE
bevorzugen. Irgendeine Idee warum passiert das?
Überprüfen Sie den Status und sehen Sie, was die Fehlermeldung bedeutet. – albert
Werte von 'stat' 1, -1 und 2 (sowie natürlich 0) haben wohldefinierte Bedeutungen. Sie sollten sich den Wert sicherlich anschauen. – francescalus
Oder entfernen Sie stat und lesen Sie die Fehlermeldung. –