An F95 application will usually consist of several program units. One of them is the main program unit, where the execution of the program starts, and where, usually, it ends if everything went all right with the computation. The main program unit is delimited by the following keywords:
program $\langle$program_name$\rangle$ $\qquad \vdots$ end program pname
The other four types of program units defined in F95 are external functions, external subroutines, modules and block data units. The beginnings and ends of these units are designated by the following syntaxes, respectively:
function $\langle$function_name$\rangle$ $\qquad\vdots$ end function $\langle$function_name$\rangle$ subroutine $\langle$subroutine_name$\rangle$ $\qquad\vdots$ end subroutine $\langle$subroutine_name$\rangle$ module $\langle$module_name$\rangle$ $\qquad\vdots$ end module $\langle$module_name$\rangle$ block data $\langle$block_data_name$\rangle$ $\qquad\vdots$ end block data $\langle$block_data_name$\rangle$
As a general principle, the programming task is divided into smaller subtasks, which are then individually solved. Different program units can implement different subtasks; programming units are standalone, in the sense that they do not depend upon implementation details in the body of other program units; the units communicate to each other via specific interfaces, so one unit only needs to be aware of the interfaces to other program units.