Fortran is a strange language. For example, you can pass a function to a function, but you can’t return a function from a function, so functions are halfway first-class objects. And you can only pass a function as an argument if that function was defined in a different module. If the function was defined in the main program, it’s an “internal function”, and this somehow makes it ineligible to be passed as an argument, though it is indistinguishable in any other circumstance.
This language really needs to be redesigned.