A program is the highest level in the POU hierarchy. Functions and function blocks can be called from a program.
A program can only be loaded by a task. On the other hand, programs can call functions (FUN) and function blocks (FB), but functions (FUN) and function blocks (FB) cannot call programs.