Next: Real array indices, Previous: `Q`

exponent-letter, Up: Extensions implemented in GNU Fortran [Contents][Index]

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.