Materialize Bound Program (MATBPGM)

Op Code (Hex) Operand 1 Operand 2

02C6 Materialization request template Bound program or bound service program

Operand 1: Space pointer.

Operand 2: System pointer.

Bound program access

Built-in number for MATBPGM is 109. MATBPGM ( materialization_request_template : address bound_program_or_bound_service_program : address of system pointer )

Warning

The following information is subject to change from release to release. Use it with caution and be prepared to adjust for changes with each new release.

Note: The terms "heap" and "heap space" in this instruction refer to an "activation group-based heap space".

Description

The bound program or bound service program identified by operand 2 is materialized according to the specifications provided by operand 1.

Operand 2 is a system pointer that identifies the bound program or bound service program to be materialized. If operand 2 does not refer to a program object, a pointer addressing invalid object type  (hex 2403) exception will be signaled. If operand 2 refers to a program, but not to a bound program or bound service program, then a program not eligible for operation  (hex 220A) exception will be signaled.

The values in the materialization relate to the current attributes of the materialized bound program. Components are the materializable parts of a bound program or bound service program. Components may not be available for materialization because they were not encapsulated during bound program creation. Other components may not be available for materialization because they contain no data.

This instruction does not process teraspace addresses used for its operands, nor used in any space pointer contained in a template. Any teraspace address use will cause an unsupported space use  (hex 0607) exception to be signaled, whether the issuing program is teraspace capable or not.

Note: The bound program materialization request template takes the form of a variable length array of materialization requests.

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Template size specification
Char(8)
0 0
Number of bytes provided
UBin(4)
4 4
Reserved (binary 0)
Char(4)
8 8
Number of materialization requests
UBin(4)
12 C
Reserved (binary 0)
Char(4)
16 10
Array of materialization requests
[*] Char(32)
16 10
Receiver
Space pointer
32 20
Bound program materialization options
Char(4)
32 20
General bound program materialization options
Char(2)
32 20
General bound program information
Bit 0



0 = Do not materialize
1 = Materialize


32 20
Reserved
Bit 1



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


32 20
Program copyright Strings
Bit 2



0 = Do not materialize
1 = Materialize


32 20
Bound service programs information
Bit 3



0 = Do not materialize
1 = Materialize


32 20
Bound modules information
Bit 4



0 = Do not materialize
1 = Materialize


32 20
Bound program string directory component
Bit 5



0 = Do not materialize
1 = Materialize


32 20
Bound program limits
Bit 6



0 = Do not materialize
1 = Materialize


32 20
Reserved
Bits 7-11



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


32 20
Activation group data imports
Bit 12



0 = Do not materialize
1 = Materialize


32 20
Activation group data exports
Bit 13



0 = Do not materialize
1 = Materialize


32 20
Reserved (binary 0)
Bits 14-15
34 22
Specific bound program materialization options
Char(1)
34 22
Specific bound program information
Bit 0



0 = Do not materialize
1 = Materialize if the program is a bound program and not a bound service program.


34 22
Reserved (binary 0)
Bits 1-7
35 23
Specific bound service program materialization options
Char(1)
35 23
Reserved (binary 0)
Bit 0
35 23
Signatures information
Bit 1



0 = Do not materialize
1 = Materialize if the program is a bound service program.


35 23
Exported program procedure information
Bit 2



0 = Do not materialize
1 = Materialize if the program is a bound service program.


35 23
Exported program data information
Bit 3



0 = Do not materialize
1 = Materialize if the program is a bound service program.


35 23
Reserved (binary 0)
Bits 4-7
36 24
Bound module materialization options
Char(4)
36 24
General module information
Bit 0



0 = Do not materialize
1 = Materialize


36 24
Reserved
Bit 1



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


36 24
Module string directory component
Bit 2



0 = Do not materialize
1 = Materialize


36 24
Reserved
Bits 3-10



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


36 24
Reserved (binary 0)
Bits 11-17






36 24
Module copyright strings
Bit 18



0 = Do not materialize
1 = Materialize


36 24
Reserved
Bits 19-21



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


36 24
Reserved (binary 0)
Bits 22-31
40 28
Bound module materialization number
UBin(4)
44 2C
Reserved (binary 0)
Char(4)
* *
--- End ---

Description of bound program materialization request template fields

Each of the reserved fields must be set to binary 0s, or a template value invalid  (hex 3801) exception will be signaled.

Number of bytes provided

This is the size in bytes of the materialization request template. If this size does not correspond to the actual number of bytes in the materialization request template, then a template value invalid  (hex 3801) exception will be signaled. This does not include any storage for returned data. That storage is pointed to by the receiver values.

Number of materialization requests

The number of requests in the array of materialization requests is specified by this value. If this number is greater than the actual number of materialization requests provided, then a template value invalid  (hex 3801) exception will be signaled.

Materialization requests

This is an array of materialization requests. A materialization request consists of one or more bits, and an optional module number specified to be materialized into the corresponding receiver. Each materialization request consists of the following fields.

Receiver

This is a pointer to a space which will hold the materialized data. The space pointed to must be aligned on a 16-byte boundary, and must be at least 8 bytes long. This is so that it can hold the bytes provided and bytes available field of the receiver. If the space is not at least 8 bytes long a template value invalid  (hex 3801) exception will be signaled.

Bound program materialization options

This bit mapped field specifies the parts of the bound program object to be materialized. A materialization request need not specify any program materialization options. If no bits are set, a bit must be set in the bound module materialization options field, or a template value invalid  (hex 3801) exception will be signaled. Multiple options may be specified. When multiple options are specified, all of the requested data will be materialized into one receiver. The pieces requested on the materialization will be placed in the receiver in the order that the option bits are defined. If options are also specified on the bound module materialization options field, the materialized data for those options will follow that data materialized for the bound program materialization options.

