Example: Program prolog areas

The following example shows LIST output for the program prolog area. The Program Prologue Area (PPA) is comprised of several sections that contain information about the compiled program.

There is a PPA1 for every procedure in your program, including procedures generated by the compiler. The offset to its corresponding PPA1 is recorded at offset 12 (X'C') from the start of each procedure. The PPA1 contains information about the procedure as well as offsets to the PPA2 and PPA3 sections.

For details on how to use the program prolog areas to locate information in the listing file, see z/OS® Language Environment® Vendor Interfaces.


     1        2                                                           3            4
                      PPA1:  Entry Point Constants
  0081E0  1CCEA506                                               =F'483304710'      Flags
  0081E4  00008310                                               =A(PPA2-IGYTCARA)
  0081E8  00008378                                               =A(PPA3-IGYTCARA)
  0081EC  00000000                                               =F'0'              No EPD
  0081F0  FFFE0000                                               =F'-131072'        Register Save Mask
  0081F4  40000000                                               =F'1073741824'     Member Flags
  0081F8  90                                                     =AL1(144)          Flags
  0081F9  000978                                                 =AL3(2424)         Callee's DSA use/8
  0081FC  0000                                                   =AL1(0)            Flags
  0081FE  0012                                                   =H'18'             Offset/2 to CDL
  008200  D00006D0                                               =F'-805304624'     State variable location
  008204  00000000                                               =F'0'              CDL function length/2
  008208  00000000                                               =F'0'              CDL function EP offset
  00820C  00000000                                               =F'0'              CDL prolog
  008210  00000000                                               =F'0'              CDL epilog
  008214  00000000                                               =F'0'              CDL end
  008218  0008  ****                                             AL2(8),C'IGYTCARA'
                     PPA1  End

There is one PPA2 for each program. The offset to the PPA2 is recorded in each PPA1. The PPA2 contains offsets to the Timestamp and Version Information section of the listing as well as to the PPA4 section.

If the TEST option is not in effect, the PPA2 section looks like this:
                     PPA2:  Entry Point Constants
  000800  04002203                                               =F'67117571'       Flags
  000804  FFFFF800                                               =A(CEESTART-PPA2)
  000808  00000058                                               =F'88'             A(PPA4-PPA2)
  00080C  FFFFFFB0                                               =A(TIMESTMP-PPA2)
  000810  FFFFF800                                               =A(PrimaryEntryPoint-PPA2)
  000814  02200000                                               =F'35651584'       Flags
                     PPA2  End
If the TEST option is in effect, the PPA2 section looks like this:
                     PPA2:  Entry Point Constants
  000830  04002203                                               =F'67117571'       Flags
  000834  FFFFF7D0                                               =A(CEESTART-PPA2)
  000838  00000058                                               =F'88'             A(PPA4-PPA2)
  00083C  FFFFFFB0                                               =A(TIMESTMP-PPA2)
  000840  FFFFF7D0                                               =A(PrimaryEntryPoint-PPA2)
  000844  02600000                                               =F'39845888'       Flags
                     PPA2  End

There is one PPA3 for each program (including each nested program) in a COBOL source file. Each entry contains offsets, relative to the PPA3 itself, to the base locator table and to the special register table. The PPA3 also contains an offset from the start of the program to the first COBOL statement.

                    PPA3:  Entry Point Constants
  0014D8  00000000                                               =F'0'               Flags
  0014DC  000000C0                                               =F'192'             A(Base_Locator_Table-PPA3)
  0014E0  000000D8                                               =F'216'             A(Special_Register_Table-PPA3)
  0014E4  00000184                                               =X'184'             A(User_Entry-CUEntry)
                     PPA3  End

There is one PPA4 for each program. It has offsets to various compiler generated tables, such as the storage (the Initial Heap Storage Map and Below The Line Storage Map sections). The offset to the PPA4 is recorded in a field of the PPA2.

                   PPA4:  Entry Point Constants
  000710  22000000                                               =F'570425344'      Flags 1
  000714  00020100                                               =F'131328'         Flags 2
  000718  00000000                                               =F'0'              A(NORENTstatic)
  00071C  00000000                                               =F'0'              Q(RENTstatic)
  000720  0000006C                                               =F'108'            A(DATA31_address_cell-RENTstatic)
  000724  FFFFF8F0                                               =F'-1808'          A(Code-PPA4)
  000728  00000760                                               =F'1888'           Code Length
  00072C  00000000                                               =F'0'              Length NORENTstatic
  000730  00000070                                               =F'112'            Length RENTstatic
  000734  00000094                                               =F'148'            Length DATA31
  000738  003F                                                   =X'3F'             A(CUName-PPA4)
  00073A  0000                                                   =X'0'              PPA4 Minor Ver
  000744  7FFFFFFF                                               =X'7FFFFFFF'       Offset UsrWrkStrg
  000748  00000000                                               =X'0'              Length UsrWrkStrg
  00074C  00                                                     =X'0'              Has Externals
  00074D  0000                                                   =X'0'              A(SYSDEBUGName-PPA4)
                    PPA4  End

Relative location, in hexadecimal format, of the PPA field in the object module
The contents of the field, in hexadecimal
An assembler-like syntax defining the field
A description of the contents of the field.

Related references  
WORKING-STORAGE SECTION changes (Enterprise COBOL for z/OS Migration Guide)
z/OS Language Environment Vendor Interfaces