6.1.15 Спецификатор 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 для файлов в формате без записи.
Использование опции может выглядеть так:
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 в операторе открытия. Это позволяет пользователям, у которых нет исходного кода программы, контролировать форматы данных.
Использование чего-либо, кроме родного представления, для данных в формате без записи, влечет за собой существенное снижение скорости. Если скорость в этой области важна, лучше использовать этот метод только для данных, которые необходимо сделать переносимыми.
Далее: OpenMP, Предыдущее: Указатели Cray, Вверх: Реализованные расширения в GNU Fortran [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gfortran/CONVERT-specifier.html