Module ComplexType Implicit None Type ComplexNumber Real :: realnum, imagenum End Type ComplexNumber Interface Assignment(=) Module Procedure ComplexAssign End Interface Contains Subroutine ComplexAssign(z,realvalue) Type(ComplexNumber), Intent(INOUT) :: z Real, Intent(IN) :: realvalue z%realnum = realvalue z%imagenum = realvalue End Subroutine ComplexAssign End Module ComplexType Program Main Use ComplexType Implicit None Type(ComplexNumber) :: z Real :: a Print *, " Type a real value a : " Read *, a z = a Print *, " a + ai = ", z End Program Main