Какие переменные среды представлены программе на Фортране для GET_ENVIRONMENT_VARIABLE - PullRequest
2 голосов
/ 15 февраля 2012

Я хотел бы использовать значение переменной среды $ HOSTNAME в моем коде на Фортране.

Моя попытка сделать это:

   CHARACTER(LEN=100) :: hostname
   INTEGER :: status_value = 0

   CALL GET_ENVIRONMENT_VARIABLE("hostname",hostname, STATUS=status_value) 

   IF (status_value == 2) THEN 
     WRITE(nout,*) 'WARNING: Processor does not support environment variables - hostname is unknown.'
     hostname = 'Unknown'
   ELSE IF (status_value == -1) THEN 
     WRITE(nout,*) 'WARNING: Hostname is too long for character variable - hostname is truncated.'
   ELSE IF (status_value == 1) THEN 
     WRITE(nout,*) 'WARNING: $HOSTNAME environment variable does not exist - hostname is unknown.'
     hostname = 'Unknown'

Но мой результат заключается в том, что я всегда получаю результат, что $ HOSTNAME не существует.

Моя интерпретация значения статуса основана на этом: http://gcc.gnu.org/onlinedocs/gfortran/GET_005fENVIRONMENT_005fVARIABLE.html

Интересно, что в примере на приведенной выше странице используется переменная окружения 'HOME'. Эта переменная окружения работает для меня.

Но я не вижу причин, по которым $ HOSTNAME не должен:

    MacBook-Pro:1N45 emiller$ echo $HOSTNAME  # My shell prompt
    MacBook-Pro.local

Что происходит? Какую среду видит моя программа на Фортране во время выполнения?

Для чего он стоит, я использую iFort 12.

1 Ответ

8 голосов
/ 15 февраля 2012

Это на самом деле работает нормально, но на большинстве платформ эти имена переменных среды чувствительны к регистру. Я получаю ваши результаты на моем linux box с gfortran или ifort, но если я изменю вашу строку "hostname" на "HOSTNAME", я получу ожидаемые результаты.

...