Well, there are a lot of things that the compiler can check.
I’m saying that the interface to a procedure is checked if the procedure has an explicit interface.
That means: place every procedure that you write inside a module, and for some specific use inside another procedure. So basically after the contains statement.
There are other important concepts like the “use association” and “host association” to be aware of.
Which other languages do you know?