# How to avoid multiple type definitions due to different kinds?

**URL:** <https://fortran-lang.discourse.group/t/how-to-avoid-multiple-type-definitions-due-to-different-kinds/2913>\
**Category:** Help\
**Created:** [March 8, 2022, 11:23am UTC](https://fortran-lang.discourse.group/t/how-to-avoid-multiple-type-definitions-due-to-different-kinds/2913 "2022-03-08T11:23:15Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![Ali](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ali/32/751_2.png) [@Ali](https://fortran-lang.discourse.group/u/Ali)\
**Post date:** [March 8, 2022, 1:47pm UTC](https://fortran-lang.discourse.group/t/how-to-avoid-multiple-type-definitions-due-to-different-kinds/2913/3 "2022-03-08T13:47:50Z")

</div>

Thanks @msz59 for your reply.

Using interface procedure it is possible, but I am looking for other possibilities.

```auto
MODULE MOD_REL

   TYPE :: TYP_REL(k)
      INTEGER, KIND :: k = 8
      REAL(KIND=k), ALLOCATABLE, DIMENSION(:, :) :: value
   END TYPE TYP_REL

INTERFACE PRC1
  MODULE PROCEDURE PRC1_REL8
  MODULE PROCEDURE PRC1_REL16
END INTERFACE PRC1

CONTAINS

    SUBROUTINE PRC1_REL8(this)
        CLASS(TYP_REL(k=8)) :: this
        PRINT *, this%k
    END SUBROUTINE PRC1_REL8

    SUBROUTINE PRC1_REL16(this)
        CLASS(TYP_REL(k=16)) :: this
        PRINT *, this%k
    END SUBROUTINE PRC1_REL16

END MODULE MOD_REL

```

```auto
PROGRAM MAIN

   USE MOD_REL
   IMPLICIT NONE

   INTEGER :: istat
   CHARACTER(len=80) :: msg
   TYPE (TYP_REL(k=8)) :: r8
   TYPE (TYP_REL(k=16)) :: r16

   ALLOCATE(r8%value(10,10), stat=istat, errmsg=msg, source=8.0_8)
   IF ( istat /= 0 ) STOP msg
   ALLOCATE(r16%value(5,5), stat=istat, errmsg=msg, source=16.0_16)
   IF ( istat /= 0 ) STOP msg
   CALL PRC1(r8)
   CALL PRC1(r16)
   PRINT *, shape(r8%value), shape(r16%value), r8%value(1,1), r16%value(1,1)

END PROGRAM MAIN

```

---

_[View the full topic](https://fortran-lang.discourse.group/t/how-to-avoid-multiple-type-definitions-due-to-different-kinds/2913)._
