An initialization expression must evaluate at compile time to a constant. It is used to specify an initial value for an entity.
In an initialization expression, each operation is intrinsic and each operand is one of the following:
| BIT_SIZE | MINEXPONENT |
| DIGITS | PRECISION |
| EPSILON | RADIX |
| HUGE | RANGE |
| ILEN | SHAPE |
| KIND | SIZE |
| LBOUND | TINY |
| LEN | UBOUND |
| MAXEXPONENT |
Each function argument must be one of the following:
| REPEAT | SELECTED_REAL_KIND |
| RESHAPE | TRANSFER |
| SELECTED_INT_KIND | TRIM |
Each subscript, section subscript, and substring starting and ending point must be an initialization expression.
In an initialization expression, the exponential operator (**) must have a power of type integer.
If an initialization expression invokes an inquiry function for a type parameter or an array bound of an object, the type parameter or array bound must be specified in a prior specification statement (or to the left of the inquiry function in the same statement).
Examples
The following examples show valid and invalid initialization (constant) expressions:
| Valid | |
-1 + 3 | |
SIZE(B) | ! B is a named constant |
7_2
| |
INT(J,
4) | ! J is a named constant |
SELECTED_INT_KIND (2) |
|
| Invalid | Explanation |
SUM(A)
| Not an allowed function. |
A/4.1 - K**1.2 | Exponential does not have integer power (A and K are named constants). |
HUGE(4.0) | Argument is not an integer. |
For More Information: