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:

Note that for all the above items, 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 unless the specification appears in an initialization.

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

Valid constant Expressions

-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)

! This is permitted if A is a PARAMETER array previously declared.

! Otherwise, it is not permitted.

ATAND (45.0)

! This is a standard element intrinsic function with a constant argument.

Invalid constant Expressions

MY_SUM(A)

This is a user-defined function.

A/4.1 - K**1.2

The exponential does not have integer power (A and K are named constants).

See Also