Materialize Bound Program (MATBPGM)
Instruction Syntax
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 |
---|
|
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.
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.
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | Template size specification | Char(8) |
0 | 0 |
|
|
4 | 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 |
|
|
32 | 20 |
|
|
32 | 20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 |
20 |
|
|
32 | 20 |
|
|
34 | 22 |
|
|
34 |
22 |
|
|
34 | 22 |
|
|
35 | 23 |
|
|
35 | 23 |
|
|
35 |
23 |
|
|
35 |
23 |
|
|
35 |
23 |
|
|
35 | 23 |
|
|
36 | 24 |
|
|
36 |
24 |
|
|
36 |
24 |
|
|
36 |
24 |
|
|
36 |
24 |
|
|
36 |
24 |
|
|
36 |
24 |
|
|
36 |
24 |
|
|
36 | 24 |
|
|
40 | 28 |
|
|
44 | 2C |
|
|
* |
* |
--- 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.
- The general bound program materialization options contains bits that represent data that can be materialized for either bound programs or bound service programs.
- 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.
- 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 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 stream2 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 elements3 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.
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 |
|
|
16 |
10 |
|
|
16 |
10 |
|
|
16 | 10 |
|
|
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.
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | Length in bytes of materialization | UBin(4) |
4 |
4 |
Reserved Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.
|
Char(264) |
268 | 10C | Number of secondary associated spaces | UBin(4) |
272 | 110 | Activation group attributes | Char(4) |
272 |
110 |
|
|
273 |
111 |
|
|
276 | 114 | Activation group name | Char(30) |
306 |
132 |
Reserved Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.
|
Char(14) |
320 | 140 | Coded character set identifier | UBin(2) |
322 |
142 |
Composite language version
|
UBin(2) |
324 |
144 |
Composite machine version for modules
|
UBin(2) |
326 |
146 |
Earliest version
|
UBin(2) |
328 |
148 |
Creation target version
|
UBin(2) |
330 |
14A |
Version on which creation occurred
|
UBin(2) |
332 |
14C |
Bound program identifier
|
Char(1) |
333 | 14D | Compression status | Char(1) |
333 |
14D |
|
|
333 |
14D |
|
|
333 | 14D |
|
|
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 |
|
|
338 |
152 |
|
|
338 |
152 |
|
|
338 | 152 |
|
|
339 | 153 | Program application profiling attributes | Char(1) |
339 |
153 |
|
|
339 |
153 |
|
|
339 |
153 |
|
|
339 |
153 |
|
|
340 | 154 | Number of modules with application profiling attributes | UBin(4) |
344 | 158 | Teraspace attributes | Char(1) |
344 |
158 |
|
|
344 |
158 |
|
|
344 |
158 |
|
|
344 |
158 |
|
|
344 | 158 |
|
|
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 composite4 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.
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.
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 |
|
|
16 | 10 |
|
|
17 | 11 |
|
|
18 | 12 |
|
|
28 | 1C |
|
|
29 | 1D |
|
|
30 | 1E |
|
|
40 | 28 |
|
|
56 | 38 |
|
|
56 | 38 |
|
|
56 |
38 |
|
|
57 | 39 |
|
|
* |
* |
--- 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.
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 |
|
|
16 | 10 |
|
|
46 | 2E |
|
|
76 | 4C |
|
|
* |
* |
--- 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.
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 |
|
|
20 | 14 |
|
|
22 | 16 |
|
|
* |
* |
--- 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.
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.
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 |
|
|
20 | 14 |
|
|
* |
* |
--- 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.
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 |
|
|
20 |
14 |
|
|
21 | 15 |
|
|
24 | 18 |
|
|
28 | 1C |
|
|
* |
* |
--- 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.
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 |
|
|
20 | 14 |
|
|
24 | 18 |
|
|
26 | 1A |
|
|
28 | 1C |
|
|
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.
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 |
|
|
* |
* |
--- 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.
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 |
|
|
20 | 14 |
|
|
24 | 18 |
|
|
26 | 1A |
|
|
28 | 1C |
|
|
* |
* |
--- 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.
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 |
|
|
20 | 14 |
|
|
24 | 18 |
|
|
28 | 1C |
|
|
* |
* |
--- 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
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 Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.
|
Char(276) |
292 | 124 | Coded character set identifier | UBin(2) |
294 | 126 | Data required for machine retranslation | Char(1) |
294 |
126 |
|
|
294 | 126 |
|
|
295 | 127 | Reserved | Char(9) |
304 |
130 |
Creation target version
|
Char(2) |
306 |
132 |
Language version
|
Char(2) |
308 |
134 |
Version on which creation occurred
|
Char(2) |
310 |
136 |
Earliest version
|
Char(2) |
312 | 138 | Reserved | Char(16) |
328 | 148 | Number of secondary associated spaces | UBin(4) |
332 | 14C | Reserved | Char(16) |
348 |
15C |
Reserved Note: Reserved for IBM Internal Use Only. If used, unpredictable results may occur.
|
Char(2) |
350 |
15E |
Module state
|
UBin(2) |
352 | 160 | Compiler name | Char(20) |
372 | 174 | Program entry procedure | Char(16) |
372 | 174 |
|
|
372 |
174 |
|
|
372 | 174 |
|
|
376 | 178 |
|
|
380 | 17C |
|
|
384 | 180 |
|
|
386 | 182 |
|
|
388 |
184 |
Module application profiling attributes |
Char(1) |
388 |
184 |
|
|
388 |
184 |
|
|
388 | 184 |
|
|
389 | 185 | Module teraspace attributes | Char(1) |
389 |
185 |
|
|
389 |
185 |
|
|
389 | 185 |
|
|
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.
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 |
|
|
20 | 14 |
|
|
* |
* |
--- 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.
The format of the materialized module copyright strings is the same as for the materialized program copyright strings.
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
- Retrieve
- Operand 2
- Execute
- Contexts referenced for address resolution
- Bound service programs required to activate the program referenced by operand 2
Lock Enforcement
- Materialize
- Operand 2
- Contexts referenced for address resolution
Exceptions
- 06 Addressing
- 0601 Space Addressing Violation
- 0602 Boundary Alignment
- 0603 Range
- 08 Argument/Parameter
- 0801 Parameter Reference Violation
- 0A Authorization
- 0A01 Unauthorized for Operation
- 10 Damage Encountered
- 1004 System Object Damage State
- 1005 Authority Verification Terminated Due to Damaged Object
- 1044 Partial System Object Damage
- 1A Lock State
- 1A01 Invalid Lock State
- 1C Machine-Dependent
- 1C03 Machine Storage Limit Exceeded
- 20 Machine Support
- 2002 Machine Check
- 2003 Function Check
- 22 Object Access
- 2201 Object Not Found
- 2202 Object Destroyed
- 2203 Object Suspended
- 2204 Object Not Eligible for Operation
- 2207 Authority Verification Terminated Due to Destroyed Object
- 2208 Object Compressed
- 220A Program Not Eligible for Operation
- 220B Object Not Available
- 24 Pointer Specification
- 2401 Pointer Does Not Exist
- 2402 Pointer Type Invalid
- 2403 Pointer Addressing Invalid Object Type
- 2E Resource Control Limit
- 2E01 User Profile Storage Limit Exceeded
- 36 Space Management
- 3601 Space Extension/Truncation
- 38 Template Specification
- 3801 Template Value Invalid
- 3802 Template Size Invalid
- 3803 Materialization Length Invalid
- 44 Protection Violation
- 4401 Object Domain or Hardware Storage Protection Violation
- 4402 Literal Values Cannot Be Changed
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.
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.