module shape_module type shape_type integer, private :: x_ = 0 integer, private :: y_ = 0 contains procedure, pass (this) :: getx procedure, pass (this) :: gety procedure, pass (this) :: setx procedure, pass (this) :: sety procedure, pass (this) :: moveto procedure, pass (this) :: draw end type shape_type contains include 'shape_module_common_code.f90' end module shape_module