This type of construct is strongly encouraged, as it allows the compiler to perform argument consistency checking across routine boundaries. The final reason to store multiple routines and their data in a single module is that the scope of the data defined in the module can be limited to only the routines which are also in the module. If none of the above conditions hold, it is not acceptable to simply glue together a bunch of functions or subroutines in a single file. Modules MUST be named the same as the file in which they reside. The use of common blocks is deprecated in Fortran 90 and their continued use in the CCM is strongly discouraged.
Modules are a better way to declare static data.
The use of array syntax is not encouraged. Though compact and concise, many compilers have trouble generating efficient code from source written in this notation. Long, complicated loops containing much work are best coded as explicitly indexed loops. Thus all variables must be explicitly typed. Each function, subroutine, or module will contain a header immediately following the routine declaration.