First it is common to confuse INTENT(IN) with call by value input. If
the programmers wants a variable to be copied into the routine and
change the values of the entity associated witth that initial value
without those changes propagating up the call chain then in F2003 &
F2008 they can use the VALUE attribute. That is one of the easier
aspects of the compiler to implement so I expect it is almost
universally available. If not then in their code if A is the argument
with the appropriate value they must explicitly copy the value into
another enetity local to the procedure and perform all operations on
that entity. Note that call by value input can be expensive for simple
codes operating on large structures, e.g. arrays.
Second, if the writer of the top level code whose arguments are
INTENT(IN) understands the meaning of INTENT(IN) then he is almost
certainly assuming the value is not changing within the scope of the
code, and that assumption may introduce problems if the low level code
does not obey those assumptions. In any library if the library's code
does not obey the assumed API then the library has the strong potential
for bugs. Fortran's INTENT is a way of making the compiler aware of the
API and enforcing it. For this to work the programmers need to
consistently use INTENT.
INTENT is primarilly about self documenting code and not about
optimization. If the users are consistent in using INTENT, the compiler
can notice inconsistencies that can help you fix the code. In some cases
the compiler will assume that this documentation is correct (even if the
users haven't been consistent in using INTENT so the declarations can
not be fully checked for consistency) and use this assumption for
optimization, but optimization is not the primary intent of INTENT.
Your concerns appear to be caused by your programmers not following good
coding practices. They should first determine in detail what the code is
intended to do before writing the code. They should then write the
comments and the procedure interfaces befor writing the body of the
codes, Compiling the subprogram stubs would then identify any API
problems before large bodies of code gets commited to your version
control system. If necessary they should then negotiate changes in the
API with the writers of the top level code.
It is difficult for most people, myself included, to maintain this level
of discipline, but as a manager it is your job to let them know that
this is expected and how INTENT can help with this expectation.