IBM AS/400 Frozen Dessert Maker User Manual


 
Multiple Procedures Module
The number and nature of the parameters
Which parameters must be passed, and which are optionally passed
Whether operational descriptors are passed (for a procedure)
The data type of the return value, if any (for a procedure)
The prototype is used by the compiler to call the program or procedure correctly,
and to ensure that the caller passes the correct parameters. Figure 13 shows a
prototype for a procedure FmtCust, which formats various fields of a record into
readable form. It has two output parameters.
* Prototype for procedure FmtCust (Note the PR on definition
* specification.) It has two output parameters.
D FmtCust PR
D Name 100A
D Address 100A
Figure 13. Prototype for FmtCust Procedure
To produce the formatted output fields, FmtCust calls a procedure NumToChar.
NumToChar has a numeric input parameter that is passed by value, and returns a
character field. Figure 14 shows the prototype for NumToChar.
* Prototype for procedure NumToChar
* The returned value is a character field of length 31.
D NumToChar PR 31A
* The input parameter is packed with 30 digits and 0 decimal
* positions, passed by value.
D NUMPARM 30P 0 VALUE
Figure 14. Prototype for NumToChar Procedure
If the program or procedure is prototyped, you call it with CALLP or within an
expression if you want to use the return value. You pass parameters in a list that
follows the name of the prototype, for example,
name (parm1 : parm2 : ...)
.
Figure 15 shows a call to FmtCust. Note that the names of the output parameters,
shown above in Figure 13, do not match those in the call statement. The param-
eter names in a prototype are for documentation purposes only. The prototype
serves to
describe
the attributes of the call interface. The actual definition of call
parameters takes place inside the procedure itself.
C CALLP FmtCust(RPTNAME : RPTADDR)
Figure 15. Calling the FmtCust Procedure
Using prototyped calls you can call (with the same syntax):
Programs that are on the system at run time
Exported procedures in other modules or service programs that are bound in
the same program or service program
Subprocedures in the same module
Chapter 4. Creating an Application Using Multiple Procedures 35