Calling Subroutines (XEQ, RTN)

A subroutine is a routine that is called from (executed by) another routine and returns to that same routine when the subroutine is finished. The subroutine must start with a LBL and end with a RTN. A subroutine is itself a routine, and it can call other subroutines.

„XEQ must branch to a label (LBL) for the subroutine. (It cannot branch to a line number.)

„At the very next RTN encountered, program execution returns to the line after the originating XEQ.

For example, routine Q in the "Normal and Inverse–Normal Distributions" program in chapter 16 is a subroutine (to calculate Q(x)) that is called from routine D by line  % . Routine Q ends with a RTN instruction that sends program execution back to routine D (to store and display the result) at line D0004. See the flow diagrams below.

The flow diagrams in this chapter use this notation:

 !  €M

Program execution branches from

this line to

 

 

the line marked  M ("from 1").

 

 

 

 

 

   M

Program execution branches from a line

 

 

marked € M ("to 1") to this line.

 

 

 

 



 

 

Starts here.

 "! %

 

 

 % 

€ M

Calls subroutine Q.



! 

 N

Returns here.

 #$ 

 

 



! 

 

Starts D again.

  

 M

Starts subroutine.

.

 

 

 

.

 

 

 

.

 

€ N

Returns to routine D.



!

13–2Programming Techniques