Spec-Zone.ru › GNU Fortran 14

3.10 GFORTRAN_CONVERT_UNIT—Настройка преобразования для неформатированного ввода/вывода

Установив переменную GFORTRAN_CONVERT_UNIT, можно изменить представление данных для неформатированных файлов. Синтаксис для переменной GFORTRAN_CONVERT_UNIT на большинстве систем следующий:

GFORTRAN_CONVERT_UNIT: mode | mode ';' exception | exception ;
mode: 'native' | 'swap' | 'big_endian' | 'little_endian' ;
exception: mode ':' unit_list | unit_list ;
unit_list: unit_spec | unit_list unit_spec ;
unit_spec: INTEGER | INTEGER '-' INTEGER ;

Переменная состоит из необязательного режима по умолчанию, за которым следует список необязательных исключений, разделенных точкой с запятой от предыдущего значения по умолчанию и друг от друга. Каждое исключение состоит из формата и списка единиц, разделенных запятыми. Допустимые значения для режимов совпадают с теми, что используются для спецификатора CONVERT:

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

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

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

Отсутствие режима для исключения означает BIG_ENDIAN. Примеры значений для GFORTRAN_CONVERT_UNIT:

  • 'big_endian' Выполнять все неформатированные ввод/вывод в режиме big_endian.
  • 'little_endian;native:10-20,25' Выполнять все неформатированные ввод/вывод в режиме little_endian, за исключением единиц с 10 по 20 и 25, которые используют собственный формат.
  • '10-20' Единицы с 10 по 20 — big-endian, остальные — собственный формат.
  • 'big_endian,r16_ibm' Выполнять все неформатированные ввод/вывод в режиме big-endian и использовать IBM long double для вывода значений REAL(KIND=16).

Установку переменных среды необходимо выполнять в командной строке или через команду export для оболочек, совместимых с sh, и через setenv для оболочек, совместимых с csh.

Пример для sh:

$ gfortran foo.f90
$ GFORTRAN_CONVERT_UNIT='big_endian;native:10-20' ./a.out

Пример кода для csh:

% gfortran foo.f90
% setenv GFORTRAN_CONVERT_UNIT 'big_endian;native:10-20'
% ./a.out

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

См. CONVERT спецификатор для альтернативного способа указания представления данных для неформатированных файлов. См. Влияние на поведение во время выполнения для установки значения по умолчанию для представления данных для всей программы. Спецификатор CONVERT переопределяет опции компиляции -fconvert.

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

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

Spec-Zone.ru

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