An `initialization expression` is a constant expression.
Rules for constant expressions also apply to initialization expressions,
except that items that form primaries are constrained by the following
rules:

- The exponentiation operation can only have an integer power.
- A primary that is an elemental intrinsic function reference must be of type integer or character, where each argument is an initialization expression of type integer or character.
- Only one of the following transformational functions can be
referenced:
**REPEAT**,**RESHAPE**,**SELECTED_INT_KIND**,**SELECTED_REAL_KIND**,**TRANSFER**, or**TRIM**. Each argument must be an initialization expression. The following generic intrinsic functions (and related specific functions) are also allowed:**+-------------------------------IBM Extension--------------------------------+**

- ABS (and only the
**ABS**,**DABS**, and**QABS**specific functions) - AIMAG, IMAG
- CONJG
- DIM (and only the
**DIM**,**DDIM**, and**QDIM**specific functions) - DPROD
- INT, REAL, DBLE, QEXT, CMPLX, DCMPLX, QCMPLX
- MAX
- MIN
- MOD
- NINT
- SIGN
- INDEX, SCAN, VERIFY (optional 3rd argument allowed)
**+----------------------------End of IBM Extension----------------------------+** - NULL

If an initialization expression includes a reference to an inquiry function for a type parameter or an array bound of an object specified in the same specification part, the type parameter or array bound must be specified in a prior specification of the specification part. The prior specification can be to the left of the inquiry function in the same statement.

3.4**3 KIND(57438) (/'desk','lamp'/) 'ab'//'cd'//'ef'