Атрибут Gfortran, требующий явного интерфейса для этой процедуры

Я новичок в Fortran, пытаюсь скомпилировать модель атмосферного ветра, которая доступна здесь: http://nssdcftp.gsfc.nasa.gov/models/atmospheric/hwm07/

Я использую Ubuntu 12.04 и gfortan (версия gcc 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)).

Модель содержит 4 файла данных с расширением .f90, и 3 из них прекрасно компилируются. Последний выдает ошибку:

$ gfortran -c hwm07e.f90 
hwm07e.f90:168.22:

        call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u
                  1
Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute that             requires an explicit interface for this procedure
hwm07e.f90:168.22:

        call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u
                  1
Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute that requires an explicit interface for this procedure

ebz и ebm определены как цели, которые кажутся источником проблемы:

subroutine HWMupdate(input,last,fs,fl,fm,vbar,wbar,ebz,ebm,zwght,lev,u,v)
use NewModel
implicit none

...

real(8),intent(inout),target    :: ebz(nbf,0:p)
real(8),intent(inout),target    :: ebm(nbf,0:p)

...

ebz = 0.0
ebm = 0.0

    bz => ebz(:,b)
    bm => ebm(:,b)

В прилагаемом makefile.g95 предлагается использовать g95 в качестве компилятора, возможно ли, что это невозможно скомпилировать с помощью gfortran?

Любые предложения высоко ценятся!

Спасибо


person Paulten    schedule 23.01.2014    source источник


Ответы (1)


Компилятор (и вы) прав в том, что вызов HWMupdate требует явного интерфейса из-за атрибута target в фиктивных аргументах. Это не означает, что компилятор должен отклонять код: например, ifort можно убедить продолжить, и, возможно, g95 тоже.

Чтобы ваша компиляция продолжалась, вы можете найти флаг компилятора, разрешающий это: -fno-whole-file, возможно, является одним из вариантов, поскольку это ограничивает возможность gfortran выполнять эту проверку. Однако документация не рекомендует этого делать.

Если вы не против изменения кода, лучшим решением будет предоставить явный интерфейс.

person francescalus    schedule 23.01.2014