Visible to Intel only — GUID: GUID-CF7F9E30-7D66-4B34-A8A6-023142385F4B
Visible to Intel only — GUID: GUID-CF7F9E30-7D66-4B34-A8A6-023142385F4B
Constant Expressions
A constant expression is an expression that you can use as a kind type parameter, a named constant, or to specify an initial value for an entity. It is evaluated when a program is compiled.
In a constant expression, each operation is intrinsic and each primary is one of the following:
A constant or subobject of a constant
A specification inquiry where each designator or function argument is one of the following:
A constant expression
A variable whose properties inquired about are not assumed, deferred, or defined by an expression that is not a constant expression
A reference to the transformational function IEEE_SELECTED_REAL_KIND from the intrinsic module IEEE_ARITHMETIC, where each argument is a constant expression
A kind type parameter of the derived type being defined
A DO variable within an array constructor where each scalar integer expression of the corresponding DO loop is an constant expression
Another constant expression enclosed in parentheses, where each subscript, section subscript, substring starting and ending point, and type parameter value is a constant expression
If a constant 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). The previous specification cannot be in the same entity declaration.
If a reference to a generic entity is included in a constant expression that is in the specification part of a module or submodule, that generic entity shall have no specific procedures defined subsequent to the constant expression in the module or submodule.
Examples
-1 + 3 |
|
SIZE(B) |
! B is a named constant |
7_2 |
|
INT(J, 4) |
! J is a named constant |
SELECTED_INT_KIND (2) |
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. |