Fortran 90 has four useful program units
The place where execution begins and where control should eventually return before the program terminates.
A parameterised named sequence of code which performs a specific task and can be invoked from within other program units.
As a SUBROUTINE but returns a result in the function name (of any specified type and kind).
A program unit which can contain procedures and declarations. It is intended to be attached to any other program unit where the entities defined within it become accessible.
MODULE program units are new to Fortran 90 and are supposed to replace the unsafe FORTRAN 77 features such as COMMON, INCLUDE, BLOCK DATA as well as adding a much needed (limited) `object oriented' aspect to the language. Their importance cannot be overstressed and they should be used whenever possible.