Spec-Zone.ru › GNU Fortran 13

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-endian и 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-13.3.0/gfortran/GFORTRAN_005fCONVERT_005fUNIT.html

Spec-Zone.ru

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