Test Extended Authorities (TESTEAU)

Instruction Syntax

Op Code (Hex) Extender Operand 1 Operand 2 Operand 3 Operand [4-5]
TESTEAU 10FB Available authority template receiver Required authority template Relative invocation
TESTEAUB 1CFB Branch options Available authority template receiver Required authority template Relative invocation Branch targets
TESTEAUI 18FB Indicator options Available authority template receiver Required authority template Relative invocation Indicator targets
Operand 1: Character(8) variable scalar or null.

Operand 2: Character(8) scalar.

Operand 3: Binary(2) variable scalar or constant or null.

Operand 4-5:

  • Branch Form–Branch point, instruction pointer, relative instruction number, or absolute instruction number.
  • Indicator Form–Numeric variable scalar or character variable scalar.

Bound Program Access
Built-in number for TESTEAU is 64.
TESTEAU (
         available_authority_template_receiver   : address OR
                                                   null operand
         required_authority_template             : address
         relative_invocation                     : address of signed binary(2) OR
                                                   null operand
) :   signed binary(4) /* return_code */

The return code will be set as follows:

Return code
Meaning
1
Authorized.
0
Not Authorized.

This built-in function is used to provide support for the branch and indicator forms of the TESTEAU operation. The user must specify code to process the return code and perform the desired branching or indicator setting.

Description:

This instruction verifies that the privileged instructions and special authorities specified by operand 2 are currently available to the thread.

If operand 1 is not null, all of the privileged instructions and special authorities specified by operand 2 that are currently available to the thread are returned in operand 1.

Note: The term authority verification refers to the testing of the required privileged instruction and special authorities.

If operand 3 is null, the authority verification is performed relative to the invocation executing this instruction. If an operand 3 is specified, the authority verification is performed relative to the invocation specified. Specifying an invocation causes the invocations subsequent to it to be bypassed in the authority verification process. This has the influence of excluding the program adopted user profiles for any of these excluded invocations from acting as a source of authority to the authority verification process.

The required privileged instructions and special authorities are specified by the required authority template of operand 2.

If the required authority is available, one of the following occurs:

  • Branch form indicated
    • Conditional transfer of control to the instruction indicated by the appropriate branch target operand.
  • Indicator form specified
    • The leftmost byte of each of the indicator operands is assigned the following values:
      • Hex F1 - If the result of the test matches the corresponding indicator option
      • Hex F0 - If the result of the test does not match the corresponding indicator option
If no branch options are specified, instruction execution proceeds to the next instruction. If operand 1 is null and neither the branch or indicator form is used, an invalid operand type exception is signaled.

The format for the available authority template receiver (operand 1) is as follows: (1 = authorized)

Offset  
Dec Hex Field Name Data Type and Length
0 0 Authority template Char(8)
0 0
  • Privileged instruction template
  • Char(4)
0 0
    • Create Logical Unit Description
    • Bit 0
0 0
    • Create Network Description
    • Bit 1
0 0
    • Create Controller Description
    • Bit 2
0 0
    • Create user profile
    • Bit 3
0 0
    • Modify user profile
    • Bit 4
0 0
    • Diagnose
    • Bit 5
0 0
    • Terminate machine processing
    • Bit 6
0 0
    • Initiate process
    • Bit 7
0 0
    • Modify Resource Management Control
    • Bit 8
0 0
    • Create Mode Description
    • Bit 9
0 0
    • Create Class of Service Description
    • Bit 10
0 0
    • Reserved (binary 0)
    • Bits 11-31
4 4
  • Special authority template
  • Char(4)
4 4
    • All object
    • Bit 0
4 4
    • Load (unrestricted)
    • Bit 1
4 4
    • Dump (unrestricted)
    • Bit 2
4 4
    • Suspend (unrestricted)
    • Bit 3
4 4
    • Load (restricted)
    • Bit 4
4 4
    • Dump (restricted)
    • Bit 5
4 4
    • Suspend (restricted)
    • Bit 6
4 4
    • Process control
    • Bit 7
4 4
    • Reserved (binary 0)
    • Bit 8
4 4
    • Service
    • Bit 9
4 4
    • Auditor authority
    • Bit 10
4 4
    • Spool control
    • Bit 11
4 4
    • I/O system configuration
    • Bit 12
4 4
    • Reserved (binary 0)
    • Bits 13-23
4 4
    • Modify machine attributes
    • Bits 24-31
4 4
      • Group 2
      • Bit 24
4 4
      • Group 3
      • Bit 25