The bound program materialization options are split into three distinct materialization bit sets.

  1. The general bound program materialization options contains bits that represent data that can be materialized for either bound programs or bound service programs.

  2. The specific bound program materialization options contains bits that represent data that can be materialized only for bound programs, and not for bound service programs.

  3. The specific bound service program materialization options contains bits that represent data that can be materialized only for bound service programs.

If a bit is on to materialize information that is not contained in the type of bound program being materialized, then an indication that the information is not materializable will be provided in the receiver header. No exception, in this case, will be signaled.

Each of the requested pieces will be placed on a 16-byte boundary within the receiver.

The general bound program information field specifies that general information about the bound program object should be materialized.

The program copyright strings field specifies that the collected program copyright strings of the constituent bound modules should be materialized.

The bound service programs information field specifies that information about the service programs bound to the materialized bound program should be materialized. These bound service programs are those that contain exports that resolve to imports in the materialized bound program.

The bound modules information field specifies that information about the modules bound into the materialized bound program should be materialized.

The bound program string directory component field specifies that the bound program string directory should be materialized.

The bound program limits field specifies that the current sizes and maximum values of the bound program components should be materialized.

The activation group data imports field specifies that information about those data imports resolving to weak activation data exports is to be materialized.

The activation group data exports field specifies that information about those data exports promoted to the activation group is to be materialized.

The specific bound program information field specifies that information specific to a bound program, and not to a bound service program, should be materialized.

The signatures information field specifies that the bound program signatures should be materialized.

The exported program procedure information field specifies that the exported procedures specified during program creation should be materialized.

The exported program data information field specifies that the exported data specified during program creation instruction should be materialized.

Bound module materialization options

This bit mapped field specifies the parts of the modules bound into the program that are to be materialized. A module materialization request need not specify any materialization options. If no bits are set, a bit must be set in the bound program materialization options field, or a template value invalid  (hex 3801) exception will be signaled. Multiple options may be specified. When multiple options are specified, all of the requested data will be materialized into one receiver. The pieces requested on the module materialization will be placed in the receiver in the order that the option bits are defined. If options are also specified on the bound program materialization options field, the materialized data for those options will precede that data materialized for the bound module materialization options.

In addition, each of the requested pieces will be placed on a 16 byte boundary within the receiver.

The general module information field specifies that general information about the module object should be materialized.

The module string directory component field specifies that the string directory of the associated module(s) should be materialized.

The module copyright strings field specifies that the module copyright strings should be materialized.

Bound module materialization number

If at least one bit of the bound module materialization options field is on, then this is the number of the module to materialize, from 1 through the number of modules bound into the program; or 0, to materialize information about all modules bound into the program. If this number is greater than the number of modules bound into the program, then a template value invalid  (hex 3801) exception will be signaled.

The information that is materialized is specified in the bound module materialization options field.

If no bits of the bound module materialization options field are on, then no module information is being materialized, and this field must be binary 0 or a template value invalid  (hex 3801) exception will be signaled.

Format of materialized data

Format of Receiver

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Number of bytes provided for materialization
UBin(4)
4 4
Number of bytes available for materialization
UBin(4)
8 8
Reserved (binary 0)
Char(8)
16 10
Materialized data
Char(*)
* *
--- End ---

Bytes provided

This is the number of bytes the user is providing to hold the materialized data. It must be greater than or equal to eight. If it is equal to eight, then no data will actually be materialized, and the number of bytes required to materialize the requested data will be placed in bytes available. If the value provided is greater than eight, but less than the number of bytes required to hold the requested data, the data will be truncated and no exception will be signaled. Note that a value greater than eight, but less than 16 will result in no data being materialized, since bytes 9-16 are reserved.

If the receiver is smaller than the size indicated by bytes provided, and the materialized data is larger than the space provided in receiver, the space addressing violation  (hex 0601) exception will be signaled unless receiver is an automatically extendable space object. If receiver is an automatically extendable space object, the space will be extended, up to its maximum size.

Bytes available

If bytes provided is greater than eight, this contains the number of bytes that have been used for the materialization, including any reserved bytes or bytes used for padding. If bytes provided is equal to eight, this contains the total size of the receiver needed to hold the requested materialization. A value of zero is returned if there is no data to materialize.

Materialized data

For each bit on in the bound program materialization options and bound module materialization options, this will contain the associated data. Each entry will be preceded by a common header which identifies the type of data and the offset to the next entry. When multiple bits are on in the same request, the data is returned in the order defined by the bound program materialization options and the bound module materialization options.

No exception is signaled when the size of the receiver, as specified by bytes provided is not large enough to hold data for all requested bound program materialization options and bound module materialization options. Instead, the data is truncated and bytes provided only reflects the actual amount of data returned. One of several conditions may arise, each with a different result.

If the receiver is not large enough to hold the materialization header, no data is returned for that bound program materialization option or bound module materialization option. The offset to next entry field in the previous materialization header, if one exists, is set to 0, and the bytes available field is set to reflect the amount of data actually materialized for the bound program materialization options or bound module materialization options that have already been processed. Bytes available will be set to 8, or bytes provided ; whichever is less, if the receiver is not big enough to hold the first materialization header.

