Set Space Pointer Offset (SETSPPO)

Instruction Syntax

Op Code (Hex) Operand 1 Operand 2
0092 Receiver Source
Operand 1: Space pointer.

Operand 2: Binary scalar.

Description:

The value of the binary scalar specified by operand 2 is assigned to the offset portion of the space pointer identified by operand 1. The space pointer continues to address the same space object.

Operand 1 must contain a space pointer; otherwise, a pointer type invalid (hex 2402) exception is signaled.

When operand 1 points into teraspace, the pointer offset value might not be set correctly because there is no binary field large enough to hold a full teraspace offset. However, an exception may or may not be signaled. Note that STSPPO signals an exception when attempted on a space pointer containing a teraspace address, so there can be no expectation that a stored offset can later be used to set a teraspace offset. However, an alternative to SETSPPO for handling some teraspace values is to use a pointer to the start of the teraspace allocation and then add in an offset computed using the SUBSPPFO instruction. Offsets within one teraspace allocation can be used to set a space pointer in this way when the specific allocation size is known to be smaller than the maximum value of a binary variable. See STSPPO for more information.

When the addressability in the space pointer is modified, the instruction signals a space addressing violation (hex 0601) exception when one of the following conditions occurs:

  • The space address to be stored in the pointer has a negative offset value.
  • The offset addresses beyond the largest space allocatable in the object. This maximum offset value is dependent on the size and packaging of the object containing the space and is independent of the actual size of the space allocated.
If the exception is signaled by this instruction for this reason, the pointer is not modified by the instruction.

Attempts to use a pointer whose offset value lies: between the currently allocated extent of the space and the maximum allocatable extent, or whose offset is outside all teraspace allocations, cause the space addressing violation (hex 0601) exception to be signaled.

Authorization Required

  • None

Lock Enforcement

  • None

Exceptions

  • 06 Addressing
    • 0601 Space Addressing Violation
    • 0602 Boundary Alignment
    • 0603 Range
  • 08 Argument/Parameter
    • 0801 Parameter Reference Violation
  • 10 Damage Encountered
    • 1004 System Object Damage State
    • 1044 Partial System Object Damage
  • 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
    • 2208 Object Compressed
    • 220B Object Not Available
  • 24 Pointer Specification
    • 2401 Pointer Does Not Exist
    • 2402 Pointer Type Invalid
  • 2E Resource Control Limit
    • 2E01 User Profile Storage Limit Exceeded
  • 32 Scalar Specification
    • 3201 Scalar Type Invalid
  • 36 Space Management
    • 3601 Space Extension/Truncation
  • 44 Protection Violation
    • 4401 Object Domain or Hardware Storage Protection Violation
    • 4402 Literal Values Cannot Be Changed