Older routines in the code I maintain declare dummy arguments with no intent at all, newer ones use intent(in), intent(out) or intent(inout). Everything compiles either way. One old routine even modifies an argument that a caller passes as the literal 5, and that program crashes on one machine and runs on another.
Is an argument without intent the same as intent(inout)? What does each intent actually promise, and is it worth adding them to existing code?