If the receiver is big enough to hold the materialization header, but not big enough to hold all of the data requested by the bound program materialization option or bound module materialization option, the partial data flag will be set in the materialization header and as much data will be returned for which there is room. For data which consists of one continuous stream(2) the receiver will be filled and bytes available will equal bytes provided. For data which consists of an option specific header followed by an array of homogenous elements(3) data will be returned in such a way that no partial option specific header or array element will be returned. If there is not enough room to hold the entire option specific header, none of it will be returned. If there is room for the option specific header, but not all of the entries, only those entries that will fit will be returned. The number of entries in the option specific header will reflect the number of entries returned rather than the actual number of entries available in the module. Bytes available will reflect the actual amount of data returned and may not equal bytes provided. Note that because many option specific headers and entries are larger than the common materialization header, there may be more than one option for which partial data is returned.

Format of Common Materialization Header

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Offset to next entry
UBin(4)
4 4
Bound program materialization identifier
Char(4)
8 8
Bound module materialization identifier
Char(4)
12 C
Bound module materialization number identifier
UBin(4)
16 10
Flags
Char(4)
16 10
Entry presence
Bit 0



0 = No data present for entry
1 = Data present for entry


16 10
Partial data
Bit 1



0 = All data in materialization was returned
1 = Partial data was returned because receiver was too small to hold all data for the requested option


16 10
Valid materialization data
Bit 2



0 = The data requested in this materialization request is never present for the type of bound program being materialized.
1 = The data requested in this materialization request may be present for the type of bound program being materialized.


16 10
Reserved (binary 0)
Bits 3-31
20 14
Reserved (binary 0)
Char(12)
32 20
--- End ---

Offset to next entry

This contains the offset from the beginning of this entry to the beginning of the next entry. It will contain zero if this is the last entry.

Bound program materialization identifier

This indicates which portion of the bound program is contained in this entry. It is the bit which was on in bound program materialization options that resulted in this data being materialized. Either no bits, or a single bit of this field will be on. If no bits of this field are on, then the data contained in this entry is indicated by the bound module materialization identifier field.

Bound module materialization identifier

This indicates which portion of the module, indicated by the bound module materialization number identifier field, is contained in this entry. It is the bit which was on in the bound module materialization options field that resulted in this data being materialized. Either a single bit or no bit of this field will be on. If no bit is on, then the data contained in this entry is indicated by the bound program materialization identifier field. If a bit is set on, then that type of information will be returned in the entry.

Bound module materialization number identifier

If a bit of the bound module materialization identifier field is on, then this is the number of the module for which information has been materialized in this entry, and this field will not be 0.

If no bits of the bound module materialization identifier field are on, then this field will be 0.

Flags

This field specifies information about the item being materialized.

The entry presence field specifies whether there is data available for the requested item. Some items may not be encapsulated into the object, so no data will be returned when their materialization is requested.

The partial data field specifies that only a portion of the data was returned because sufficient space was not present in the receiver to hold all of the data for the requested materialization option.

The valid materialization field specifies whether the requested information is valid to be materialized for the type of bound program that is being materialized. For example, specific bound program information is not valid for a bound service program. Even if data may be present for the type of bound program being materialized does not mean that it actually is. Refer to the entry present field to see if it is.

Format of materialized general bound program information

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Reserved
Char(264)



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


268 10C
Number of secondary associated spaces
UBin(4)
272 110
Activation group attributes
Char(4)
272 110
Target activation group
Char(1)



0 = Default activation group
1 = Caller's activation group
2 = Named activation group
3 = Unnamed activation group
4 = Named shared activation group
5 = Unnamed shared activation group
6-255 Reserved


273 111
Reserved
Char(3)



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


276 114
Activation group name
Char(30)
306 132
Reserved
Char(14)



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


