The following declarations declare three subprograms. Since the the procedures b and c are contained within the procedure a, the body of procedures b and c can refer to objects declared in procedure a as well as their own declarations. The fact that procedures b and c are on a next lower level than procedure a is visually indicated by indenting the procedures b and c. This is a good programming style and makes programs more readable. Notice that procedure b and c are on the same level since they are both declared within procedure a. Procedure b can reference its own variables, as well as the variables of procedure a, but not variable j of procedure c because it is not in procedure b's scope or in a scope of a higher level. Likewise, procedure c can not refer to variable i of procedure b. There are two variables named x that are visible to (can be referenced by) procedure b. If x is referenced in procedure b, then it will refer to the variable of the lowest level, in this case the x declared in procedure b.