module abstract_wrwrfnmma_mod type, abstract :: abstract_wrwrfnmma_class contains procedure(wrwrfnmma_binary), deferred, pass(this) :: wrwrfnmma_binary procedure(wrwrfnmma_netcdf), deferred, pass(this) :: wrwrfnmma_netcdf end type abstract_wrwrfnmma_class abstract interface subroutine wrwrfnmma_binary(this,mype) use kinds, only: i_kind import abstract_wrwrfnmma_class implicit none class(abstract_wrwrfnmma_class), intent(inout) :: this integer(i_kind),intent(in ) :: mype end subroutine wrwrfnmma_binary end interface abstract interface subroutine wrwrfnmma_netcdf(this,mype) use kinds, only: i_kind import abstract_wrwrfnmma_class implicit none class(abstract_wrwrfnmma_class), intent(inout) :: this integer(i_kind),intent(in ) :: mype end subroutine wrwrfnmma_netcdf end interface end module abstract_wrwrfnmma_mod