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Использовать формат IBMlong 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