IBM AS/400 Frozen Dessert Maker User Manual


 
Program/Procedure Call Overview
Recursion
Parameter passing considerations
Calling Programs
You can call OPM or ILE programs by using program calls. A program call is a
call that is made to a program object (*PGM). The called program's name is
resolved to an address at run time, just before the calling program passes control
to the called program for the first time. For this reason, program calls are often
referred to as dynamic calls.
Calls to an ILE program, an EPM program, or an OPM program are all examples of
program calls. A call to a non-bindable API is also an example of a program call.
You use the CALLP operation or both the CALL and PARM operations to make a
program call. If you use the CALL and PARM operations, then the compiler cannot
perform type checking on the parameters, which may result in run-time errors.
When an ILE program is called, the program entry procedure receives the program
parameters and is given initial control for the program. In addition, all procedures
within the program become available for procedure calls.
Calling Procedures
Unlike OPM programs, ILE programs are not limited to using program calls. ILE
programs can also use static procedure calls or procedure pointer calls to call other
procedures. Procedure calls are also referred to as bound calls.
A static procedure call is a call to an ILE procedure where the name of the proce-
dure is resolved to an address during binding — hence, the term static. As a result,
run-time performance using static procedure calls is faster than run-time perform-
ance using program calls. Static calls allow operational descriptors, omitted param-
eters, and they extend the limit (to 399) on the number of parameters that are
passed.
Procedure pointer calls provide a way to call a procedure dynamically. For
example, you can pass a procedure pointer as a parameter to another procedure
which would then run the procedure that is specified in the passed parameter. You
can also manipulate arrays of procedure names or addresses to dynamically route
a procedure call to different procedures. If the called procedure is in the same acti-
vation group, the cost of a procedure pointer call is almost identical to the cost of a
static procedure call.
Using either type of procedure call, you can call:
A procedure in a separate module within the same ILE program or service
program.
A procedure in a separate ILE service program.
Any procedure that can be called by using a static procedure call can also be
called through a procedure pointer.
For a list of examples using static procedure calls, see “Examples of Free-Form
Call” on page 135 and “Examples of CALL and CALLB” on page 150. For exam-
128 ILE RPG for AS/400 Programmer's Guide