Prolog information blocks

The prolog information exists for every block or internal procedure. A block or internal procedure is found by R15 pointing to an area saved in the DSA. Code to allocate stack space is not required in the Language Environment prolog; see DSA allocation, user stack.

Program Prolog Area-1 (PPA1)

Program Prolog Area-1 (PPA1) appears for every Language Environment entry point. There is a one-to-one correlation between a PPA1 and a DSA. The length of the name offset field (PPA1 offset 00) ranges from 32 to 255 bytes. For the FASTLINK version, the value in this field is the offset to the name length field, divided by 2. Therefore, the value of the field might range from X'10' to X'FF'. An offset zero indicates that an entry name does not exist. A PL/I BEGIN block that does not contain a name is an example of offset zero in the PPA1 length field. The content of the entry/label name field is defined by member languages. The name can be SBCS characters or DBCS characters that are bracketed by shift-codes. Member-defined information can be placed starting at offset X'20'. Fields described as fullword offsets are treated as signed offsets.

Program Prolog Area-2 (PPA2)

Program Prolog Area-2 (PPA2) appears once for each compile unit and can immediately follow the primary PPA1. The control-level field indicates the change level of the prolog. The timestamp and version information normally appears at the end of PPA2 and is optional. The version and release data fields identify the level of the compiler that produced the object code. You can use the PPA2 field at offset X'10' to determine the primary entry point for the compilation unit. It is zero if the compilation unit primary entry point does not exist. Member-defined information can be placed at the end of PPA2.

To establish the member language of a compile unit, use the PPA2 field at offset X'04' in the PPA1 to locate the PPA2. The meaning of the PPA2 field depends on the format of the PPA1. When the PPA1 format is not known, you can use the entry point layout to determine the program model (see Routine layout) and to interpret the content of the PPA1.

Table 1. Entry point types and the contents of the PPA2 field
Entry point layout type Contents of the PPA2 field
Standard Actual address of the PPA2
FASTLINK (includes IEEE floating point) Signed offset to the PPA2 from the entry point
XPLINK Signed offset to the PPA2 from the PPA1

When you have located the PPA2, you can find the one-byte member language identifier at offset X'00' of the PPA2. For example, '05' for COBOL, '10' for PL/I, '11' for Enterprise PL/I. For a complete list of identifiers, see Member identifiers — PPA2 offsets X'00' and X'01'. The PPA2 member identifier might be useful in determining the format of the corresponding PPA1.

Program Prolog Area-3 (PPA3)

Program Prolog Area-3 (PPA3), if available, appears once for every Language Environment entry point. It provides additional information about an entry point, and typically contains information relevant for problem determination tools. There is a one-to-one correlation between a PPA1 and a PPA3. The PPA3 layout might differ among different member languages.

Program Prolog Area-4 (PPA4)

Program Prolog Area-4 (PPA4), if available, appears once for each compilation unit. It provides additional information about a compilation unit, and typically contains information relevant for problem determination tools. There is a one-to-one correlation between a PPA2 and a PPA4. The PPA4 layout may differ among different member languages.

In the timestamp block, the two characters that indicate the version are to be used at the discretion of the high-level language that produces the block. They are not interrogated by Language Environment. In addition, the dump service uses the service level field to add the information about the module service level to the traceback.

Language Environment-conforming prolog for standard routines

The following graphic shows the Language Environment-conforming prolog for standard routines.
Prolog constants format – level 1 (standard); (PPA1 – entry point block)
Prolog constants format – level 1 (standard); (PPA2 – compile unit block)

Language Environment-supported prolog for FASTLINK routines

The following graphic shows the Language Environment-supported prolog for FASTLINK routines.
Prolog constants format – level 2 (FASTLINK); (PPA1 – entry block point)
Prolog constants format – level 2 (FASTLINK); (PPA2 – compile unit block)

Language Environment-supported prolog for IEEE floating-point routines

The following graphic shows the Language Environment-supported prolog for IEEE floating-point routines. The Member Subid (PPA2 offset X'01') is defined by the member language.
Prolog constants format – level 3 (IEEE floating-point); (PPA1 – entry block point)
Prolog constants format – level 3 (IEEE floating-point); (PPA2 – compile unit block)