Every program has one root procedure which may have one or more subsidiary procedures linked to it. These subsidiary procedures, in turn, may have their own subsidiary procedures and so on, thus forming the procedure tree. The entire procedure tree for a program can be displayed as the Program Flow Diagram.
If you have only one procedure in your program, the Program Flow Diagram will contain only that procedure's name. If you add a second procedure to your program, you must set up a link to the existing procedure. Links are shown on the Program Flow Diagram as a connection between two procedures:

The precedence given to the execution of procedures is top to bottom, then left to right. In the following procedure tree, the procedures are executed in the order in which they are numbered:

The program flow diagram helps you navigate around your program by making the links between the procedures visible. For example in the diagram aboive it is easy to see that PROC4 belongs to PROC2 and that PROC7 belongs to PROC6.
Where a line branches below a Menu-type procedure, the program can follow one of several different paths, depending on the option selected by the user.

The procedure tree architecture has a consequence that can be very annoying. Imagine that in the example above with seven procedures PROC4 is a procedure that handles some piece of processing that may need to be different for different customers - for example it might handle a local sales tax that varied from state to state, or a staff discount facility that was customer specific. We might want to create two programs one with PROC4A and one with PROC4B but otherwise identical. However the only way we can easily do this is also to have a PROC1A, PROC1B and a PROC2A,PROC2B. If later on we need to insert another subsidiary procedure of PROC2 to the right of PROC4 we will need to do the work twice. It would be convenient not to have to worry about this type of situation.
One way to deal with this type of problem is to have an empty procedure in PROC4 and to include PROC4A and PROC4B as subsidiaries controlled by entry conditions that depend on some kind of configuration table. However this type of solution leads to an increase in the size and complexity of your programs and can become unwieldy. An alternative is to use Place Holders which allow you to build multiple variants of a procedure and then switch between them using a configuration program called PROGBIND. You can find out mode about Place Holders here.