This code re-produces:
module A implicit none interface pure real module function getItem(id) result(res) integer, intent(in) :: id pointer :: res end end interface real, target :: items(10) end module submodule(A) A1 implicit none contains pure real module function getItem(id) result(res) integer, intent(in) :: id pointer :: res res => items(id) end end submodule