Spec-Zone.ru › GNU Fortran 12

5.1.14 Поддержка констант Холлерита

GNU Fortran поддерживает константы Холлерита в присваиваниях, операциях DATA , аргументах функций и подпрограмм. Константа Холлерита записывается как строка символов, перед которой стоит целая константа, указывающая количество символов, и буква H или h, и хранится в байтовом формате в числовой (INTEGER, REAL, или COMPLEX), LOGICAL или CHARACTER переменной. Константа будет дополнена пробелами или усечена, чтобы подойти к размеру переменной, в которой она хранится.

Примеры корректного использования констант Холлерита:

complex*16 x(2)
data x /16Habcdefghijklmnop, 16Hqrstuvwxyz012345/
x(1) = 16HABCDEFGHIJKLMNOP
call foo (4h abc)

Примеры констант Холлерита:

integer*4 a
a = 0H         ! Invalid, at least one character is needed.
a = 4HAB12     ! Valid
a = 8H12345678 ! Valid, but the Hollerith constant will be truncated.
a = 3Hxyz      ! Valid, but the Hollerith constant will be padded.

В общем случае, константы Холлерита использовались для предоставления базовой возможности работы со строками символов в ранних компиляторах Fortran, до появления переменных типа CHARACTER в Fortran 77; в таких случаях стандартный эквивалент — преобразовать программу для использования правильных строк символов. В некоторых случаях может быть ситуация, когда цель заключается именно в инициализации числовой переменной заданной последовательностью байтов. В таких случаях тот же результат можно получить, используя оператор TRANSFER, как в этом примере.

integer(kind=4) :: a
a = transfer ("abcd", a)     ! equivalent to: a = 4Habcd

Использование опции -fdec расширяет поддержку констант Холлерита для сравнений:

integer*4 a
a = 4hABCD
if (a .ne. 4habcd) then
  write(*,*) "no match"
end if

Поддерживаемые типы — числовые (INTEGER, REAL, или COMPLEX), и CHARACTER.

Далее: Преобразование символов, Предыдущее: Неявное преобразование значений LOGICAL и INTEGER, Вверх: Расширения, реализованные в GNU Fortran [Оглавление][Индекс]

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

Spec-Zone.ru

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