Spec-Zone.ru › GNU Fortran 13

5.1.17 Спецификатор CONVERT

GNU Fortran позволяет преобразовывать неформатированные данные между представлениями little-endian и big-endian для облегчения перемещения данных между различными системами. Преобразование можно указать с помощью спецификатора CONVERT в операторе OPEN. См. GFORTRAN_CONVERT_UNIT—Установка преобразования для неформатированного ввода/вывода, для альтернативного способа указания формата данных через переменную среды.

Допустимые значения для CONVERT на большинстве систем:

  • CONVERT='NATIVE' Использование родного формата. Это значение по умолчанию.
  • CONVERT='SWAP' Переключение между little-endian и big-endian.
  • CONVERT='LITTLE_ENDIAN' Использование представления little-endian для неформатированных файлов.
  • CONVERT='BIG_ENDIAN' Использование представления big-endian для неформатированных файлов.

На системах POWER, поддерживающих -mabi=ieeelongdouble, существуют дополнительные опции, которые могут комбинироваться с другими через запятые. Это:

  • CONVERT='R16_IEEE' Использование формата IEEE 128-бит для REAL(KIND=16).
  • CONVERT='R16_IBM' Использование формата IBM long double для вещественных REAL(KIND=16).

Использование опции может выглядеть следующим образом:

open(file='big.dat',form='unformatted',access='sequential', &
     convert='big_endian')

Значение преобразования можно запросить, используя INQUIRE(CONVERT=ch). Возвращаемые значения — 'BIG_ENDIAN' и 'LITTLE_ENDIAN'.

CONVERT работает между big-endian и little-endian для INTEGER значений всех поддерживаемых типов и для REAL на системах IEEE типов 4 и 8. Преобразование между различными типами «расширенной двойной точности» на разных архитектурах, таких как m68k и x86_64, которые GNU Fortran поддерживает как REAL(KIND=10) и REAL(KIND=16), вероятно, не будет работать.

Обратите внимание, что значения, указанные через переменную среды GFORTRAN_CONVERT_UNIT, переопределяют спецификатор CONVERT в операторе открытия. Это даёт пользователям, у которых нет исходного кода программы, контроль над форматами данных.

Использование любого представления, кроме родного, для неформатированных данных несёт значительную нагрузку на скорость. Если скорость в этой области важна, лучше использовать это только для данных, которые должны быть переносимыми.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gfortran/CONVERT-specifier.html

Spec-Zone.ru

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