VALUE attribute

Standard: F77 F90 F95 F2003 F2008 Example program


<Syntax>

type , VALUE [ , attr ]... :: decl-list

VALUE [ :: ] name [ , name ]...

Each name must be a dummy argument that is a variable.

<Semantics>

Declares that those dummy arguments are to be passed by value. This means that any change to the dummy argument does not affect the actual argument. A dummy argument with the VALUE attribute is not permitted to have the ALLOCATABLE, CODIMENSION, INTENT(INOUT), INTENT(OUT), POINTER or VOLATILE attributes.

Fortran 2003 required that a variable with the VALUE attribute be scalar, and to have constant length type parameters. Fortran 2008 permits a variable with the VALUE attribute be an array (but not assumed-size), and to have non-constant length type parameters.

This attribute is especially useful when interoperating with C procedures, because most C arguments are passed by value.

If a dummy argument has the VALUE attribute, the procedure must be referenced with an explicit interface (if it is a dummy procedure or external procedure, that means it needs an interface block).

<Related>

ENTRY statement, FUNCTION statement, INTENT attribute, INTERFACE statement, SUBROUTINE statement, Type Declaration statement