The definition of SYSTEM.MIN_INT and SYSTEM.MAX_INT AI-00304/05 1
88-11-04 BI WA
| !standard 13.07.01 (02) 88-11-04 AI-00304/05
!standard 13.07.01 (03)
!standard 03.05.04 (13)
!class binding interpretation 84-10-16
| !status approved by WG9 88-10-28
!status ARG-approved 88-05-10 (reviewed)
!status ARG-approved (10-1-1) 88-01-19 (pending editorial review)
!status work-item 86-01-27
!status received 84-10-16
!references 83-00455, 83-00893
!topic The definition of SYSTEM.MIN_INT and SYSTEM.MAX_INT
!summary 86-01-27
SYSTEM.MIN_INT is the smallest value of all predefined integer types,
excluding type universal_integer. SYSTEM.MAX_INT is the largest value of all
predefined integer types, excluding type universal_integer.
!question 88-03-30
13.7.1(2, 3) says that SYSTEM.MIN_INT (resp. MAX_INT) is "The smallest (...)
[resp. largest] value of all predefined integer types." 3.5.4(8) explicitly
calls universal_integer a predefined integer type. What are the smallest and
largest values of type universal_integer? If type universal_integer includes
more integer values than MIN_INT .. MAX_INT, then shouldn't 13.7.1(2, 3)
exclude universal_integer?
!recommendation 86-01-27
SYSTEM.MIN_INT is the smallest value of all predefined integer types,
excluding type universal_integer. SYSTEM.MAX_INT is the largest value of all
predefined integer types, excluding type universal_integer.
!discussion 88-03-30
3.5.4(8) says:
Integer literals are the literals of an anonymous predefined
integer type that is called universal_integer ... .
Since the standard places no restrictions on how large integer literals may
be, the type universal_integer is effectively unbounded. However, 4.10(5)
allows an implementation to avoid supporting excessively large universal_
integer values in the following circumstances:
For the evaluation of an operation of a nonstatic universal
expression, an implementation is allowed to raise the exception
NUMERIC_ERROR only if the result of the operation is ... an
integer value greater than SYSTEM.MAX_INT or less than
SYSTEM.MIN_INT.
That is, the range MIN_INT .. MAX_INT is intended to reflect the range of
predefined integer types other than universal_integer.