2012-02-15 113 views
2

我想在我的Fortran代码中使用$ HOSTNAME环境变量的值。哪些环境变量提交给Fortran程序以获取GET_ENVIRONMENT_VARIABLE

我试图这样做是:

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' 

但我的结果是,我总是得到结果是$主机名不存在。

我的状态值的解释是基于这样的: http://gcc.gnu.org/onlinedocs/gfortran/GET_005fENVIRONMENT_005fVARIABLE.html

有趣的是,在上述页面的例子使用了“家”的环境变量。这个环境变量适用于我。

但我看不出为什么$ HOSTNAME不应该:

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

这是怎么回事?我的Fortran程序在运行时看到什么环境?

对于它的价值,我使用iFort 12

回答

8

这实际工作正常,但在大多数平台上,这些环境变量名称是区分大小写的。我用gfortran或ifort在linux机器上得到你的结果,但是如果我将你的“主机名”字符串改为“HOSTNAME”,我会得到预期的结果。

+0

哎呦。傻我...... – EMiller 2012-02-15 19:27:35