You might want to check plusFORT, a tool that was introduced here by their developers. It is commercial software, but I had the opportunity to try it since people in this Discourse got a free license for a limited amount of time. It was actually quite good, considering how hard what it tries to do is. If I had to convert massive legacy codes to a more modern Fortran, I would consider buying a license.
Among other things, plusFORT automatically adds intent
attributes to procedure argument declarations, which is one of the things you want to do. It is also very configurable to what it does and how. But I bet the legacy code you have is also full of goto
statements, which is the worst problem with old codes, causing spaghetti hell. Restructuring the code to minimize goto
s is also a thing plusFORT tries to do.