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'Используйте формат IBMlong 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 в инструкции open. Это даёт пользователям, у которых нет исходного кода программы, контроль над форматами данных.
Использование любого представления, отличного от родного, для данных без формата влечёт значительное снижение скорости. Если для вас важна скорость в этой области, лучше всего использовать это только для данных, которые нужно сделать переносимыми.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gfortran/CONVERT-specifier.html