Spec-Zone.ru › GNU Fortran 5

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.
  • Поддерживается конструкция DO CONCURRENT.
  • Поддерживается конструкция BLOCK.
  • Выражения STOP и новое выражение ERROR STOP теперь поддерживают все константные выражения. Оба показывают сигналы, которые подавались при завершении.
  • Поддержка атрибута CONTIGUOUS.
  • Поддержка ALLOCATE с MOLD.
  • Поддержка атрибута IMPURE для процедур, что позволяет использовать ELEMENTAL процедуры без ограничений PURE.
  • Указатели на null (включая NULL()) и невыделенные переменные могут использоваться в качестве фактических аргументов для необязательных не-указателей, не-аллокабельных фиктивных аргументов, обозначая отсутствующий аргумент.
  • Не-указательные переменные с атрибутом TARGET могут использоваться в качестве фактических аргументов для POINTER фиктивных аргументов с 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).

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

Spec-Zone.ru

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