Binding Multiple Modules

This example shows you how to use the CRTPGM command to bind two ILE RPG modules into a program TRPT. In this program, the following occurs:
  • The module TRANSRPT reads each transaction record from a file TRNSDTA.
  • It then calls procedure Trans_Inc and Proc_Name in module TRANSSVC using bound calls within expressions.
  • Trans_Inc calculates the income pertaining to each transaction and returns the value to the caller
  • Proc_Name determines the product name and returns it
  • TRANSRPT then prints the transaction record.
Source for TRANSRPT, TRANSSVC, and TRNSDTA is shown in Figure 1, Figure 1 and Figure 2 respectively.
  1. First create the module TRANSRPT. Type:
    CRTRPGMOD MODULE(MYLIB⁄TRANSRPT)
  2. Then create module TRANSSVC by typing:
    CRTRPGMOD MODULE(MYLIB⁄TRANSSVC)
  3. To create the program object, type:
    CRTPGM PGM(MYLIB/TRPT) MODULE(TRANSRPT TRANSSVC)
           ENTMOD(*FIRST) ACTGRP(TRPT)

The CRTPGM command creates a program object TRPT in the library MYLIB.

Note that TRANSRPT is listed first in the MODULE parameter. ENTMOD(*FIRST) will find the first module with a program entry procedure. Since only one of the two modules has a program entry procedure, they can be entered in either order.

The program TRPT will run in the named activation group TRPT. The program runs in a named group to ensure that no other programs can affect its resources.

Figure 1 shows an output file created when TRPT is run.

Figure 1. File QSYSPRT for TRPT
Product name                    Quantity        Income
------------------------------  --------        ------------
Large                                245          330,750.00
Super                                 15           52,500.00
Super Large                            0                 .00
Super Jumbo                          123        2,952,000.00
Incredibly Large Super Jumbo          15          912,000.00
***Unknown***                         12                 .00
Total:         4,247,250.00