Spec-Zone.ru › GNU Fortran 14

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.

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

Spec-Zone.ru

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