Fortran 90 では、インターフェイスを使用して関数をオーバーロードできます。ただし、このサイトによると、これらの関数を同じ引数名で定義することはできません。gfortran では、次のコードで十分に機能するため、問題にはならないようです。
interface check
module procedure check_int, check_real
end interface
contains
subroutine check_int(cur, dname, func_name, fname)
integer, allocatable, intent(in) :: cur(:)
character(*) :: dname, func_name, fname
...
end subroutine
subroutine check_real(cur, dname, func_name, fname)
real, allocatable, intent(in) :: cur(:)
character(*) :: dname, func_name, fname
...
end subroutine
それで、そうするのは悪い習慣ですか?
編集:キーワードで関数を呼び出しても何も変わりません。