Besides decimal constants, Fortran also supports binary (b
),
octal (o
) and hexadecimal (z
) integer constants. The
syntax is: ‘prefix quote digits quote’, were the prefix is
either b
, o
or z
, quote is either '
or
"
and the digits are 0
or 1
for binary,
between 0
and 7
for octal, and between 0
and
F
for hexadecimal. (Example: b'01011101'
.)
Up to Fortran 95, BOZ literal constants were only allowed to initialize
integer variables in DATA statements. Since Fortran 2003 BOZ literal
constants are also allowed as actual arguments to the REAL
,
DBLE
, INT
and CMPLX
intrinsic functions.
The BOZ literal constant is simply a string of bits, which is padded
or truncated as needed, during conversion to a numeric type. The
Fortran standard states that the treatment of the sign bit is processor
dependent. Gfortran interprets the sign bit as a user would expect.
As a deprecated extension, GNU Fortran allows hexadecimal BOZ literal
constants to be specified using the X
prefix. That the BOZ literal
constant can also be specified by adding a suffix to the string, for
example, Z'ABC'
and 'ABC'X
are equivalent. Additionally,
as extension, BOZ literals are permitted in some contexts outside of
DATA
and the intrinsic functions listed in the Fortran standard.
Use -fallow-invalid-boz to enable the extension.