320 140
Coded character set identifier
UBin(2)
322 142
Composite language version
UBin(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (binary 0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


324 144
Composite machine version for modules
UBin(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (binary 0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


326 146
Earliest version
UBin(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (binary 0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


328 148
Creation target version
UBin(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (binary 0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


330 14A
Version on which creation occurred
UBin(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (binary 0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


332 14C
Bound program identifier
Char(1)



0 = Reserved
1 = Bound Program
2 = Bound Service Program
3-255 = Reserved


333 14D
Compression status
Char(1)
333 14D
Executable portion
Bit 0



0 = Executable portion is not compressed
1 = Executable portion is compressed



333 14D
Observable portion
Bit 1



0 = Observable portion is not compressed
1 = Observable portion is compressed

If the compression status of the observable portion of the program is uncompressed, it is not a guarantee that the observable portion exists. The observable portion status should be checked to ensure that the observable portion exists before attempting to access the observable portion of the program.



333 14D
Reserved (binary 0)
Bits 2-7
334 14E
Composite low optimization level
UBin(2)
336 150
Composite high optimization level
UBin(2)
338 152
Observable portion status
Char(1)
338 152
Extended observability storage area exists
Bit 0



0 = Extended observability storage area does not exist
1 = Extended observability storage area exists

Note that a value of zero in this field just means that no observable data exists separate from the portion that is encapsulated in the executable portion of the program. For more information see the Observability Provided and Encapsulated Observability Attributes in the materialized general bound program information.



338 152
Program creation data existence
Bit 1



0 = The program creation data does not exist
1 = The program creation data does exist



338 152
Module creation data existence
Bit 2



0 = Some or all of the module creation data does not exist
1 = All of the module creation data does exist


338 152
Reserved (binary 0)
Bits 3-7
339 153
Program application profiling attributes
Char(1)
339 153
Program procedure order profiled
Bit 0



0 = Program is not procedure order profiled
1 = Program is procedure order profiled



339 153
Program basic block reordering attempted
Bit 1



0 = No modules bound in the program have been basic block reordered
1 = Basic block reordering was attempted for one or more of the modules bound in the program



339 153
Program ready for application profiling collection
Bit 2



0 = No modules bound in the program are hooked for application profiling

1 = One or more of the modules bound in the program are hooked for application profiling




339 153
Reserved (binary 0)
Bits 3-7






340 154
Number of modules with application profiling attributes
UBin(4)
344 158
Teraspace attributes
Char(1)
344 158
Program contains teraspace capable modules
Bit 0



0 = No modules bound in the program are teraspace capable
1 = One or more modules bound in the program are teraspace capable



344 158
Program entry procedure teraspace capable
Bit 1



0 = Program entry procedure is not teraspace capable
1 = Program entry procedure is teraspace capable



344 158
All modules teraspace capable
Bit 2



0 = One or more modules in the bound program are not teraspace capable
1 = All modules in the bound program are teraspace capable



344 158
Program automatic and static storage location
Bits 3-4



00 = Automatic and static storage are allocated from single level store
01 = Automatic and static storage are allocated from teraspace
10 = Automatic and static storage are allocated from either single level store or teraspace, depending upon the activation
11 = Reserved



344 158
Reserved (binary 0)
Bits 5-7
345 159
Reserved (binary 0)
Char(167)
512 200
--- End ---

Length in bytes of materialization

This is the number of bytes materialized. For the general bound program information this will always be a constant 512.

Number of secondary associated spaces

This is the number of secondary associated spaces currently associated with the object.

Activation group attributes

The activation group attributes specify characteristics of the activation group into which the program will be activated.

Target activation group

This is the target activation group value specified when the bound program or bound service program was created.

Activation group name

This is the activation group name specified when the bound program or bound service program was created.

Coded character set identifier

This is the CCSID value of the bound program or bound service program.

Composite language version

This is the earliest version of the operating system on which the languages used for the bound modules will allow the bound program object to be saved. This is a composite(4) of all of the language versions of the modules bound into this program.

Composite machine version for modules

This is the earliest version of the operating system on which all of the modules bound into the program can be re-created, assuming the required module creation templates are encapsulated in the program.

Earliest version

This is the earliest version of the operating system for which the machine will allow the bound program to be saved.

Creation target version

This is the version of the operating system for which the bound program object was created.

Version on which creation occurred

This is the version of the operating system on which the bound program object was created.

Bound program identifier

This field identifies the type of bound program being materialized.

Compression status

This field identifies whether the executable or the observable portions of the bound program or bound service program are compressed.

Composite low optimization level

This field reflects the lowest level of optimization of all the modules bound into the program. Some modules of the program may have a higher optimization level than indicated by this field.

Composite high optimization level

This field reflects the highest level of optimization of all the modules bound into the program. Some modules of the program may have a lower optimization level than indicated by this field.

Observable portion status

This field describes the status of the observability data of the program. It includes the following flag fields

Extended observability storage area exists

This field specifies whether the extended storage area for observability data exists for the program. It is an indication of whether or not any observable segments exist in the program.

Program creation data existence

This field specifies whether the program creation data that was provided when the program was created still exists in the program.

Module creation data existence

This field specifies whether all of the module creation data that was provided when the modules were created still exists in the program.

In order for a program to be eligible for retranslation, the program creation data existence bit must be set. If the module creation data existence bit is also set, this is an indication that the program has the required observability for retranslation. If the module creation data existence field is not set, the observable status of each of the modules can be found.

Program application profiling attributes

These attributes identify application profiling attributes of the program object.

Program procedure order profiled

This attribute indicates whether the bound program was created with a procedure order list. Packaging order of the procedures can affect run time performance.

Program basic block reordering attempted

This attribute indicates whether the bound program contains any modules for which basic block reordering was attempted (i.e. application profiling data that was collected was applied to one or more modules bound into this program). The packaging order of code in the procedures within the modules can affect run time performance.

Program ready for application profiling collection

This attribute indicates whether the bound program contains any modules that are hooked for application profiling collection (i.e. the modules contain hooks that enable data to be collected by application profiling).

Number of modules with application profiling attributes

This is the number of modules bound into the program that are either hooked for application profiling data collection or have been basic block reordered. To determine to which attributes this number applies, use the program ready for application profiling collection and the program basic block reordering attempted bits of the program application profiling attributes. They are mutually exclusive.

Teraspace attributes

These attributes identify teraspace attributes of the program object.

Program contains teraspace capable modules

This attribute indicates whether or not one or more bound modules are teraspace capable. If so, then a call from a procedure in that module will only be able to pass a teraspace address to procedures in other teraspace capable programs.

Program entry procedure teraspace capable

This attribute indicates whether or not the program entry procedure was created teraspace capable. If so, it may be called with parameters stored in teraspace and after being called will be allowed to address teraspace.

All modules teraspace capable

This attribute indicates whether all modules in the bound program are teraspace capable. If so, then any procedure can be passed a teraspace address when called.

Automatic and static storage location

This attribute identifies where the automatic and static storage for the program will be allocated at run time. If the attribute has a value of single level store, the automatic and static storage will be allocated from single level store. A value of teraspace means the automatic and static storage will be in teraspace. A value of either indicates that the program is capable of running in single level store and teraspace, and the activation group into which the program is activated will determine from which type of storage the automatic and static storage are allocated.

Format of materialized program copyright strings

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Version of copyright creation extension
UBin(4)
8 8
Number of copyright strings in the pool
UBin(4)
12 C
Reserved
Char(4)
16 10
Copyright string pool
Char(*)
* *
--- End ---

Length in bytes of materialization

This is the number of bytes materialized.

Version of copyright creation extension

This is the version of the copyrights when the module was created.

Number of copyright strings in the pool

This is the number of copyright strings that follow.

Copyright string pool

This is the data for all of the copyright strings. Each copyright string consists of a 4 byte length followed by the text of the string. The length reflects the actual length in bytes of the copyright string and does not include the length of the length field. All copyright strings along with their lengths are placed contiguously in the buffer with no intervening padding.

Format of the materialized bound service programs information

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Number of service programs bound to this program
UBin(4)
8 8
Reserved (binary 0)
Char(8)
16 10
Array of bound service program records
[*] Char(48)
16 10
Bound service program ID
Char(24)
16 10
Bound service program context object type
Char(1)
17 11
Bound service program context object subtype
Char(1)
18 12
Bound service program context name
Char(10)
28 1C
Bound service program object type
Char(1)
29 1D
Bound service program object subtype
Char(1)
30 1E
Bound service program name
Char(10)
40 28
Referentially bound program signature
Char(16)
56 38
Attributes
Char(1)
56 38
Reserved (binary 0)
Bits 0-6
56 38
Activation attribute
Bit 7



0 = Activation of the bound service program takes place immediately when the program it is bound to is activated.
1 = Activation of the bound service program may be deferred until a function it exports is called.


57 39
Reserved (binary 0)
Char(7)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be 16 + (N * 48) where N is the number of bound service programs- those programs that contain exports that resolve imports in the bound program.

Number of service programs bound to this program

This is the number of bound service programs bound to the bound program.

Array of bound service program records

This array contains one record for each bound service program bound to the bound program. Each record contains the following information

Bound service program context type

This is the object type of the context with the given name.

Bound service program context subtype

This is the object subtype of the context with the given name.

Bound service program context name

This is the context specified during program creation where this bound service program was found when the bound program was created. This value could be set with all hex zeroes, in which case the name resolution list is used to locate the given bound service program. The context name or name resolution list is searched using the name space of the thread in which the activation occurs (See the RSLVSP instruction for a description of name spaces.)

Bound service program type

This is the object type of the program with the given name.

Bound service program subtype

This is the object subtype of the program with the given name.

Bound service program name

This is the name of the bound service program specified during program creation.

Bound service program signature

This is the signature of the bound service program that was used to match against the current signature of the bound program.

Activation attributes

This is the activation attribute of the bound service program that was specified during program creation.

Format of the materialized bound modules information

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Number of modules bound into this program
UBin(4)
8 8
Reserved (binary 0)
Char(8)
16 10
Array of bound module records
[*] Char(80)
16 10
Bound module ID
Char(60)
16 10
Module qualifier
Char(30)
46 2E
Module name
Char(30)
76 4C
Reserved (binary 0)
Char(20)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be 16 + (N * 80) where N is the number of modules bound into the bound program.

Number of modules bound into this program

This is the number of modules bound into the bound program.

Array of bound module records

This array contains one record for each module bound into the bound program. Each record contains the following information

Module qualifier

This is the qualifier specified during program creation where this module was found when the bound program was created. The module qualifier is used to differentiate between two different modules of the same name. This usually contains a context name.

Module name

This is the name of the module.

Format of the materialized bound program string directory component

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Reserved (binary 0)
Char(12)
16 10
String pool
Char(*)
16 10
Length of the string
UBin(4)
20 14
CCSID of the string
UBin(2)
22 16
String
Char(*)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be 16 + the length of the string pool.

String pool

A memory area containing the strings defined for this program. It can be of any length addressable by a UBin(4). It contains a series of strings and lengths. String IDs specified in other materialized components can be used as indexes into this string pool.

Length of string

The length of the next string. This field contains the length of the string only, and does not include the length of either the length or the CCSID field. The length field of a string is not subject to alignment considerations.

CCSID of string

The character code set identifier of this string. This string is encoded in the given CCSID, which is the CCSID of the module object from which this string is originally declared. The CCSID field of a string is not subject to alignment considerations.

String

Character buffer which contains one string. Its length is defined by the length field.

Format of the materialized bound program limits

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Reserved (binary 0)
Char(12)
16 10
Current size of bound program
UBin(4)
20 14
Maximum number of associated spaces
UBin(4)
24 18
Current number of associated spaces
UBin(4)
28 1C
Maximum number of modules bindable into program
UBin(4)
32 20
Current number of modules bound into program
UBin(4)
36 24
Maximum number of service programs bindable to program
UBin(4)
40 28
Current number of service programs bound to program
UBin(4)
44 2C
Maximum size of bound program string directory
UBin(4)
48 30
Current size of bound program string directory
UBin(4)
52 34
Maximum size of bound program copyright strings
UBin(4)
56 38
Current size of bound program copyright strings
UBin(4)
60 3C
Maximum number of auxiliary storage segments
UBin(4)
64 40
Current number of auxiliary storage segments
UBin(4)
68 44
Maximum number of static storage frames
UBin(4)
72 48
Current number of static storage frames
UBin(4)
76 4C
Maximum number of program procedure exports
UBin(4)
80 50
Current number of program procedure exports
UBin(4)
84 54
Maximum number of program data exports
UBin(4)
88 58
Current number of program data exports
UBin(4)
92 5C
Maximum number of signatures
UBin(4)
96 60
Current number of signatures
UBin(4)
100 64
Minimum amount of static storage required
UBin(4)
104 68
Maximum amount of static storage required
UBin(4)
108 6C
Reserved (binary 0)
Char(4)
112 70
Eight byte version of minimum amount of static storage required
UBin(8)
120 78
Eight byte version of maximum amount of static storage required
UBin(8)
128 80
Reserved (binary 0)
Char(128)
256 100
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will always be a constant 256.

Current size of bound program

This is the current size, in machine-dependent units, of the bound program being materialized.

Maximum number of associated spaces

This is the maximum number of associated spaces allowed for the bound program being materialized.

Current number of associated spaces

This is the current number of associated spaces allocated to the bound program being materialized.

Maximum number of modules bindable into program

This is the maximum number of modules that can be bound into a bound program.

Current number of modules bound into program

This is the current number of modules bound into the bound program being materialized.

Maximum number of service programs bindable to program

This is the maximum number of bound service programs that can be bound to a bound program. These bound service programs contain exports to which imports from a bound program resolve.

Current number of service programs bound to program

This is the current number of bound service programs bound to the bound program being materialized.

Maximum size of bound program string directory

This is the maximum size, in bytes, of the bound program string directory.

Current size of bound program string directory

This is the current size, in bytes, of the bound program string directory.

Maximum size of bound program copyright strings

This is the maximum size, in bytes, of the bound program copyright strings.

Current size of bound program copyright strings

This is the current size, in bytes, of the bound program copyright strings.

Maximum number of auxiliary storage segments

This is the maximum number of auxiliary storage segments allowed for a bound program.

Current number of auxiliary storage segments

This is the current number of auxiliary storage segments in the bound program being materialized.

Maximum number of static storage frames

This is the maximum number of static storage frames allowed for a bound program.

Current number of static storage frames

This is the current number of static storage frames required by the bound program being materialized.

Maximum number of procedure exports

This is the maximum number of procedures that are allowed to be exported from a bound program. If the bound program being materialized is not a bound service program, then this value will be zero.

Current number of procedure exports

This is the current number of procedures exported from the bound program being materialized. If the bound program being materialized is not a bound service program, then this value will be zero.

Maximum number of data exports

This is the maximum number of data items that are allowed to be exported from a bound program. If the bound program being materialized is not a bound service program, then this value will be zero.

Current number of data exports

This is the current number of data items exported from the bound program being materialized. If the bound program being materialized is not a bound service program, then this value will be zero.

Maximum number of signatures

This is the maximum number of signatures allowed for a bound program. If the bound program being materialized is not a bound service program, then this value will be zero.

Current number of signatures

This is the current number of signatures contained in the bound program being materialized. If the bound program being materialized is not a bound service program, then this value will be zero.

Minimum amount of static storage required.

This is the smallest amount of static storage that is required for the bound program or service program. This measure is in bytes. The actual amount of static storage that is used may be anywhere between the minimum and the maximum amounts of required static storage, inclusive. If the size is 4 gigabytes (4,294,967,296) or more, a value of 4,294,967,295 will be returned in the field. In this case, the eight byte version of minimum amount of static storage required field should be used to get the size in bytes.

Maximum amount of static storage required.

This is the largest amount of static storage that may be required for the bound program or service program. This measure is in bytes. The actual amount of static storage that is used may be anywhere between the minimum and the maximum amounts of required static storage, inclusive. If the size is 4 gigabytes (4,294,967,296) or more, a value of 4,294,967,295 will be returned in the field. In this case, the eight byte version of maximum amount of static storage required field should be used to get the size in bytes.

Eight byte version of minimum amount of static storage required

This is the smallest amount of static storage that is required for the bound program or service program. This measure is in bytes. The actual amount of static storage that is used may be anywhere between the minimum and the maximum amounts of required static storage, inclusive.

Eight byte version of maximum amount of static storage required

This is the largest amount of static storage that may be required for the bound program or service program. This measure is in bytes. The actual amount of static storage that is used may be anywhere between the minimum and the maximum amounts of required static storage, inclusive.

Format of the materialized activation group data imports

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Number of activation group data imports
UBin(4)
8 8
Reserved (binary 0)
Char(8)
16 10
Array of activation group data imports
[*] Char(16)
16 10
String ID
UBin(4)
20 14
Reserved (binary 0)
Char(12)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be (N+1)*16, where N is the number of activation group data imports contained in the bound program or bound service program.

Number of activation group data imports

The number of activation group data imports contained in the bound program or bound service program.

Array of activation group data imports

This array contains one record for each data item contained in the program or bound service program. Each record contains the following information:

String ID

This is the identification used to extract the name of this data item from the program string directory.

Format of the materialized activation group data exports

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Number of activation group data exports
UBin(4)
8 8
Reserved (binary 0)
Char(8)
16 10
Array of activation group data exports
[*] Char(16)
16 10
String ID
UBin(4)
20 14
Strength of data item
Char(1)



0 = Reserved
1 = Export Strongly
2 = Export Weakly
3-255 = Reserved



21 15
Reserved (binary 0)
Char(3)
24 18
Length of data item
UBin(4)
28 1C
Reserved (binary 0)
Char(4)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be (N+1)*16, where N is the number of activation group data exports contained in the bound program or bound service program.

Number of activation group data exports

The number of activation group data exports contained in the bound program or bound service program.

Array of activation group data exports

This array contains one record for each data item contained in the program or bound service program. Each record contains the following information:

String ID

This is the identification used to extract the name of this data item from the program string directory.

Strength of data item

This field indicates whether the activation group export is exported strongly or weakly.

Length of data item

The size in bytes of the activation group export.

Format of the materialized specific bound program information

Specific bound program information can only be materialized for bound programs, and not for bound service programs.

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Reserved (binary 0)
Char(12)
16 10
Program entry procedure information
Char(16)
16 10
Module number containing program entry procedure
UBin(4)
20 14
Program entry procedure string ID
UBin(4)
24 18
Minimum parameters
UBin(2)
26 1A
Maximum parameters
UBin(2)
28 1C
Reserved (binary 0)
Char(4)
32 20
Reserved (binary 0)
Char(32)
64 40
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will always be a constant 64.

Module number containing program entry procedure

This is the number, in the bound modules information, of the module which contains the program entry procedure for this bound program.

Program entry procedure string ID

This is the string ID for the name of this program entry procedure.

Minimum parameters

This is the minimum number of parameters that the program entry procedure can accept.

Maximum parameters

This is the maximum number of parameters that the program entry procedure can accept.

Format of the materialized signatures information

Signatures information can only be materialized for bound service programs, and not for bound programs.

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Number of signatures contained in the program
UBin(4)
8 8
Reserved (binary 0)
Char(8)
16 10
Array of signatures
[*] Char(16)
16 10
Signature
Char(16)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be (N+1)*16, where N is the number of signatures contained in the program.

Number of signatures contained in the program

This is the number of signatures contained in the program.

Array of signatures

This array contains one record for each signature contained in the program. Each record contains the following information. The first record contains the current signature.

Signature

A signature of the service program.

Format of the materialized exported program procedure information

Exported program procedure information can only be materialized for bound service programs, and not for bound programs.

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Number of exported procedures
UBin(4)
8 8
Reserved (binary 0)
Char(8)
16 10
Array of program exports
[*] Char(16)
16 10
String ID for procedure export
UBin(4)
20 14
Export number
UBin(4)
24 18
Procedure parameter mask
Char(2)
26 1A
Originating module number
UBin(2)
28 1C
Reserved (binary 0)
Char(4)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be (N+1)*16, where N is the number of exported procedures.

Number of exported procedures

This is the number of procedures exported from the service program.

Array of program exports

This array contains one record for each procedure exported from the service program. Each record contains the following information:

String ID for procedure export

This is the identification used to extract the name of this exported procedure from the program string directory.

Export number

This is the number of this exported procedure.

Procedure parameter mask

The procedure parameter mask indicates the parameter characteristics of the procedure. The procedure parameter mask will be binary zero if the program using this instruction is executing in user-state.

Originating module number

This number is the index of the module in the object list referential extension from which this exported procedure originated.

Format of the materialized exported program data information

Exported program data information can only be materialized for bound service programs, and not for bound programs.

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Number of exported data items
UBin(4)
8 8
Reserved (binary 0)
Char(8)
16 10
Array of data exports
[*] Char(16)
16 10
String ID for data export
UBin(4)
20 14
Export number
UBin(4)
24 18
Data item size
UBin(4)
28 1C
Reserved (binary 0)
Char(4)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be (N+1)*16, where N is the number of exported data items.

Number of exported data items

This is the number of data items exported from the service program.

Array of data exports

This array contains one record for each data item exported from the service program. Each record contains the following information:

String ID for data export

This is the identification used to extract the name of this exported data item from the program string directory.

Export number

This is the number of this exported data item.

Data item size

This is the size in bytes of the exported data item

Format of materialized general module information


Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Reserved
Char(12)
16 10
Reserved
Char(276)



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


292 124
Coded character set identifier
UBin(2)
294 126
Data required for machine retranslation
Char(1)
294 126
All data required for machine retranslation is present
Bit 0



0 = No
1 = Yes


294 126
Reserved (binary 0)
Bits 1-7
295 127
Reserved
Char(9)
304 130
Creation target version
Char(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


306 132
Language version
Char(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


308 134
Version on which creation occurred
Char(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


310 136
Earliest version
Char(2)



All versions are represented as 16 bit values mapped as follows.
Bits 0-3 Reserved (0)
Bits 4-7 Version
Bits 8-11 Release
Bits 12-15Modification


312 138
Reserved
Char(16)
328 148
Number of secondary associated spaces
UBin(4)
332 14C
Reserved
Char(16)
348 15C
Reserved
Char(2)



Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.


350 15E
Module state
UBin(2)



Hex 0001 = User state
Hex 8000 = System state
Hex 0000 = Inherit state


352 160
Compiler name
Char(20)
372 174
Program entry procedure
Char(16)
372 174
Program entry procedure attributes
Char(4)
372 174
Program entry procedure exists
Bit 0



0 = Program entry procedure does not exist in this module
1 = Program entry procedure exists in this module


372 174
Reserved (binary 0)
Bits 1-31
376 178
Program entry procedure dictionary ID
UBin(4)
380 17C
Program entry procedure string ID
UBin(4)
384 180
Program entry procedure minimum parms
UBin(2)
386 182
Program entry procedure maximum parms
UBin(2)
388 184
Module application profiling attributes
Char(1)






388 184
Hooks for application profiling are present
Bit 0



0 = Hooks are not present
1 = Hooks are present


388 184
Basic block reordering attempted
Bit 1



0 = Basic block reordering on the procedures in this module has not been attempted.
1 = Basic block reordering on the procedures in this module has been attempted. The procedure basic block attributes under the procedure definitions further identifies which procedures have been basic block reordered.


388 184
Reserved (binary 0)
Bits 2-7
389 185
Module teraspace attributes
Char(1)
389 185
Module teraspace capable
Bit 0



0 = Module is not teraspace capable
1 = Module is teraspace capable


389 185
Module automatic and static storage location
Bits 1-2



00 = Automatic and static storage are allocated from single level store
01 = Automatic and static storage are allocated from teraspace
10 = Automatic and static storage are allocated from either single level store or teraspace, depending upon the activation group into which the program is activated.
11 = Reserved


389 185
Reserved (binary 0)
Bits 3-7
390 186
Reserved
Char(122)
512 200
--- End ---

Length in bytes of materialization

This is the number of bytes materialized. For the general module information this will always be a constant 512.

Coded character set identifier

The CCSID defines the code page of the symbols in the string directory.

Creation target version

This is the version of the operating system for which the module object was created.

Data required for machine retranslation

This indicates whether the data required for machine retranslation is present. This data can be present even if the encapsulated observability attributes indicated the component is not present.

Language version

This is the earliest version of the operating system on which language used will allow the module object to be saved.

Version on which creation occurred

This is the version of the operating system that was running on the system where the module object was created.

Earliest version

This is the earliest version of the operating system for which the machine will allow the module object to be saved.

Number of secondary associated spaces

This is the number of secondary associated spaces currently associated with the object.

Module state

This is the state of the module object.

Compiler name

This identifies the compiler which translated the user's source language.

Program entry procedure

This identifies the program entry procedure if one is present in the module.

Program entry procedure attributes

This bit mapped field identifies attributes of the program entry procedure.

The program entry procedure existence field specifies whether a program entry procedure is present in the module being materialized.

Program entry procedure dictionary ID

The dictionary ID is used as a handle to uniquely identify the procedure.

Program entry procedure string ID

The string ID may be used to extract the character string which is the procedure name from the string pool.

Program entry procedure minimum parms

This is the minimum number of parameters allowed by the program entry procedure.

Program entry procedure maximum parms

This is the maximum number of parameters allowed by the program entry procedure.

Module application profiling attributes

This bit mapped field identifies the application profiling attributes of the module.

The hooks for application profiling are present field specifies whether the module is ready for application profiling data collection when it is bound into a program.

The basic block reordering attempted field specifies whether reordering of the basic blocks within the procedures of this module has been attempted. To determine which procedures have basic blocks reordered see the procedure basic block attributes under the procedure definitions.

Module teraspace attributes

This bit mapped field identifies the teraspace attributes of the module.

The module teraspace capable field specifies whether or not the module is allowed to use teraspace at run time.

The module automatic and static storage location field indicates where the automatic and static storage for this module will be allocated at run time, when the module is bound into a program. The possible values are single level store, teraspace, or either single level store or teraspace, depending upon the activation group into which the program is activated.

Format of the materialized module string directory component

Offset
Dec Hex
Field Name
Data Type and Length
0 0
Length in bytes of materialization
UBin(4)
4 4
Reserved (binary 0)
Char(12)
16 10
String pool
Char(*)
16 10
Length of the string
UBin(4)
20 14
String
Char(*)
* *
--- End ---

Length in bytes of materialization

The number of bytes materialized. This will be 16 + the length of the string pool.

String pool

A memory area containing the strings defined for this module. It can be of any length addressable by a UBin(4). It contains a series of strings and lengths. String IDs specified in other materialized components can be used as indexes into this string pool.

Length of string

The length of the next string. This field contains the length of the string only, and does not include the length of the length field, itself. The length field of a string is not subject to alignment considerations.

String

Character buffer which contains one string. Its length is defined by the length field.

Format of the materialized module copyright strings

The format of the materialized module copyright strings is the same as for the materialized program copyright strings.

Template Value Invalid exception reason codes

This instruction supports setting of the optional reason code field in the exception data which can be retrieved when the template value invalid exception is signaled. When the first byte of the reason code is not zero, the exception is being signaled because one of the materialization receivers is not valid.

00 Bound Program Materialization Template (pointed to by operand 1 of this instruction)
01 Size of template is not sufficient to hold number of requests specified.
0n nth materialization request is not valid.
01 The receiver is not aligned on a 16 byte boundary.
02 The materialization request bytes provided is less than 8.
03 The materialization request contains no materialization options or invalid materialization options.

If the length of field data is 8, then no materialization options were specified and the offset in field in bits data will be 0. Otherwise, an invalid option was specified and the provided offset to field in bytes and offset in field in bits data will identify the invalid materialization option.

04 The materialization request contains a module materialization number that is greater than the number of modules bound into the program.
05 The materialization request contains a non-zero module materialization number, but no module materialization options.
06 The materialization request contains a non-zero reserved field.

Authorization Required

Lock Enforcement

Exceptions

06 Addressing

08 Argument/Parameter

0A Authorization

10 Damage Encountered

1A Lock State

1C Machine-Dependent

20 Machine Support

22 Object Access

24 Pointer Specification

2E Resource Control Limit

36 Space Management

38 Template Specification

44 Protection Violation


Footnotes:

(1) Referential extensions are data streams that are not included in the creation templates, but are pointed to by a space pointer in the template. This also includes the module creation template extension.

(2) The items that fall into this category are general bound program information, bound program limits, specific bound program information, specific bound service program information, general module information, bound program string directory component, module string directory component and module copyright strings.

(3) The items which fall into this category are bound service programs information, bound modules information, signatures information, program copyright strings, exported program procedure information, activation group data imports, activation group data exports, and exported program data information.

(4) A composite version is defined to be the latest version, in time, of all of the versions comprising the composite. Given back-level compatibility, this would be the earliest version of the operating system on which all of the comprising versions would be compatible.