A longsety is a sequence of zero or more long bold
tags. The term follows the fashion of the Revised Report, where the
suffix -ety means “or empty”.
The Algol 68 modes int, real, compl,
bits and bytes can be prefixed with any number
of long tag words. The effect of each long is
to double the precision of the mode.
At some point, however, a “saturation” point is reached where the
addition of extra long has no further effect on the mode.
Where that point resides is up to the particular implementation.
For example, if the precision of int is four bytes or
32-bit, the precision of long int is 64-bit, and the
precision of long long int is 128-bit.
A longsety can also be used in an integral denotation in order to specify the mode of the denotation. For example in the formula:
long 20 + long 30
The denotations long 20 and long 30 are of mode
long int, which determines its precision. The reason why
it is important to specify the mode in the denotations is that in
Algol 68 it is not legal to widen to a mode having a different
precision, so the following identity declaration is not legal:
long long int number = 100; # BAD #
This is because the mode of the denotation 100 is int
whereas the expected mode is long long int. This
can be achieved by a longsety in the denotation:
long long int number = long long 100;
Note that some Algol 68 implementations allow to widen to modes having a different precision.
Simplified [RR 1.2.1.E]:
E) LONGSETY :: long LONGSETY ; EMPTY.