# Procedure Characteristics

The characteristics of a procedure are as follows:

- Whether it is classified as a function or subroutine

- The characteristics of its result value if it is a function

- The characteristics of its dummy arguments

- Whether it is pure

- Whether it is impure

- Whether it is elemental

- Whether it has the BIND attribute

## Characteristics of Dummy Arguments

Each dummy argument has the characteristic that it is a dummy data object, a dummy procedure, or an asterisk indicating an alternate return indicator.

The characteristics of a dummy data object are as follows:

- Its type and type parameters (if any)

- Its shape

- Its intent

- Its corank

- Its codimensions

- Whether it is optional

- Whether it is allocatable

- Whether it has the ASYNCHRONOUS, CONTIGUOUS, VALUE, or VOLATILE attribute

- Whether it is a pointer or a target

- Whether it is polymorphic

- Whether or not it is assumed rank or assumed type

If a type parameter of an object or a bound of an array is not a constant expression, a characteristic is the exact dependence on the entities in the expression. Another characteristic is whether a shape, size, or type parameter is assumed or deferred.

The characteristics of a dummy procedure are as follows:

- Whether it is optional

- The explicitness of its interface

- Its characteristics as a procedure if the interface is explicit

- Whether it is a pointer

## Characteristics of Function Results

The characteristics of a function result are as follows:

- Its type, type parameters (if any), and rank

- Whether it is allocatable

- Whether it has the CONTIGUOUS attribute

- Whether it is a pointer

- Whether it is a procedure pointer

- Whether it is polymorphic

If a function result is an array that is not allocatable or a pointer, a characteristic is its shape.

If a type parameter of a function result or a bound of a function result array is not a constant expression, a characteristic is the exact dependence on the entities in the expression.

If type parameters of a function result are deferred, a characteristic is which parameters are deferred. Another characteristic is whether the length of a character function result is assumed.

Parent topic: Program Units and Procedures