4 4
      • Group 4
      • Bit 26
4 4
      • Group 5
      • Bit 27
4 4
      • Group 6
      • Bit 28
4 4
      • Group 7
      • Bit 29
4 4
      • Group 8
      • Bit 30
4 4
      • Group 9
      • Bit 31
8
8
--- End ---
 

The format for the required authority template (operand 2) is as follows: (1 = authorized)

Offset  
Dec Hex Field Name Data Type and Length
0 0 Required authority Char(8)
0 0
  • Privileged instruction template
  • Char(4)
0 0
    • Create Logical Unit Description
    • Bit 0
0 0
    • Create Network Description
    • Bit 1
0 0
    • Create Controller Description
    • Bit 2
0 0
    • Create user profile
    • Bit 3
0 0
    • Modify user profile
    • Bit 4
0 0
    • Diagnose
    • Bit 5
0 0
    • Terminate machine processing
    • Bit 6
0 0
    • Initiate process
    • Bit 7
0 0
    • Modify Resource Management Control
    • Bit 8
0 0
    • Create Mode Description
    • Bit 9
0 0
    • Create Class of Service Description
    • Bit 10
0 0
    • Reserved (binary 0)
    • Bits 11-31
4 4
  • Special authority template
  • Char(4)
4 4
    • All object
    • Bit 0
4 4
    • Load (unrestricted)
    • Bit 1
4 4
    • Dump (unrestricted)
    • Bit 2
4 4
    • Suspend (unrestricted)
    • Bit 3
4 4
    • Load (restricted)
    • Bit 4
4 4
    • Dump (restricted)
    • Bit 5
4 4
    • Suspend (restricted)
    • Bit 6
4 4
    • Process control
    • Bit 7
4 4
    • Reserved (binary 0)
    • Bit 8
4 4
    • Service
    • Bit 9
4 4
    • Auditor authority
    • Bit 10
4 4
    • Spool control
    • Bit 11
4 4
    • I/O system configuration - DAC
    • Bit 12
4 4
    • Reserved (binary 0)
    • Bits 13-23
4 4
    • Modify machine attributes
    • Bits 24-31
4 4
      • Group 2
      • Bit 24
4 4
      • Group 3
      • Bit 25
4 4
      • Group 4
      • Bit 26
4 4
      • Group 5
      • Bit 27
4 4
      • Group 6
      • Bit 28
4 4
      • Group 7
      • Bit 29
4 4
      • Group 8
      • Bit 30
4 4
      • Group 9
      • Bit 31
8
8
--- End ---
 

The relative invocation operand (operand 3) identifies an invocation relative to the current invocation at which the authority verification is to be performed. The value of the relative invocation operand must be less than or equal to zero. A value of zero identifies the current invocation, -1 identifies the prior invocation, -2, the invocation prior to that, and so on. A value larger than the number of invocations currently on the invocation stack or a positive value results in the signaling of the scalar value invalid (hex 3203) exception.

An immediate value is not allowed for operand 3.

The program adopted and propagated user profiles for the identified invocation and older invocations will be included in the authority verification process. Program adopted user profiles for invocations newer than the identified invocation will not be included in the authority verification process. If the current invocation is specified, its program adopted user profile is included whether or not it is to be propagated.

Damaged user profiles encountered during the authority verification processing result in the signaling of the authority verification terminated due to damaged object (hex 1005) exception

Resultant Conditions

  • Authorized - the required authority is available.
  • Unauthorized - the required authority is not available.

Authorization Required

  • Execute
    • Contexts referenced for address resolution

Lock Enforcement

  • Materialize
    • 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
    • 1002 Machine Context Damage State
    • 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
    • 2207 Authority Verification Terminated Due to Destroyed Object
    • 2208 Object Compressed
    • 220B Object Not Available
  • 24 Pointer Specification
    • 2401 Pointer Does Not Exist
    • 2402 Pointer Type Invalid
  • 2C Program Execution
    • 2C04 Branch Target Invalid
  • 2E Resource Control Limit
    • 2E01 User Profile Storage Limit Exceeded
  • 32 Scalar Specification
    • 3201 Scalar Type Invalid
    • 3203 Scalar Value Invalid
  • 36 Space Management
    • 3601 Space Extension/Truncation
  • 38 Template Specification
    • 3801 Template Value Invalid
  • 44 Protection Violation
    • 4401 Object Domain or Hardware Storage Protection Violation
    • 4402 Literal Values Cannot Be Changed