Op Code (Hex) | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
---|---|---|---|---|
0164 | Pointer for addressability to object | Resolve options | Context through which object is to be located | Authority to be set (1) |
Operand 1: System pointer.
Operand 2: Character(34, 128) scalar or null.
Operand 3: System pointer or null.
Operand 4: Character(2) scalar or null.
Bound program access |
---|
|
Built-ins |
---|
_RSLVSP1 ( pointer_for_addressability_to_object : address of system pointer ) _RSLVSP2 ( pointer_for_addressability_to_object : address of system pointer resolve_options : address ) _RSLVSP3 ( pointer_for_addressability_to_object : address of system pointer context_through_which_object_is_to_be_located : address of system pointer ) _RSLVSP4 ( pointer_for_addressability_to_object : address of system pointer resolve_options : address context_through_which_object_is_to_be_located : address of system pointer ) _RSLVSP5 ( pointer_for_addressability_to_object : address of system pointer authority_to_be_set : address ) _RSLVSP6 ( pointer_for_addressability_to_object : address of system pointer resolve_options : address authority_to_be_set : address ) _RSLVSP7 ( pointer_for_addressability_to_object : address of system pointer context_through_which_object_is_to_be_located : address of system pointer OR authority_to_be_set : address ) _RSLVSP8 ( pointer_for_addressability_to_object : address of system pointer resolve_options : address context_through_which_object_is_to_be_located : address of system pointer OR authority_to_be_set : address ) |
This instruction locates an object identified by a symbolic address and stores the object's addressability and authority (1) in a system pointer. A resolved system pointer is returned in operand 1 with addressability to a system object and the requested authority currently available to the thread for the object.
Note: | The ownership flag is never set in the system pointer. |
Operand 2 specifies the symbolic identification of the object to be located. Operand 3 identifies the context to be searched in order to locate the object. Operand 4 identifies the authority states to be set in the pointer. First, the instruction locates an object based on operands 1, 2 and 3. Then, the instruction sets the appropriate authority states in the system pointer. If the object is not found, and do not signal object not found exception is set to binary 0, then an object not found (hex 2201) exception is signaled. If the object is not found, and do not signal object not found exception is set to binary 1, then the operand 1 pointer is set to a null pointer value and no exception is signaled.
The object to be located is either addressed through a machine context or a context object.
The following object types can only be addressed through the system ASP machine context (i.e. they cannot be addressed through an independent ASP machine context or a context object):
The following object types can only be addressed through the system ASP machine context or an independent ASP machine context (i.e. they cannot be addressed through a context object):
Other object types are addressed through a context object, which may reside in the system ASP, basic ASP, or an ASP group.
No two context objects with the same name and subtype can exist within a given ASP group or within all basic ASPs and the system ASP (combined). Also, a context object in the system ASP or basic ASP cannot have the same name and subtype as a context in an ASP group. But context objects that are in different ASP groups may have the same name and subtype.
An ASP group is a set of independent ASPs that are configured such that they always vary on and off together.
The search for the object to be located proceeds as follows:
(Note that the search method field can be used to limit the search to just the ASP groups of the current thread's name space.)
When a name space is used to resolve to an object, the method used to search the name space depends on the type of object being resolved to:
An alias context is a context object on an independent ASP which is searched before searching the specified context in the system ASP or basic ASP. Note that only context objects in the system ASP or basic ASPs can have an alias context. The alias context will always be in the ASP group of the current thread's name space.
If the name space contains an ASP group and the ASP group has an alias context for the containing context object, then this instruction searches for the specified object in the alias context first. If the object is found, the instruction resolves to that object. If the object is not found (or if the context does not have an alias context) the instruction then searches the actual containing context that was specified. If the object is found there, the instruction resolves to that object. If the object is still not found, and do not signal object not found exception is set to binary 0, then an object not found (hex 2201) exception is signaled. If the object is still not found, and do not signal object not found exception is set to binary 1, then the operand 1 pointer is set to a null pointer value and no exception is signaled.
When a containing context is specified, the current thread must have authority to each context object that is searched (e.g. the specified context object and the alias context, if any); otherwise an unauthorized for operation (hex 0A01) exception is signaled. If an object is found in an alias context, the specified containing context in the system ASP or basic ASPs will not be searched and authority will only be verified for the alias context (not the specified containing context object itself.)
If the object still has not been found, the next context object in the the name resolution list is searched in a similar manner. This continues until all context objects in the name resolution list have been searched (or until the object is found). If the object is not found, and do not signal object not found exception is set to binary 0, then an object not found (hex 2201) exception is signaled. If the object is not found, and do not signal object not found exception is set to binary 1, then the operand 1 pointer is set to a null pointer value and no exception is signaled.
For every context object in the name resolution list, the current thread must have authority to each context object that is searched (e.g. the specified context object and the alias for the context object, if any); otherwise an unauthorized for operation (hex 0A01) exception is signaled. For every context object in the name resolution list, if an object is found in an alias context, the specified containing context in the system ASP or basic ASPs will not be searched and authority will only be verified for the alias context (not the specified containing context object itself.)
As described above, objects are located in a machine context, in a specified containing context object, or using a name resolution list of context objects. Issues regarding name spaces are now described for these cases. If an object cannot reside in an independent ASP machine context or a context object, then name spaces do not apply.
When searching a name space for a context object, if the name space contains an ASP group and it is varied off, then that ASP group is bypassed and only the system ASP machine context is searched (for objects in the system ASP and basic ASPs).
When searching a name space, if a containing context object is specified and that context object resides on an independent ASP that is varied off, an object not available (hex 220B) exception is signaled. If the containing context has an alias context and the alias context resides on an independent ASP that is varied off, then the alias context is bypassed and no exception is signaled.
If a name resolution list is used to find an object, if the context object referenced by the name resolution list entry is destroyed or it resides on an independent ASP that is varied off, that context name is bypassed and the search continues with the next context object in the name resolution list. If the context object referenced by the name resolution list entry has an alias context and the alias context resides on an independent ASP that is varied off, then the alias context is bypassed and no exception is signaled.
The following describes the instruction's function when operand 2 is null (or if the operand 2 template is extended and the field ignore object specification and authorization fields is set to 1). Note that operand 3 is always ignored in this case.
If a context name is specified, then that context will be searched to locate the object. If no context is specified, the context object(s) located by the name resolution list associated with the thread issuing this instruction is used to locate the object. In both cases, the current thread's name space will be used (unless the search method field in the extended template is used to specify a different method).
If the minimum required authorization in the initial value is not set (binary 0), the instruction resolves the operand 1 system pointer to the first object encountered with the designated type code, subtype code, and object name without regard to the authorization available to the thread for the object. If one or more authorization (or ownership) states are required (signified by binary 1's), the context(s) is searched until an object is encountered with the designated type, subtype, and name for which the thread currently has all required authorization states.
If operand 2 is not null, then the object identified by operand 2 is resolved. (But if the operand 2 template is extended and the field ignore object specification and authorization fields is set to binary 1, then the object identified by operand 2 is ignored. See the preceding section, starting with the phrase "The following describes the instruction's function when operand 2 is null...".) When the object identified by operand 2 is resolved, the instruction searches the context(s) specified by operand 3 and stores the resolved system pointer in operand 1.
The format of operand 2 is as follows:
Offset | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||
0 | 0 |
| Object specification |
| Char(32) | ||||||||||||
0 | 0 |
| Type code |
| Char(1) | ||||||||||||
1 | 1 |
| Subtype code |
| Char(1) | ||||||||||||
2 | 2 |
| Object name |
| Char(30) | ||||||||||||
32 | 20 |
| Required authorization (1 = required) |
| Char(2) | ||||||||||||
32 | 20 |
| Object control |
| Bit 0 | ||||||||||||
32 | 20 |
| Object management |
| Bit 1 | ||||||||||||
32 | 20 |
| Authorized pointer |
| Bit 2 | ||||||||||||
32 | 20 |
| Space authority |
| Bit 3 | ||||||||||||
32 | 20 |
| Retrieve |
| Bit 4 | ||||||||||||
32 | 20 |
| Insert |
| Bit 5 | ||||||||||||
32 | 20 |
| Delete |
| Bit 6 | ||||||||||||
32 | 20 |
| Update |
| Bit 7 | ||||||||||||
32 | 20 |
| Ownership |
| Bit 8 | ||||||||||||
32 | 20 |
| Excluded |
| Bit 9 | ||||||||||||
32 | 20 |
| Authority list management |
| Bit 10 | ||||||||||||
32 | 20 |
| Execute |
| Bit 11 | ||||||||||||
32 | 20 |
| Alter |
| Bit 12 | ||||||||||||
32 | 20 |
| Reference |
| Bit 13 | ||||||||||||
32 | 20 |
| Reserved (binary 0) |
| Bit 14 | ||||||||||||
32 | 20 |
| Extended template |
| Bit 15 | ||||||||||||
|
|
|
| ||||||||||||||
34 | 22 |
| --- End --- |
|
|
The allowed type codes are as follows:
All other codes are reserved. If other codes are specified, they cause a scalar value invalid (hex 3203) exception to be signaled. This instruction will not resolve to hidden contexts. If an attempt is made to resolve to a hidden context, and do not signal object not found exception is set to binary 0, then an object not found (hex 2201) exception is signaled. If do not signal object not found exception is set to binary 1, then the operand 1 pointer is set to a null pointer value and no exception is signaled. A hidden context is denoted by the hidden attribute of a context. See the MATCTX instruction for additional details.
When resolving to an object that can reside in a context object, operand 3 identifies the context in which to locate the object identified by operand 2. If operand 3 is null, then the contexts identified in the name resolution list associated with the thread issuing this instruction are searched in the order in which they appear in the list. If operand 3 is not null, the system pointer specified must address a context, and only this context (and possible aliases for the context) are used to locate the object.
If the required authorization field in operand 2 is not set (all values set to 0), the instruction resolves the operand 1 system pointer to the first object encountered with the designated type code, subtype code, and object name without regard to the authorization currently available to the thread. If one or more authorization (or ownership) states are required (signified by binary 1's), the context is searched until an object is encountered with the designated type code, subtype code, object name, and the user profiles governing the thread's execution that have all the required authorization states.
If the bit extended template is set to binary 1,
then the extended
template is defined starting at offset 34 of the operand 2
template. The extended template is defined as follows:
Offset | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||||||
34 | 22 |
| Template version |
| Char(1) | ||||||||||||||||
35 | 23 |
| Search method |
| Char(1) | ||||||||||||||||
|
|
|
| ||||||||||||||||||
36 | 24 |
| Options |
| Char(1) | ||||||||||||||||
36 | 24 |
| Ignore object specification and authorization fields |
| Bit 0 | ||||||||||||||||
|
|
|
| ||||||||||||||||||
36 | 24 |
| Do not signal object not found exception |
| Bit 1 | ||||||||||||||||
|
|
|
| ||||||||||||||||||
36 | 24 |
| Reserved (binary 0) |
| Bits 2-7 | ||||||||||||||||
37 | 25 |
| Reserved (binary 0) |
| Char(7) | ||||||||||||||||
44 | 2C |
| Independent ASP number to search |
| Char(2) | ||||||||||||||||
46 | 2E |
| ASP number of context containing resolved object |
| Char(2) | ||||||||||||||||
48 | 30 |
| Context containing the resolved object |
| System pointer | ||||||||||||||||
64 | 40 |
| Reserved (binary 0) |
| Char(64) | ||||||||||||||||
128 | 80 |
| --- End --- |
|
|
The field template version identifies the version of the extended template. It must be set to hex 00.
The field search method determines how the name space is searched:
The field independent ASP number to search must specify an existing independent ASP. A value of 0 specifies the system ASP and basic ASPs. Values 33 through 255 specify an independent ASP. An ASP number between 1 and 32 or a number greater than 255 results in a template value invalid (hex 3801) exception being signaled. If the specified independent ASP is not varied on, then a object not available (hex 220B) exception is signaled.
A User Defined File System (UDFS) ASP is an IASP that is never part of an ASP group.
As stated above, if a resolve is done for an object type that can only be addressed through the system ASP machine context then only the system machine context is searched. When resolving to objects that can only reside in the system ASP machine context, the field search method must be set to hex 00 (if the template is extended). Otherwise a template value invalid (hex 3801) exception is signaled.
For option hex 01 or hex 02, if a context address is provided in operand 3, then the context object must reside in the same ASP group as the specified independent ASP to search; otherwise an auxiliary storage pool number invalid (hex 1C09) exception is signaled.
For option hex 01 or hex 02, execute authority is required for the device description for every independent ASP in the ASP group (the ASP group that contains the independent ASP number to search). Authority to a device description is checked only when the corresponding independent ASP is searched. Once an object is found, the remaining independent ASPs do not have to be searched.
For option hex 03, if a context address is provided in operand 3, then it must reference a context object in an ASP group of the current thread's name space or in the system ASP or basic ASP; otherwise an auxiliary storage pool number invalid (hex 1C09) exception is signaled. If the context address refers to a context object in the system ASP or basic ASP, then only the alias contexts are searched.
When ignore object specification and authorization fields is set to binary 0, the object specification and required authorization will be used as defined above. If this field is set to binary 1, then the object specification and required authorization fields will be ignored, as if operand 2 were a null pointer.
When do not signal object not found exception is set to binary 0, an object not found (hex 2201) exception will be signaled if the object is not found. If this field is set to binary 1, then an object not found (hex 2201) exception will not be signaled if the object is not found, and the operand 1 pointer will be set to a null pointer value.
When an object is successfully resolved by this instruction, the field context containing the resolved object will contain a pointer to the context object in which the object was found. A null pointer value means the object was found in a machine context. The field ASP number of context containing resolved object indicates the ASP number on which the context containing the resolved object resides. This will be a basic ASP number or an independent ASP number. When ASP number of context containing resolved object is set to hex 00, it identifies the system ASP.
Once addressability has been set in the operand 1 pointer, operand 4 is used to determine which, if any, of the object authority states is to be set into the pointer. Only the object authority states correlating with bits 0 through 7 and 11, that is, object control through update and execute, can be set into the pointer. This restriction applies whether the authority mask controlling which authorities to set in the pointer comes from operand 4, operand 2, or the initial value for the system pointer.
If operand 4 is null, the object authority states required to locate the object are set in the operand 1 pointer. This required object authority is as specified in operand 2 or in the initial value for operand 1 if operand 2 is null (or if the operand 2 template is extended and the field ignore object specification and authorization fields is set to 1). If the thread does not currently have authorized pointer authority for the object, no authority is stored in the system pointer, and no exception is signaled.
If operand 2 is null (or if the operand 2 template is extended and the field ignore object specification and authorization fields is set to 1) and operand 4 is null and operand 1 is a resolved system pointer, the authority states in the pointer are not modified.
If operand 4 is not null, it specifies the object authority states to be
set in the
operand 1
system pointer. The format of operand 4 is as
follows:
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
0 | 0 |
| Requested authorization (1 = set authority) |
| Char(2) | ||||||||
0 | 0 |
| Object control |
| Bit 0 | ||||||||
0 | 0 |
| Object management |
| Bit 1 | ||||||||
0 | 0 |
| Authorized pointer |
| Bit 2 | ||||||||
0 | 0 |
| Space authority |
| Bit 3 | ||||||||
0 | 0 |
| Retrieve |
| Bit 4 | ||||||||
0 | 0 |
| Insert |
| Bit 5 | ||||||||
0 | 0 |
| Delete |
| Bit 6 | ||||||||
0 | 0 |
| Update |
| Bit 7 | ||||||||
0 | 0 |
| Reserved (binary 0) |
| Bits 8-10 | ||||||||
0 | 0 |
| Execute |
| Bit 11 | ||||||||
0 | 0 |
| Alter (will be ignored) |
| Bit 12 | ||||||||
0 | 0 |
| Reference (will be ignored) |
| Bit 13 | ||||||||
0 | 0 |
| Reserved (binary 0) |
| Bits 14-15 | ||||||||
2 | 2 |
| --- End --- |
|
|
The authority states set in the operand 1 system pointer are based on the following:
06 Addressing
08 Argument/Parameter
0A Authorization
10 Damage Encountered
1A Lock State
1C Machine-Dependent
20 Machine Support
22 Object Access
24 Pointer Specification
2E Resource Control Limit
32 Scalar Specification
36 Space Management
38 Template Specification
44 Protection Violation
(1) Programs executing in user-state may not assign authority in the resulting system pointer. The value in operand 4 is ignored and no exception is raised.