Использование вида fortran в объявлении функции - PullRequest
1 голос
/ 17 июня 2011

У меня есть программа, которая имеет много функций, которые используют 'kind' в объявлении, например

real(kind=db) function vnorme(v)

Каждое объявление такого рода приводит к ошибкам при компиляции с pgf90 (однако ifort работает нормально):

PGF90-S-0087-Непостоянное выражение, где требуется постоянное выражение (general.f: 3161) PGF90-S-0081-Недопустимый селектор - параметр KIND имеет неизвестное значение для типа данных (general.f: 3161) 0 информ, 0 предупреждений, 2 перерыва, 0 фатально для vnorme

дБ определено в модуле, содержащемся в отдельном файле исходного кода:

integer, parameter:: db = selected_real_kind(15)

Кодправильно компилируется, когда я заменяю 'db' на '8'.Кажется, что компилятор не думает, что db объявлен, хотя функция vnorme использует модуль, в котором объявлен db.Есть ли способ это исправить?

1 Ответ

2 голосов
/ 17 июня 2011

дБ еще не видно при разборе 1-й строки определения функции.

Попробуйте


function vnorme(v)
  use module_with_db
  implicit none
  real(db) :: vnorme
  ...
end function vnorme

...