Description:
This instruction materializes the identification and the system pointers to all or selected system objects that are privately owned and/or authorized by a specified user profile or user profile extension, and/or for which the profile is the primary group. For the user profile or user profile extension (operand 2), the materialization options (operand 3) specify object selection criteria and the format and location of the object materialization data. The receiver space (operand 1) always indicates the number of objects materialized, and contains the object materialization data unless the materialization options specify an independent index to contain the data.
A space pointer machine object may not be specified for operand 2.
When format of operand 3 is operand 3 is a Char(1) scalar, operand 3 is viewed as a Char(1) scalar. This option does not permit object selection by type and subtype, does not allow a continuation point to be specified, and returns all object materialization data in the receiver (operand 1). The short template header format is used.
Following are the valid operand 3 values which may be used with the short template header format (operand 1):
Value (hex) |
Meaning |
07 |
Verify user profile integrity for all authorized, owned objects, and objects for which profile is the primary group. |
11 |
Materialize count of owned objects. |
12 |
Materialize count of authorized objects. |
13 |
Materialize count of all authorized and owned objects. |
14 |
Materialize count of objects for which profile is the primary group. |
15 |
Materialize count of owned objects and objects for which profile is the primary group. |
16 |
Materialize count of authorized objects and objects for which profile is the primary group. |
17 |
Materialize count of all authorized, owned objects, and objects for which profile is the primary group. |
21 |
Materialize identification of owned objects using short description entry format. |
22 |
Materialize identification of authorized objects using short description entry format. |
23 |
Materialize identification of all authorized and owned objects using short description entry format. |
24 |
Materialize identification of objects for which profile is the primary group using short description entry format. |
25 |
Materialize identification of owned objects and objects for which profile is the primary group using short description entry format. |
26 |
Materialize identification of authorized objects and objects for which profile is the primary group using short description entry format. |
27 |
Materialize identification of all authorized, owned objects, and objects for which profile is the primary group using short description entry format. |
31 |
Materialize identification of owned objects using long description entry format. |
32 |
Materialize identification of authorized objects using long description entry format. |
33 |
Materialize identification of all authorized and owned objects using long description entry format. |
34 |
Materialize identification of objects for which profile is the primary group using long description entry format. |
35 |
Materialize identification of owned objects and objects for which profile is the primary group using long description entry format. |
36 |
Materialize identification of authorized objects and objects for which profile is the primary group using long description entry format. |
37 |
Materialize identification of all authorized, owned objects, and objects for which profile is the primary group using long description entry format. |
Usage Notes
Although damage in a user profile is extremely rare, option hex 07 can be used to verify the integrity of the user profile without referencing any owned or authorized objects. This allows the caller to quickly verify a user profile before a lengthy procedure, such as a product install. If any integrity problems are found, the user profile will be damaged and a system object damage state (hex 1004) exception will be signaled. Following are the valid operand 3 values which may be used with the long template header formats (operand 1):
Value (hex) |
Meaning |
51-57 (D1-D7) |
These long template header materialization options are the same as the short template header materialization options 11-17 (hex). |
61-67 (E1-E7) |
These long template header materialization options are the same as the short template header materialization options 21-27 (hex). |
71-77 (F1-F7) |
These long template header materialization options are the same as the short template header materialization options 31-37 (hex) except that the context extension is materialized for each object as well. |
Options 51-57, 61-67, and 71-77 use the long template header format 1.
Options D1-D7, E1-E7, F1-F7 use the variable-length materialization option template and can use either the long template header format 1 or the long template header format 2, which has larger numbers in it. The header format is selectable by the format of template header field.
When format of operand 3 is set to operand 3 is variable length, operand 3 is viewed as variable-length, must be 16-byte aligned in the space, and has the following format:
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0
|
0
|
Materialization options
Valid values are hex 91-97, A1-A7, B1-B7, D1-D7, E1-E7, and F1-F7. They have the same meanings as the corresponding values with format of operand 3 set to binary 0 (i.e., hex 91 has the same meaning as hex 11).
|
Char(1)
|
0
|
0
|
Format of operand 3
- 0 =
- Operand 3 is a Char(1) scalar
- 1 =
- Operand 3 is variable length
|
|
0 |
0 |
- Materialization identifier
|
|
1 |
1 |
Materialization flags |
Char(1) |
1
|
1
|
Restrict information scope
This is an input bit which only has meaning when materialization data is being returned in the operand 1 receiver template. When there is more data to be materialized than can be contained in the template, then when this bit is set to binary 1, the number of bytes available for materialization, the number of objects owned by user profile, the number of objects for which the profile is the primary group, and the number of objects privately authorized to user profile output fields are restricted to reflect only the information returned in the template; when set to binary 0, the output fields reflect the total amount of materialization data available, even though the template may not be large enough to contain it all.
|
|
1
|
1
|
More materialization data available
This output bit has meaning only when materialization data is being returned in the operand 1 receiver template. When set to binary 1, it indicates that objects exist beyond those for which materialization data was returned in the template; when set to binary 0 it indicates the end of the objects was reached.
|
|
1
|
1
|
Continuation point specified
This is an input bit. When set to binary 1, it indicates that a continuation point is specified in the continuation point field; when set to binary 0, continuation processing is ignored.
|
|
1
|
1
|
Avoid storage correction
This is an input bit. When set to binary 1, it indicates that storage correction is avoided on owned objects. When set to binary 0, storage correction is performed as required.
|
|
1
|
1
|
|
|
1 |
1 |
|
|
2 |
2 |
Reserved (binary 0) |
Char(30) |
32
|
20
|
Independent Index pointer
If the pointer does not exist, the instruction returns all object materialization data in the receiver (operand 1). Otherwise it returns only the template header in the receiver and returns the object materialization data in the independent index.
|
System pointer
|
48
|
30
|
Continuation point
If the continuation point specified bit is on, when the instruction begins, if this field contains a system pointer or the storage form of a system pointer, then materialization data is returned for objects found in the profile following the object identified by the continuation point; otherwise, materialization data is returned beginning with the object which is logically first.
|
Char(16)
|
64
|
40
|
Object type/subtype range array
Indicates the number of object type/subtype ranges specified in the array immediately following. If zero, objects of all types and subtypes are materialized. If larger than zero, only objects included in one or more of the type/subtype ranges specified in the array are materialized.
|
Bin(2)
|
66
|
42
|
Object type/subtype array
An array of object type/subtype ranges qualifying the objects materialized. Each array element represents a range of object type/subtypes and has the following format:
|
[*] Char(4)
|
66 |
42 |
|
|
66 |
42 |
|
|
67 |
43 |
|
|
68 |
44 |
|
|
68 |
44 |
|
|
69 |
45 |
|
|
*
|
*
|
--- End ---
|
|
|
All materialization options with the low order bit on (except for option hex 07) also verify and correct the user profile's system storage utilization (storage used on the system ASP and basic ASPs) and varied on independent ASP storage utilization. The corrected storage utilization is not returned by MATAUOBJ and the MATUP instruction must be used to obtain the storage utilization values. The storage utilization is not corrected if either of the following are true:
- The extended form of operand 3 is used and a valid continuation point is specified, or
- The avoid storage correction field is set to binary 1.
The avoid storage correction field indicates whether or not system storage utilization for the user profile should be verified or corrected at this time. This may improve performance significantly when avoid storage correction is set to binary 1.
The order of materialization is owned objects, objects privately authorized to the user profile, and objects for which the profile is the primary group (as specified in the materialization options operand). No authorizations are stored in the system pointers that are returned.
The template identified by operand 1 must be 16-byte aligned in the space. For options hex 07 through hex 37 and hex 91 through hex B7, the short template header is materialized. It has the following format:
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Materialization size specification |
Char(8) |
0 |
0 |
- Number of bytes provided for materialization
|
|
4 |
4 |
- Number of bytes available for materialization
|
|
8 |
8 |
Number of objects owned by user profile |
Bin(2) |
10 |
A |
Number of objects privately authorized to user profile |
Bin(2) |
12 |
C |
Number of objects for which the user profile is the primary group |
Bin(2) |
14 |
E |
Reserved (binary 0) |
Char(2) |
16
|
10
|
--- End ---
|
|
|
For options hex 51 through 77, the long template header format 1 is used. The long template header format 1 is also used for options hex D1 through hex F7 if format of template header is set to binary 0. It has the following format:
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Materialization size specification |
Char(8) |
0 |
0 |
- Number of bytes provided for materialization
|
|
4 |
4 |
- Number of bytes available for materialization
|
|
8 |
8 |
Number of objects owned by user profile |
Bin(4) |
12
|
C
|
Number of objects privately authorized to user profile
The following header information is only provided when an option requesting primary group is selected (for example hex 54 - 57, 64 - 67 and 74 - 77 etc).
|
Bin(4)
|
16 |
10 |
Number of objects for which the profile is the primary group |
Bin(4) |
20 |
14 |
Reserved (binary 0) |
Char(12) |
32
|
20
|
--- End ---
|
|
|
For options hex D1 through F7 that have the format of template header set to binary 1, the following long template header format 2 will be used. It has the following format:
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Materialization size specification |
Char(8) |
0 |
0 |
- Number of bytes provided for materialization
|
|
4 |
4 |
- Number of bytes available for materialization
|
|
8 |
8 |
Number of objects owned by user profile |
UBin(8) |
16
|
10
|
Number of objects privately authorized to user profile
The following header information is only provided when an option requesting primary group is selected (for example hex D4 - D7, E4 - E7 and F4 - F7 etc).
|
UBin(8)
|
24 |
18 |
Number of objects for which the profile is the primary group |
UBin(8) |
32 |
20 |
Reserved (binary 0) |
Char(32) |
64
|
40
|
--- End ---
|
|
|
The first 4 bytes of the materialization identify the total number of bytes provided for use by the instruction. This value is supplied as input to the instruction and is not modified by the instruction. A value of less than 8 causes the materialization length invalid (hex 3803) exception to be signaled.
The second 4 bytes of the materialization identify the total number of bytes available to be materialized. The instruction materializes as many bytes as can be contained in the area specified as 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. If the restrict information scope flag is binary 1, then the field contains the number of bytes materialized, rather than the number of bytes available to be materialized. The number of objects owned by user profile, the number of objects for which the profile is the primary group, and the number of objects privately authorized to user profile will contain the appropriate counts for each type of authorized/owned object. For options greater than hex 07, the authorized/owned objects are verified and these counts are corrected. For option hex 07, the counts are not verified.
If the restrict information scope flag is binary 1, then the number of objects owned by user profile and the number of objects privately authorized by user profile fields reflect the number of objects for which complete materialization data is returned, rather than the total number of such objects.
If no description is requested in the materialization options field, the above constitutes the information available for materialization. If a description (short, long, or long with context extension) is requested by the materialization options field, a description entry is present for each object materialized into the receiver (assuming it is of sufficient size) or into the independent index. Object materialization data is in one of the following formats depending on the materialization options and the object into which it is materialized:
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Short description entry materialized into receiver |
Char(32) |
0 |
0 |
|
|
1 |
1 |
|
|
2 |
2 |
|
|
4 |
4 |
|
|
14 |
E |
|
|
16 |
10 |
|
|
32
|
20
|
--- End ---
|
|
|
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Long description entry materialized into receiver |
Char(64) |
0 |
0 |
|
|
1 |
1 |
|
|
2 |
2 |
|
|
32 |
20 |
|
|
34 |
22 |
|
|
36 |
24 |
|
|
46 |
2E |
|
|
48 |
30 |
|
|
64
|
40
|
--- End ---
|
|
|
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Long description entry with context extension materialized into receiver |
Char(112) |
0 |
0 |
|
|
1 |
1 |
|
|
2 |
2 |
|
|
32 |
20 |
|
|
34 |
22 |
|
|
36 |
24 |
|
|
46 |
2E |
|
|
48 |
30 |
|
|
64 |
40 |
|
|
65 |
41 |
|
|
66 |
42 |
|
|
96 |
60 |
|
|
112
|
70
|
--- End ---
|
|
|
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Short description entry materialized into independent index |
Char(32) |
0
|
0
|
Entry type code
- Hex 40 =
- Owned object
- Hex 80 =
- Authorized object
- Hex A0 =
- Profile is primary group of object
|
|
1 |
1 |
|
|
2 |
2 |
|
|
3 |
3 |
|
|
5 |
5 |
|
|
14 |
E |
|
|
16 |
10 |
|
|
32
|
20
|
--- End ---
|
|
|
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Long description entry materialized into independent index |
Char(64) |
0
|
0
|
Entry type code
- Hex 40 =
- Owned object
- Hex 80 =
- Authorized object
- Hex A0 =
- Profile is primary group of object
|
|
1 |
1 |
|
|
2 |
2 |
|
|
3 |
3 |
|
|
33 |
21 |
|
|
35 |
23 |
|
|
37 |
25 |
|
|
39 |
27 |
|
|
46 |
2E |
|
|
48 |
30 |
|
|
64
|
40
|
--- End ---
|
|
|
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0 |
0 |
Long description entry with context extension materialized into independent index |
Char(112) |
0
|
0
|
Entry type code
- Hex 40 =
- Owned object
- Hex 80 =
- Authorized object
- Hex A0 =
- Profile is primary group of object
|
|
1 |
1 |
|
|
2 |
2 |
|
|
3 |
3 |
|
|
33 |
21 |
|
|
34 |
22 |
|
|
35 |
23 |
|
|
65 |
41 |
|
|
67 |
43 |
|
|
69 |
45 |
|
|
71 |
47 |
|
|
78 |
4E |
|
|
80 |
50 |
|
|
96 |
60 |
|
|
112
|
70
|
--- End ---
|
|
|
Following is the format of the authorization information:
Offset |
|
Dec |
Hex |
Field Name |
Data Type and Length |
0
|
0
|
Private authorization
(1 = authorized)
|
Char(2)
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
- Authority list management
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
0 |
|
|
2
|
2
|
Public authorization
(1 = authorized)
|
Char(2)
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
- Authority list management
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
2 |
2 |
|
|
4
|
4
|
--- End ---
|
|
|
When context information is materialized, if the object addressed by the system pointer is not addressed by a context, the context type field is set to hex 00 or if the object is addressed by the machine context, the context type field is set to hex 81. Additionally, in either of these cases, the context pointer is set to the system default pointer does not exist value. When the more materialization data available flag is binary 1, the pointer to the object within the last entry in the operand 1 receiver template may be specified as the continuation point on a subsequent invocation of this instruction, to cause materialization to continue, starting with the "logically next" object. To determine whether the continuation point is within the owned or authorized objects, the ownership bit in the private authorizations of the last materialized object may be tested. This instruction does not guarantee an atomic snapshot of the user profile or user profile extension across a continuation request.
The following considerations apply when object materialization data is returned in an independent index:
- System pointers returned in index entries are not set unless the index is created to contain both pointer and scalar data.
- Entry data may be truncated or padded on the right with hex zeroes to conform to the index's key and/or fixed entry lengths.
- An entry is added to the index for each qualifying object. Previously existing entries which are thereby duplicated are replaced.
- In order to ensure that index entries inserted within the same execution of this instruction are not duplicates of each other, the index entry length (if fixed) and key length (if keyed) must be sufficiently large to include the object pointer within the entry data.