Subsections
Environment enquiries
Algol 68 was the first programming language to contain declarations
which enable a programmer to determine the characteristics of the
implementation. The enquiries are divided into a number of different
groups. The actual values of the Linux port of the a68toc compiler
are placed in square brackets. Those defined in the Revised Report
are marked with (RR).
Arithmetic enquiries
These enquiries are so numerous that they are further
subdivided.
Enquiries about precisions
Any number of LONG
or SHORT
can be given in the mode
specification of numbers, but only a few such modes are distinguishable
in any implementation. The following environment enquiries tell which
modes are distinguishable. Note particularly that there are more
distinguishable precisions available for INT
and BITS
than there are for REAL
and COMPL
in the
a68toc implementation.
- INT int lengths (RR)
[2]
- 1 + the number of extra lengths of integers.
- INT int shorths (RR)
[3]
- 1 + the number of short lengths of
integers.
- INT real lengths (RR)
[1]
- 1 + the number of extra lengths of real
numbers.
- INT real shorths (RR)
[2]
- 1 + the number of short lengths of real numbers.
- INT bits lengths (RR)
[2]
- 1 + the number of extra lengths of
BITS
.
- INT bits shorths (RR)
[3]
- 1 + the number of short lengths of
BITS
.
- INT bytes lengths (RR)
[0]
- Bytes are not implemented by the a68toc
compiler.
- INT bytes shorths (RR)
[0]
- Bytes are not implemented by the a68toc compiler.
Enquiries about ranges
SHORT SHORT INT
short short max
int (RR) [127]
- The maximum value of mode
SHORT SHORT INT
.
- SHORT INT short max int
(RR) [32 767]
- The maximum value of mode
SHORT INT
.
- INT max int (RR)
[2 147 483 647]
- The maximum value of mode
INT
.
- LONG INT long max int (RR)
- [9 223 372 036 854 775 807]
The maximum value of mode
LONG INT
.
- SHORT REAL short min real
[0.117 55e-37]
- The smallest representable short real. It should not be confused with
short small real
.
- SHORT REAL short max real (RR)
[0.340 28e+39]
- The largest short real value storable.
- SHORT REAL short small real (RR)
- [1.192 09e-7]
The smallest short real which, when added to 1.0 makes a discernible
difference.
- REAL min real
[0.197 626 258 336 50e-322]
- The smallest representable real. It should not be confused with
small real
.
- REAL max real (RR)
[0.179 769 313 486 23e+309]
- The largest real value storable.
- REAL small real (RR)
[0.222 044 604 925 031e-15]
- The smallest real which, when added to 1.0, makes a discernible
difference.
- INT bytes per bits (RR)
[4]
- Number of bytes for a machine word.
Internal sizes of modes
- INT short short int width
[3]
- The maximum number of decimal digits expressible by a value of mode
SHORT SHORT INT
.
- INT short int width
[5]
- The maximum number of decimal digits expressible by a value of mode
SHORT INT
.
- INT int width [10]
- The maximum number of decimal digits expressible by a value of mode
INT
.
- INT long int width
[19]
- The maximum number of decimal digits expressible by a value of mode
LONG INT
.
- INT short short bits width
(RR) [8]
- The number of bits required to hold a value of mode
SHORT SHORT BITS
.
- INT short bits width (RR)
[16]
- The number of bits required to hold a value of mode
SHORT
BITS
.
- INT bits width (RR)
[32]
- The number of bits required to hold a value of mode
BITS
.
- INT long bits width (RR)
[64]
- The number of bits required to hold a value of mode
LONG BITS
.
- INT bytes width
(RR) [0]
- The mode
BYTES
is not implemented.
- INT short real precision
[24]
- The number of bits used for the mantissa of a short real.
- INT short real width
[6]
- The maximum number of significant decimal digits in a small
real.
- INT short min exp
[- 125]
- The minimum exponent of a short real.
- INT short max exp [128]
- The maximum exponent of a short real.
- INT short exp width
[2]
- The maximum number of decimal digits in the exponent of a short real.
This can be less than the number of digits occupied by
short max exp
because any decimal digit can be represented. For
example, 99 but not 999.
- INT real precision [53]
- The number of bits used for the mantissa of a real.
- INT real width
[15]
- The maximum number of significant decimal digits in a real.
- INT min exp
[- 1021]
- The minimum exponent of a real.
- INT max exp [1024]
- The maximum exponent of a real.
- INT exp width
[3]
- The maximum number of decimal digits in the exponent of a real. See
also
short exp width
.
Sizes used in binary transput
These values give the sizes of each mode when transput using
put bin or get
bin.
- INT long bits bin bytes [8]
- INT bits bin bytes [4]
- INT short bits bin bytes [2]
- INT short short bits bin bytes [1]
- INT bool bin bytes [4]
- INT long int bin bytes [8]
- INT int bin bytes [4]
- INT short int bin bytes [2]
- INT short short int bin bytes
[1]
- INT real bin bytes [8]
- INT short real bin bytes [4]
- INT compl bin bytes [16]
- INT short compl bin bytes [8]
- INT char bin bytes [1]
Particular arithmetic values
- REAL infinity
Defined by the C mathematics library as HUGE_VAL
.
- SHORT REAL short pi [3.14159]
- REAL pi
[3.141 592 653 589 79]
- REAL log2
[0.301 029 995 663 981]
This is the value of
log102.
Character set enquiries
The a68toc implementation of Algol 68 is
bedevilled by the peculiar limitations of the C programming language
in which a character is actually an integer and indistinguishable
from such. Furthermore, a C `character' is a signed integer,
equivalent to a value of mode SHORT SHORT INT
. Thus C
`characters' range from -128 to +127. Algol 68, on the other
hand, has the mode CHAR
which, at a high level, is distinct
from values of both mode INT
and mode SHORT SHORT INT
.
The absolute value of Algol 68 characters range from 0 to the value
of max abs char
. Furthermore, the operator REPR
will
convert any INT
upto max abs char
to a character. Be
warned that the C value of REPR 225
, for example, is -31!
What character is represented by REPR 225
will depend on the
character set used by the displaying device. An ISO 8859-1 character
set, for example, will display `á'. The environment enquiries in
this section are limited to a range enquiry and the values of
commonly required characters.
- INT max abs char
(RR) [255]
The largest positive integer which can be represented as a character.
- CHAR null character
(RR)
[REPR 0]
- CHAR nul ch
[REPR 0]
This is a synonym for
null character
.
- CHAR blank
(RR)
[REPR 32]
This is a space character.
- CHAR error char
(RR) [ * ]
This character is used by the conversion routines for invalid values.
- CHAR flip (RR)
[T]
This character is used to represent
TRUE
as an external value.
- CHAR flop (RR)
[F]
This character is used to represent
FALSE
as an external value.
- CHAR cr
[REPR 13]
This character is sometimes used as a line terminator, usually in
association with
lf
.
- CHAR lf
[REPR 10]
This character terminates lines on Linux.
- CHAR ff
[REPR 12]
This character is the “form-feed” character often used for
continuous stationery.
- CHAR tab ch
[REPR 9]
This character is used to provide crude formatting of text files,
particularly those which mimic documents produced by typewriters.
- CHAR esc
[REPR 27]
This character is mainly used to introduce “escape sequences” which
control the format and colour of output on Linux virtual terminals
(VTs) and xterm windows.14.2
- CHAR eof char
[REPR 26]
This character was used to denote the end of a plain text file in the
MS-DOS operating system.
Sian Mountbatten
2012-01-19