A complete executable program consists of one or more program units. There is always one (and only one) main program unit: this starts with a PROGRAM statement. There may also be any number of subprogram units of any of the three varieties:
Subroutines and external functions are known collectively as external procedures; block data subprograms are not procedures and are used only for the special purpose of initialising the contents of named common blocks.
Every program unit must end with an END statement.