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: