Проблемы с параметризованными производными типами в Fortran 2003

Я учу себя Fortran 2003 использовать для исследовательского проекта, над которым я сейчас работаю. Я привык к Fortran 90, но этот проект требует использования параметризованных типов, и поэтому я перехожу к 2003 году.

Я следовал описанию этого сайта, как определить параметризованный тип, и написал очень простой пример программы на основе примера сайта для его тестирования:

module example
implicit none

  type :: param_matrix(k,a,b)
     integer, kind :: k
     integer, len :: a
     integer, len :: b
     real(kind=k), dimension(a,b) :: m
  end type param_matrix

end module example

Когда я скомпилирую это с командой

gfortran -c test.F03

Я получаю ошибки

test.F03:4.2:

  type :: param_matrix(k, a, b)

  1

Error: Unclassifiable statement at (1)

test.F03:5.13:

     integer, kind :: k

             1

Error: Invalid character in name at (1)

test.F03:6.13:

     integer, len :: a

             1

Error: Invalid character in name at (1)

test.F03:7.13:

     integer, len :: b

             1

Error: Invalid character in name at (1)

test.F03:8.16:

     real(kind=k), dimension(a,b) :: m

                1

Error: Symbol 'k' at (1) has no IMPLICIT type

test.F03:9.5:

  end type param_matrix

     1

Error: Expecting END MODULE statement at (1)

Когда я удаляю параметризованные части формулы, она прекрасно компилируется (то есть распознает тип). Кажется, что есть особые проблемы с чем-то специфическим для Fortran 2003, но когда я запускаю команду

-std=f2003

у него все те же проблемы. Что может происходить?

1 ответ

Решение

Параметризованные производные типы еще не реализованы в gfortran:

https://gcc.gnu.org/wiki/OOP (см. Не реализованные функции)

В настоящее время эту функцию поддерживают только компиляторы Cray, PGI и IBM Fortran:

http://fortranwiki.org/fortran/show/Fortran+2003+status

Другие вопросы по тегам