Проблемы с параметризованными производными типами в 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: