Spec-Zone.ru › GNU Fortran 11

4.2 Статус Fortran 2008

Последняя версия стандарта Fortran — ISO/IEC 1539-1:2010, неофициально известная как Fortran 2008. Официальная версия доступна в Международной организации по стандартизации (ISO) или в её национальных организациях-членах. Окончательный проект (FDIS) можно загрузить бесплатно по адресу http://www.nag.co.uk/sc22wg5/links.html. Fortran разработан рабочей группой 5 подкомитета 22 Объединённого технического комитета 1 Международной организации по стандартизации и Международной электротехнической комиссии (IEC). Эта группа известна как WG5.

Компилятор GNU Fortran поддерживает несколько новых функций Fortran 2008; на сайте вики есть информация о текущем статусе реализации Fortran 2008. В частности, реализовано следующее.

  • Опция -std=f2008 и поддержка расширений файлов .f08 и .F08.
  • Выражение OPEN теперь поддерживает опцию NEWUNIT=, которая возвращает уникальный номер устройства файла, предотвращая непреднамеренное использование одного и того же номера устройства в разных частях программы.
  • Форматный дескриптор g0 и неограниченные форматные элементы.
  • Математические встроенные функции ASINH, ACOSH, ATANH, ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_J0, BESSEL_J1, BESSEL_JN, BESSEL_Y0, BESSEL_Y1, BESSEL_YN, HYPOT, NORM2, и ERFC_SCALED.
  • Теперь возможно использование комплексных аргументов с TAN, SINH, COSH, TANH, ASIN, ACOS, и ATAN; ATAN(Y,X) теперь является псевдонимом для ATAN2(Y,X).
  • Поддержка встроенных функций PARITY.
  • Следующие битовые встроенные функции: LEADZ и TRAILZ для подсчёта количества ведущих и хвостовых нулевых битов, POPCNT и POPPAR для подсчёта количества единичных битов и возвращения чётности; BGE, BGT, BLE, и BLT для битовых сравнений; DSHIFTL и DSHIFTR для комбинированных сдвигов влево и вправо, MASKL и MASKR для простых лево- и право-выровненных масок, MERGE_BITS для битового объединения с использованием маски, SHIFTA, SHIFTL и SHIFTR для операций сдвига, и преобразовательные битовые встроенные функции IALL, IANY и IPARITY.
  • Поддержка встроенной подпрограммы EXECUTE_COMMAND_LINE.
  • Поддержка встроенной функции запроса STORAGE_SIZE.
  • Параметры типа INT{8,16,32} и REAL{32,64,128} вида и массивнозначные именованные константы INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS и CHARACTER_KINDS встроенного модуля ISO_FORTRAN_ENV.
  • Модульные процедуры C_SIZEOF встроенного модуля ISO_C_BINDINGS и COMPILER_VERSION и COMPILER_OPTIONS модуля ISO_FORTRAN_ENV.
  • Поддержка со-массивов для последовательных программ с флагом -fcoarray=single и экспериментальная поддержка нескольких изображений с флагом -fcoarray=lib.
  • Поддерживаются подмодули. Следует отметить, что MODULEs не генерируют файл smod, необходимый для потомков SUBMODULEs, если они не содержат по крайней мере одного интерфейса MODULE PROCEDURE. Причина в том, что SUBMODULEs бесполезны без MODULE PROCEDUREs. См. http://j3-fortran.org/doc/meeting/207/15-209.txt для обсуждения и чернового толкования. Принятие этого толкования имеет преимущество, что код, не использующий подмодули, не генерирует файлы smod.
  • Поддерживается конструкция DO CONCURRENT.
  • Поддерживается конструкция BLOCK.
  • Выражения STOP и новое выражение ERROR STOP теперь поддерживают все константные выражения. Оба показывают сигналы, которые подавались при завершении.
  • Поддержка атрибута CONTIGUOUS.
  • Поддержка ALLOCATE с MOLD.
  • Поддержка атрибута IMPURE для процедур, что позволяет использовать ELEMENTAL процедуры без ограничений PURE.
  • Пустые указатели (включая NULL()) и невыделенные переменные могут использоваться в качестве фактических аргументов для необязательных не-указателей, не-выделяемых dummy аргументов, обозначая отсутствующий аргумент.
  • Не-указатели переменные с атрибутом TARGET могут использоваться в качестве фактического аргумента для POINTER dummies с INTENT(IN).
  • Указатели, включая указатели процедур и те, что в производном типе (компоненты-указатели), теперь могут быть инициализированы целевым значением вместо только NULL.
  • Выражение EXIT (с именем конструкции) теперь может использоваться для выхода не только из DO, но и из ASSOCIATE, BLOCK, IF, SELECT CASE и SELECT TYPE конструкций.
  • Внутренние процедуры теперь могут использоваться в качестве фактических аргументов.
  • Незначительные функции: диагностика устаревания для ENTRY с -std=f2008; строка может начинаться с точки с запятой; для внутренних и модульных процедур END может использоваться вместо END SUBROUTINE и END FUNCTION; SELECTED_REAL_KIND теперь также принимает аргумент RADIX; встроенные типы поддерживаются для TYPE(intrinsic-type-spec); несколько процедур связанных с типом могут быть объявлены в одном выражении PROCEDURE; поддерживаются массивы с неявно заданной формой для именованных констант (PARAMETER).

Далее: Статус Fortran 2018, Предыдущее: Статус Fortran 2003, Вверх: Статус стандартов Fortran [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gfortran/Fortran-2008-status.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API