Materialize Program (MATPG)
Instruction Syntax
Op Code (Hex) | Operand 1 | Operand 2 |
---|---|---|
0232 | Attribute receiver | 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 non-bound program identified by operand 2 is materialized into the template identified by operand 1.
Operand 2 is a system pointer that identifies the program to be materialized. The program identified by operand 2 must be a non-bound program. Otherwise, a program not eligible for operation (hex 220A) exception will be signalled. The values in the materialization relate to the current attributes of the materialized program.
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.
The template identified by operand 1 must be 16-byte aligned.
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | Template size specification | Char(8) |
0 | 0 |
|
|
4 |
4 |
|
|
8 | 8 | Program identification | Char(32) |
8 | 8 |
|
|
9 | 9 |
|
|
10 | A |
|
|
40 | 28 | Program creation options | Char(4) |
40 |
28 |
|
|
40 |
28 |
|
|
40 |
28 |
|
|
40 |
28 |
|
|
40 |
28 |
|
|
40 |
28 |
|
|
40 |
28 |
|
|
40 |
28 |
|
|
40 |
28 |
|
|
44 | 2C | Reserved (binary 0) | Char(4) |
48 | 30 | Size of space | Bin(4) |
52 | 34 | Initial value of space | Char(1) |
53 | 35 | Performance class | Char(4) |
53 |
35 |
|
|
53 |
35 |
|
|
53 |
35 |
|
|
53 |
35 |
|
|
53 |
35 |
|
|
53 | 35 |
|
|
57 |
39 |
Reserved (binary 0) |
Char(7) |
64 | 40 | Context | System pointer |
80 | 50 | Access group | System pointer |
96 | 60 | Program attributes | Char(2) |
96 |
60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
96 | 60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
96 |
60 |
|
|
98 | 62 | Code generation options | Char(1) |
98 |
62 |
|
|
98 |
62 |
|
|
98 |
62 |
|
|
98 | 62 |
|
|
98 |
62 |
|
|
98 |
62 |
|
|
98 |
62 |
|
|
99 |
63 |
Observation attributes
|
Char(1) |
99 | 63 |
|
|
99 | 63 |
|
|
99 | 63 |
|
|
99 | 63 |
|
|
99 | 63 |
|
|
99 |
63 |
|
|
99 | 63 |
|
|
99 | 63 |
|
|
100 | 64 | Size of static storage | UBin(4) |
104 | 68 | Size of automatic storage | UBin(4) |
108 |
6C |
Number of instructions (1) |
UBin(2) |
110 |
6E |
Number of ODV entries (1) |
Bin(2) |
112 | 70 | Offset (in bytes) from beginning of template to the instruction stream component | Bin(4) |
116 | 74 | Offset (in bytes) from beginning of template to the ODV component | Bin(4) |
120 | 78 | Offset (in bytes) from beginning of template to the OES component | Bin(4) |
124 | 7C | Length of breakpoint offset mapping table entry | Bin(4) |
128 | 80 | Length of breakpoint offset mapping table component | Bin(4) |
132 | 84 | Offset (in bytes) from beginning of template to the BOM table | Bin(4) |
136 | 88 | Length of symbol table entry | Bin(4) |
140 | 8C | Length of symbol table component | Bin(4) |
144 | 90 | Offset (in bytes) from beginning of template to the Symbol table | Bin(4) |
148 | 94 | Offset (in bytes) from beginning of template to the object mapping table (OMT) component | Bin(4) + |
152 |
98 |
Number of instructions (2) |
Bin(4) |
156 |
9C |
Number of ODV entries (2) |
Bin(4) |
160 |
A0 |
Template extension |
Char(64) |
160 | A0 |
|
|
160 |
A0 |
|
|
160 |
A0 |
|
|
160 |
A0 |
|
|
160 |
A0 |
|
|
160 |
A0 |
|
|
160 | A0 |
|
|
164 | A4 |
|
|
164 | A4 |
|
|
164 | A4 |
|
|
164 | A4 |
|
|
164 | A4 |
|
|
166 | A6 |
|
|
166 | A6 |
|
|
166 | A6 |
|
|
166 | A6 |
|
|
167 | A7 |
|
|
174 | AE |
|
|
174 | AE |
|
|
174 | AE |
|
|
174 | AE |
|
|
174 | AE |
|
|
176 | B0 |
|
|
176 |
B0 |
|
|
176 | B0 |
|
|
177 | B1 |
|
|
224 | E0 | Program data | Char(*) |
224 | E0 |
|
|
* | * |
|
|
* | * |
|
|
* | * | BOM table | Char(*) |
* | * | Symbol table | Char(*) |
* | * | Object mapping table | Char(*) + |
* |
* |
--- End --- |
|
The first 4 bytes of the materialization template identify the total number of bytes provided in the template. This value is supplied as input to the instruction and is not modified. A value of less than 8 causes the materialization length invalid (hex 3803) exception to be signaled.
The second 4 bytes of the materialization template are modified by the instruction to contain a value identifying the template size required to provide for the total number of bytes available to be materialized. The instruction materializes as many bytes as can be contained in the area specified by the receiver. If the byte area identified by the receiver is greater than that required to contain the information requested, then the excess bytes are unchanged. No exceptions (other than the materialization length invalid (hex 3803) exception) are signaled in the event that the receiver contains insufficient area for the materialization.
The existence attribute indicates whether the program is temporary or permanent.
If the program has an associated space, then the space attribute is set to indicate either fixed- or variable-length; the initial value for the space is returned in the initial value of space field, and the size of space field is set to the current size value of the space. If the program has no associated space, the size of space field is set to a zero value, and the space attribute and initial value of space field values are meaningless.
If the program is addressed by a context, then the context addressability attribute is set to indicate this, and a system pointer to the addressing context is returned in the context field. If the program is not addressed by a context, then the context addressability attribute is set to indicate this, and binary 0's are returned in the context field.
If the program is a member of an access group, then the access group attribute is set to indicate this, and a system pointer to the access group is returned in the access group field. If the program is not a member of an access group, then the access group attribute is set to indicate this, and binary 0's are returned in the access group field.
The automatically extend space field controls whether the space is to be extended automatically by the machine or a space addressing violation (hex 0601) exception is to be signaled when a reference is made to an area beyond the allocated portion of the space. A value of binary 1 indicates the space will automatically be extended by an amount determined through internal machine algorithms. A value of binary 0 indicates the exception will result. Note that an attempt to reference an area beyond the maximum size that a space can be allocated, will always result in the signaling of the space addressing violation (hex 0601) exception independently of the setting of this attribute. A value of binary 1 is only valid when the space attribute has been specified as variable length.
Usage of the automatically extend space function is limited. Predictable results will occur only when you ensure that the automatic extension of a space will not happen in conjunction with modification of the space size by another thread. That is, you must ensure that when a thread is using the space in a manner that could cause it to be automatically extended, it is the sole thread which can cause the space size to be modified. Note that in addition to implicit modification through automatic extension, the space size can be explicitly modified through use of the Modify Space Attributes (MODS) instruction.
The associated space hardware storage protection level can be used to restrict access to the contents of the space by user state programs. It is possible to limit the access of the space by user state programs into 1 of three levels:
- Reference only (non-modifying storage references are allowed, modifying storing storage references yield an object domain or hardware storage protection violation (hex 4401) exception).
- No storage references (all storage references, modifying or non-modifying yield an object domain or hardware storage protection violation (hex 4401) exception).
- Full access (both modifying and non-modifying storage references are allowed).
The actual presentation of the object domain or hardware storage protection violation (hex 4401) exception is also dependent on the level of the physical hardware (namely, the CPU).
The performance class field provides information that allows the machine to more effectively manage the program by considering overall performance objectives of operations involving the program.
The primary associated space, if one is created, is always aligned on at least a 512 byte boundary if the target version, release, and modification level is V4R4 or greater. If the target version, release, and modification level is not V4R4 or greater, the primary associated space, if one is created, is always aligned on at least a 16-byte boundary.
If the adopted user profile attribute is yes, any reference to a system object from an invocation of this program uses the user profile of the owner of this program and other sources of authority to determine the authorization to system objects, privileged instructions, ownership rights, and all authorizations. If the adopted user profile propagation attribute is yes, then the authorities available from the adopted user profile are available to any further invocations while this program is invoked. If the adopted user profile propagation attribute is no, then the authorities available to the program's owning user profile are not available to further subinvocations and are available only to this invocation. These attributes do not affect the propagation of authority from higher existing invocations.
The array constraint field determines how array bounds should be checked at execution time. If arrays are constrained, execution time checks are made to verify that the array index is within the bounds of the array. If arrays are unconstrained and the type of unconstrained array is not fully unconstrained, the array references are assumed to be within the bounds of the array. If an array element reference is made outside the bounds of the array, unpredictable results may occur. If the type of unconstrained array is fully unconstrained, array references outside the bounds of the array will be made as if the elements existed. Array references of this type will signal the space addressing violation (hex 0601) exception if the element that is referenced is outside the allocated storage of the space containing the array. It is possible to change the type of constrainment used when referencing array elements by using the Override Program Attributes (OVRPGATR) instruction.
The string constrainment field determines how string limits should be checked at execution time. If string constrainment is strings are not constrained, the references are assumed to be within the defined bounds of the string. No execution time checks are performed to ensure this is the case. However, if the reference is outside the defined bounds, unpredictable results may occur. There may be significant savings in performance if strings are not constrained is specified. It is possible to change the type of constrainment used when substringing by using the Override Program Attributes (OVRPGATR) instruction.
Whenever a new invocation or activation is allocated, the automatic or static storage areas are initialized to bytes of binary 0's, respectively. The static storage and automatic storage program attributes control this default initialization. There is a significant performance advantage when these areas are not initialized by default. However, initial values specified for individual data objects are still set. The automatic storage and static storage will be allocated in single level store.
The associated journal entry field controls which program is associated with a journal entry. As a journal entry is made, a newest-to-oldest interrogation of the invocation stack is performed. The first program encountered that has the associated journal entry field set to program name is recorded in journal entries is associated with the journal entry by a record of the program name in the journal entry. If a program is encountered for which the associated journal entry field is set to program name is not recorded in journal entry, the program is ignored unless the program is on the top of the invocation stack. If the program is on the top of the invocation stack, it is associated with the journal entry by a record of the program name in the journal entry.
The suppress decimal data exception field controls whether or not errors detected in decimal data are to result in the signaling of the decimal data exception. When the decimal data exception is not to be suppressed, decimal values input to numeric operations are verified to contain valid decimal digit and sign codes with the decimal data (hex 0C02) exception being signaled as the result of detection of an invalid code. When the decimal data exception is to be suppressed, decimal values input to numeric operations are still verified to contain valid decimal digit and sign codes. However, detection of an invalid code results in the instruction interpreting an invalid digit as a zero and an invalid sign as positive rather than in signaling of the exception.
The control over suppressing of the decimal data exception applies to only a subset of the numeric operations which may be performed by the machine.
In general, when suppression of the decimal data exception is specified, the Computation and Branching instructions which support numeric source operands will suppress decimal data errors for ZONED source values. Additionally, a few instructions also suppress decimal data errors for packed source values. In all cases, the suppression is only supported when all operands are non-Data Pointer defined (early bound) source values.
Specifically, the following defines the exact list of instructions which support suppression of decimal data errors for certain operand types:
Packed Source Operands supported | Zoned Source Operands supported | Instruction Mnemonic | Note |
---|---|---|---|
yes | ADDN | ||
yes | CMPNV | ||
yes | yes | CVTCN | Only supported when operand 3, the numeric view to be used for operand 2, is specified as a constant and no DP defined operands are specified. |
yes | CVTDFFP | ||
yes | yes | CVTNC | Only supported when operand 3, the numeric view to be used for operand 1, is specified as a constant and no DP defined operands are specified. |
yes | yes | CPYNV | Only supported when no DP defined operands are specified. |
yes | DIV | ||
yes | DIVREM | ||
yes | EDIT | Only supported when no DP defined operands are specified. | |
yes | EXTRMAG | ||
yes | MULT | ||
yes | NEG | ||
yes | REM | ||
yes | SCALE | ||
yes | SUBN |
When suppression of the decimal data exception is specified, the decimal data (hex 0C02) exception may still be signaled by the machine. That is, other instructions and instruction combinations not listed above are exposed to signaling the decimal data (hex 0C02) exception when invalid decimal data is encountered and they can't be counted on to fix up invalid decimal data.
Of particular note here is that specification of a Data Pointer as an input operand on any of the instructions in the above list negates the suppression support for the whole instruction. Thus even non-Data Pointer defined operands are then exposed to detection of the decimal data (hex 0C02) exception.
The template extension existence field indicates whether or not there is an extension to the program template.
The suppress previously adopted user profiles field is used to stop the backward search for adopted or propagated authorities. In other words, all programs previous to this program's invocation with adopted or propagated authorities are not considered as sources of authority.
The code generation options provide information that allows the machine to create a program based on the intended use of the program.
If the performance optimization field is binary 1, additional processing is performed which provides for creating a program that requires less processor resource for execution. This optimizes addressability used within the program. If this attribute is set to binary 0, normal optimization processing is performed.
The space pointer machine objects field controls whether space pointer machine objects are allowed in the ODV. If the allow space pointer machine objects in ODV component attribute is set to binary 1, additional processing is performed which allows for space pointer machine objects within the program. If this attribute is set to binary 0, space pointer machine objects are not allowed in the ODV component.
The coincident operand overlap field controls whether or not additional processing is performed during the encapsulation of certain computation and branching instructions which affects the processor resource required to execute these instructions. The effect of the option controls whether or not the encapsulation process for these instructions should assume that coincident operand overlap may occur between the source and receiver operands during execution of the instruction. This assumption applies to cases of nonidentical coincident operand overlap where the Create Program (CRTPG) instruction cannot determine if coincident operand overlap may occur during execution of the instruction. These instructions may produce invalid results if nonidentical coincident overlap occurs during execution, but the instruction was encapsulated with the assumption that it would not occur.
Specifying the do not assume coincident operand overlap attribute indicates that nonidentical coincident overlap will not occur during execution and therefore the receiver on an instruction may be used as a work area during operations performed to produce the final result. Using the receiver as a work area does not require the processor resource that would be required to move the final result from an internal work area to the receiver.
Specifying the assume coincident operand overlap attribute indicates that nonidentical coincident operand overlap may occur during execution and therefore the receiver on an instruction should not be used as a work area during operations that produce the final result. This can require more processor resource for instruction execution but it insures valid results if overlap occurs.
The following is a list of instructions that can be affected by the coincident operand overlap option during the encapsulation process:
- Add Logical Character
- Add Numeric
- And
- Compute Math Function Using One Input Value
- Concatenate
- Convert Character To Numeric
- Convert Decimal Form To Floating-Point
- Convert External Form To Numeric Value
- Convert Floating-Point To Decimal Form
- Convert Numeric To Character
- Copy Bytes Left Adjusted With Pad
- Copy Bytes Right Adjusted With Pad
- Divide
- Divide With Remainder
- Exclusive OR
- Multiply
- Or
- Remainder
- Scale
- Subtract Logical Character
- Subtract Numeric
- Trim Length
The teraspace capable option indicates whether or not the program produced should be enabled to use teraspace addresses.
The executable part compression field and observation part compression field indicate whether the executable, observation, or both parts of the program are to be compressed. For materialization, these fields indicate whether parts of the program object are currently compressed.
The observation attributes field specifies options that control the observability and debugability of the program.
The first six bits control the availability of information through the Materialize Program (MATPG) instruction. If a bit is a binary 1 then the corresponding data from the program template is available for materialization. If the program is created without the ability to materialize observability data then less storage may be needed to contain the program object.
The remaining two bits control whether certain performance measurements will be possible when the program is executing. Prevent performance measurements on entry/exit controls whether performance measurements can be made which encompass the duration of the execution of this program. Prevent performance measurements on CALLX controls whether performance measurements can be made which encompass the duration of a CALLX from this program to another program. If either bit is a binary 1 then the corresponding measurement is prevented. If the ability to make performance measurements is prevented then the program may execute more quickly.
The size of static storage field defines the total amount of static storage required for this program's static data. A value of 0 indicates that the amount of static storage required is calculated based upon the amount of static data specified for the program. A value greater than 0 specifies the amount of static storage required.
The size of automatic storage field defines the total amount of automatic storage required for this program's automatic data. A value of 0 indicates that the amount of automatic storage required is calculated based upon the amount of automatic data specified for the program. A value greater than 0 specifies the amount of automatic storage required.
The number of instructions fields (1 and 2) and number of ODV entries fields (1 and 2) is specified in different locations in the template depending on the version of the program template. Template version 0 limits the number of instructions to a maximum of 65,532 and the number of ODV entries to a maximum of 8,191. Programs that exceed one of these maximums cannot be created with template version 0. Template version 1 limits the number of instructions to a maximum of 65,532 and the number of ODV entries to a maximum of 65,526. Programs that exceed one of these maximums cannot be created with template version 1. All other values for the template version are reserved.
The extended program attributes allow for additional attributes of the program to be specified.
To suppress binary size exceptions indicates the size (hex 0C0A) exception will be suppressed when an overflow or underflow occurs on a computation and control instruction with a receiver that is a binary variable scalar. The receiver will contain the left-truncated result.
Create program for previous mandatory release indicates whether or not the program is created to run on the previous mandatory release 1
The collect object usage data for programs field is used to tell CALLX and XCTL instructions whether or not to collect object usage data for the program being called or transferred to.
The scope of resources field identifies the scope of program resources. The machine will set this field for the affected invocations, but the definition of those resources and the use of this field is determined by the MI user. If the scope of resources field is binary 0, then the resources will be scoped to the invocation of this program. If this scope of resources field is binary 1, then the resources will be scoped to the previous invocation of this program. If the scope of resources is also binary 1 for that invocation, the resources will be scoped to the next previous invocation, and so on.
The language version, release, and modification level is used to limit which version, release, and modification level that this program is allowed to be moved back to. This attribute allows the compilers to specify the earliest release in which the necessary runtime environment exists for the program to execute. The program will not be allowed to be restored to a system running at an earlier release than the one identified. A zero value for this attribute means that no restriction is specified.
The use new BOM table format flag is used to indicate which format of the BOM table is used. Binary 0 indicates old format, binary 1 indicates new format. These formats are documented below in the BOM table component.
The instruction stream component consists of a 4-byte binary value that defines the total length of the instruction stream component and a variable-length array of 2-byte entries that defines the instruction stream. The 2-byte entries define instruction operation codes, instruction operation code extenders, or instruction operands.
The object definition vector (ODV) component consists of a 4-byte binary value that defines the total length of the ODV and a variable-length vector of 4-byte entries. Each entry describes a program object either by a complete description or through an offset into the OES (object entry string) to a location that contains a description. If no program objects are defined, the ODV can be omitted, and its absence is noted with a value of 0 in the offset to ODV component entry. The ODV is required if the OES is present.
The ODV entry string (OES) consists of a 4-byte binary value that defines the total length of the OES and a series of variable-length entries that are used to complete an object description. Entries in the ODV contain offsets into the OES. The OES is optional, and its absence is indicated with a value of 0 in the offset to OES component entry.
The format of the ODT (object definition table) (ODV and OES) is defined in Program Object Specification.
The BOM table component can be used by compilers to relate high-level language statement numbers to instruction numbers.
The BOM table has the 2 formats depending on the BOM table flags. If the flag indicates to use new BOM table format, then the first bit of the MI instruction number is not a flag, so numbers up to 64k-1 can be used.
The BOM table has the following OLD format:
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | MI instruction number | UBin(2) |
0 |
0 |
|
|
0 | 0 |
|
|
2 |
2 |
High level statement number (character format) If this is in character format, then the length of it is contained in the header in the length of breakpoint offset mapping table entry. |
Char(*) |
2 | 2 |
|
|
* |
* |
--- End --- |
|
The BOM table has the following NEW format:
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | MI instruction number | UBin(2) |
2 | 2 | Flag Byte | Char(1) |
2 |
2 |
|
|
2 | 2 |
|
|
3 |
3 |
High level statement number (character format) If this is in character format, then the length of it is contained in the header in the length of breakpoint offset mapping table entry. |
Char(*) |
3 | 3 |
|
|
* |
* |
--- End --- |
|
The symbol table component can be used by compilers to relate high-level language names to ODT numbers.
The symbol table has the following format:
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | Hashing table structure | Char(*) |
0 | 0 |
|
|
4 |
4 |
|
|
* | * | Symbol table base segment | Char(*) |
* |
* |
|
|
* | * |
|
|
* | * |
|
|
* |
* |
|
|
* |
* |
|
|
* |
* |
|
|
* |
* |
|
|
* |
* |
|
|
* |
* |
|
|
* | * |
|
|
* | * |
|
|
* | * |
|
|
* |
* |
--- End --- |
|
Other segments are only present if the bit in the symbol table base segment is on.
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | Symbol table format segment | Char(20) |
0 | 0 |
|
|
10 | A |
|
|
14 | E |
|
|
16 | 10 |
|
|
18 | 12 |
|
|
20 |
14 |
--- End --- |
|
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | Symbol table array segment | Char(*) |
0 | 0 |
|
|
2 | 2 |
|
|
2 | 2 |
|
|
6 | 6 |
|
|
* |
* |
--- End --- |
|
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | Symbol table extended segment | Char(26) |
0 | 0 |
|
|
2 | 2 |
|
|
4 |
4 |
|
|
5 | 5 |
|
|
7 | 7 |
|
|
9 |
9 |
|
|
10 |
A |
|
|
14 |
E |
|
|
18 | 12 |
|
|
18 | 12 |
|
|
18 | 12 |
|
|
18 | 12 |
|
|
19 | 13 |
|
|
26 |
1A |
--- End --- |
|
Hashing is done by exclusively Or'ing the first 4 characters of the symbol name with the second 4 characters of the symbol name. The result is then divided by the number of hash buckets. If the result is negative or 0, the number of hash buckets is added to the result. The result is then used as an index to the hash bucket.
Format segment is used by certain compilers to specify a format program name to be used when formatting this variable.
The offset to the OMT component field specifies the location of the OMT component in the materialized program template. The OMT consists of a variable-length vector of 6-byte entries. The number of entries is identical to the number of ODV entries because there is one OMT entry for each ODV entry. The OMT entries correspond one for one with the ODV entries; each OMT entry gives a location mapping for the object defined by its associated ODV entry.
The following describes the formats for an OMT entry:
Offset | |||
---|---|---|---|
Dec | Hex | Field Name | Data Type and Length |
0 | 0 | OMT entry | Char(6) |
0 |
0 |
|
|
1 |
1 |
|
|
4 |
4 |
|
|
6 |
6 |
--- End --- |
|
Authorization Required
- Retrieve
- Operand 2
- Execute
- Contexts referenced for address resolution
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
- 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
- 3803 Materialization Length Invalid
- 44 Protection Violation
- 4401 Object Domain or Hardware Storage Protection Violation
- 4402 Literal Values Cannot Be Changed
The previous mandatory release is release N-1, mod level zero when release N is the current release.. (For version 4, release 5.0, the previous mandatory release is version 4, release 4.0.).