4.1 Статус Fortran 2003
GNU Fortran поддерживает несколько функций Fortran 2003; неполный список можно найти ниже. См. также страницу wiki о Fortran 2003.
- Указатели на процедуры, включая компоненты указателей на процедуры с атрибутом
PASS. - Процедуры, связанные с производным типом (тип-связанные процедуры), включая
PASS,PROCEDUREиGENERIC, а также операторы, связанные с типом. - Абстрактные интерфейсы и расширение типов с возможностью переопределения тип-связанных процедур или отложенной привязки.
- Полиморфные сущности («
CLASS») для производных типов и неограниченный полиморфизм («CLASS(*)») – включаяSAME_TYPE_AS,EXTENDS_TYPE_OFиSELECT TYPEдля скаляров и массивов и финализацию. - Имена обобщенных интерфейсов, имеющие то же имя, что и производные типы, теперь поддерживаются. Это позволяет писать конструкторские функции. Обратите внимание, что Fortran не поддерживает статические конструкторские функции. Для статических переменных доступны только инициализация по умолчанию или инициализация конструктором структуры.
- Конструкт
ASSOCIATE. - Взаимодействие с C, включая перечисления,
- В конструкторах структур компоненты с значениями по умолчанию могут быть опущены.
- Расширения для оператора
ALLOCATE, позволяющего указывать тип с параметром типа и выполнять выделение и инициализацию из выраженияSOURCE=;ALLOCATEиDEALLOCATEмогут необязательно возвращать строку сообщения об ошибке черезERRMSG=. - Перевыделение при присваивании: если используется внутреннее присваивание, выделенная переменная слева автоматически выделяется (если не выделена) или перевыделяется (если форма отличается). В настоящее время правильно обрабатываются скалярные отложенные символьные длины слева, но массивы пока не полностью реализованы.
- Поддерживаются переменные символьного типа с отложенной длиной и скалярные компоненты символьного типа с отложенной длиной производных типов. (Обратите внимание, что массивоподобные компоненты пока не реализованы.)
- Передача выделений через
MOVE_ALLOC. - Атрибуты
PRIVATEиPUBLICмогут быть заданы индивидуально для компонентов производного типа. - При присваивании указателям может быть указан нижний предел, а также поддерживается переиндексация элементов.
- Для указателей может быть указан
INTENT, который влияет на статус ассоциации, а не на значение целевого указателя. - Встроенные функции
command_argument_count,get_command,get_command_argument, иget_environment_variable. - Поддержка символов Unicode (ISO 10646) и UTF-8, включая встроенные функции
SELECTED_CHAR_KINDиNEW_LINE. - Поддержка двоичных, восьмеричных и шестнадцатеричных (BOZ) констант во встроенных функциях
INT,REAL,CMPLXиDBLE. - Поддержка переменных списков имен с атрибутами allocatable и pointer, а также параметром типа переменной длины.
- Конструкторы массивов с использованием квадратных скобок. То есть,
[...]вместо(/.../). Указание типа для конструкторов массивов, например,(/ some-type :: ... /). - Расширения для выражений спецификации и инициализации, включая поддержку встроенных функций с действительными и комплексными аргументами.
- Поддержка асинхронного синтаксиса ввода-вывода; однако передача данных в настоящее время всегда выполняется синхронно.
- Оператор
FLUSH. - Спецификатор
IOMSG=для операторов ввода-вывода. - Поддержка объявления констант перечисления через операторы
ENUMиENUMERATOR. Гарантируется взаимодействие сgccтакже в случае, когда указана командная строка-fshort-enums. - TR 15581:
-
ALLOCATABLEаргументы-фиктивные. -
ALLOCATABLEрезультаты функций -
ALLOCATABLEкомпоненты производных типов
-
- Оператор
OPENподдерживает спецификаторACCESS='STREAM', позволяющий выполнять ввод-вывод без какой-либо структуры записей. - Ввод-вывод списков имен для внутренних файлов.
- Незначительные функции ввода-вывода: округление при форматированном выводе, использование запятой вместо десятичной точки, установка того, должно ли появляться знак «плюс» для положительных чисел. На системах, где
strtodучитывает режим округления, поддерживается и режим округления для ввода. - Оператор и атрибут
PROTECTED. - Оператор и атрибут
VALUE. - Оператор и атрибут
VOLATILE. - Оператор
IMPORT, позволяющий импортировать связанные с хостом производные типы. - Поддерживаются встроенные модули
ISO_FORTRAN_ENVIRONMENT, содержащие параметры устройств ввода-вывода, размеры памяти. Кроме того, процедуры для взаимодействия с C доступны в модулеISO_C_BINDING. -
Оператор
USEс атрибутамиINTRINSICиNON_INTRINSIC; поддерживаемые встроенные модули:ISO_FORTRAN_ENV,ISO_C_BINDING,OMP_LIBиOMP_LIB_KINDS, иOPENACC. - Переименование операторов в операторе
USE.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gfortran/Fortran-2003-status.html