Spec-Zone.ru › GNU Fortran 12

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 в инструкции открывания. Это даёт пользователям, у которых нет исходного кода их программы, контроль над форматами данных.

Далее: GFORTRAN_ERROR_BACKTRACE, Предыдущее: GFORTRAN_LIST_SEPARATOR, Наверх: Выполнение [Содержание][Индекс]

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

Spec-Zone.ru

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