Nested Subroutines

A subroutine can call another subroutine, and that subroutine can call yet another subroutine. This "nesting" of subroutines — the calling of a subroutine within another subroutine — is limited to a stack of subroutines seven levels deep (not counting the topmost program level). The operation of nested subroutines is as shown below:

MAIN program(top level)End of program

Attempting to execute a subroutine nested more than seven levels deep causes an % #$ error.

Example: A Nested Subroutine.

The following subroutine, labeled S, calculates the value of the expression

a2 + b2 + c2 + d2

as part of a larger calculation in a larger program. The subroutine calls upon another subroutine (a nested subroutine), labeled Q, to do the repetitive squaring and addition. This saves memory by keeping the program shorter than it would be without the subroutine.

Programming Techniques 13–3