Sign in

docs ILE Concepts

Partitions created by IPA

Partitions created by IPA

Partitions created by IPA

The final program or service program created by IPA consists of partitions. IPA creates a *MODULE for each partition. Partitions have two purposes:

  • They improve the locality of reference in a program by concentrating related code in the same region of storage.
  • They reduce the memory requirements during object code generation for that partition.

There are three types of partitions:

  • An initialization partition. This contains initialization code and data.
  • The primary partition. This contains information for the primary entry point for the program.
  • Secondary or other partitions.

IPA determines the number of each type of partition in the following ways:

  • The ‘partition’ directive within the control file specified by the IPACTLFILE parameter. This directive indicates how large to make each partition.

  • The connectivity within the program call graph. Connectivity refers to the volume of calls between functions in a program.

  • Conflict resolution between compiler options specified for different compilation units. IPA attempts to resolve conflicts by applying a common option across all compilation units. If it cannot, it forces the compilation units for which the effects of the original option are to be maintained into separate partitions.

    One example of this is the Licensed Internal Code Options (LICOPTs). If two compilation units have conflicting LICOPTs, IPA cannot merge functions from those compilation units into the same output partition. Refer to Partition Map for an example of the Partition Map listing section. IPA creates the partitions in a temporary library, and binds the associated *MODULEs together to create the final program or service program. IPA creates the partition *MODULE names using a random prefix (for example, QD0068xxxx where xxxx ranges from 0000 to 9999).

    Because of this, some of the fields within DSPPGM or DSPSRVPGM may not be as expected. The ‘Program entry procedure module’ shows the *MODULE partition name and not the original *MODULE name. The ‘Library’ field for that module shows the temporary library name rather than the original library name. In addition, the names of the modules bound into the program or service program will be the generated partition names. For any program or service program that has been optimized by IPA, the ‘Program attribute’ field displayed by DSPPGM or DSPSRVPGM will be IPA, as will the attribute field of all bound modules for that program or service program.

Note: When IPA is doing partitioning, IPA may prefix the function or data name with @nnn@ or XXXX@nnn@, where XXXX is the partition name, and where nnn is the source file number. This ensures that static function names and static data names remain unique.