I agree with the compiler rejection. Fortran 2003 (and onwards) have a constraint that all length type parameters of a passed-object dummy argument must be assumed. Cheers, -----Original Message----- From: Anton Shterenlikht Sent: Thursday, August 17, 2017 11:36 PM To: [log in to unmask] Subject: [COMP-FORTRAN-90] type-bound procedure, length type parameter with default value I think this module is conforming: module m type :: t( l ) integer, len :: l=30 contains procedure :: s end type t contains subroutine s( a ) class( t ) :: a end subroutine s end module m One compiler rejects it with: All length type parameters of the passed object dummy argument must be assumed. [A] subroutine s( a ) ----------------^ Indeed I can change class( t ) :: a to class( t( l=*) ) :: a and this makes the compiler happy, but I think this is unnecessary given that type t gives length parameter l a default value. Also, if I remove a type-bound procedure: module m type :: t( l ) integer, len :: l=30 ! contains ! procedure :: s end type t contains subroutine s( a ) class( t ) :: a end subroutine s end module m then this is acceptable to the compiler too. Am I wrong? Are there different rules for dummy arguments of derived types with length type parameters, for type-bound and non type-bound procedures? Anton