GNU Fortran supports Hollerith constants in assignments,
DATA statements, function and subroutine arguments. A Hollerith constant is written as a string of characters preceded by an integer constant indicating the character count, and the letter
h, and stored in bytewise fashion in a numeric (
CHARACTER variable. The constant will be padded with spaces or truncated to fit the size of the variable in which it is stored.
Examples of valid uses of Hollerith constants:
complex*16 x(2) data x /16Habcdefghijklmnop, 16Hqrstuvwxyz012345/ x(1) = 16HABCDEFGHIJKLMNOP call foo (4h abc)
Examples of Hollerith constants:
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.
In general, Hollerith constants were used to provide a rudimentary facility for handling character strings in early Fortran compilers, prior to the introduction of
CHARACTER variables in Fortran 77; in those cases, the standard-compliant equivalent is to convert the program to use proper character strings. On occasion, there may be a case where the intent is specifically to initialize a numeric variable with a given byte sequence. In these cases, the same result can be obtained by using the
TRANSFER statement, as in this example.
integer(kind=4) :: a a = transfer ("abcd", a) ! equivalent to: a = 4Habcd
The use of the -fdec option extends support of Hollerith constants to comparisons:
integer*4 a a = 4hABCD if (a .ne. 4habcd) then write(*,*) "no match" end if
Supported types are numeric (
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.