Derived types
A derived type is a composite data type that can contain both intrinsic and derived data types. You can define a derived type by using a type definition. This definition specifies the name of the derived type and its type parameters, components, and procedures. In Fortran 95, a type definition must have at least one component and must not contain procedures. In Fortran 2003, a type definition can have zero or more components, procedures and type parameters. Within a derived type, the names of type parameters, components and procedures must be unique, although the names can be the same as the names outside the scope of the derived type definition.
In Fortran 2003, a derived type can be parameterized by type parameters. Each type parameter is defined to be either a kind or a length type parameter, and can have a default value. For details, see Derived type parameters (Fortran 2003).