Up till Fortran 90/95, the language was primarily intended for calculations. It remains one of the best computational languages ever developed, and is still in heavy use in the financial industry.
However, due in large part to disagreements among members of the Fortran development groups, Fortran 77 was deficient in a number of areas. Most or all of these have since been addressed by Fortran 90/95, however, so they do not represent current language deficiencies. These limitations included:
- Poor string handling, including weak concatenation and length functions.
- Subroutines pass arguments by reference rather than by value, making data protection difficult.
- Data scoping is limited. Variables can either be local or in COMMON blocks, but no other scoping is allowed. As a result, it's not possible to write file-level procedures; shared logic must be in a separate subroutine or repeated via cloning.
- Loop controls are somewhat limited, requiring continued use of the GOTO statement to manage flow in some cases.