Reinitialize Static Storage (RINZSTAT)

Instruction Syntax

Op Code (Hex) Operand 1
RINZSTAT 02C1 Activation template
Operand 1: Space pointer.

Bound Program Access
Built-in number for RINZSTAT2 is 664.
RINZSTAT2 (
           activation_template   : address
)
 
OR
 
Built-in number for RINZSTAT is 417.
RINZSTAT (
          activation_template   : address
)

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.

Note

It is recommended that you use the RINZSTAT2 instruction which supports 8-byte activation group marks. 4-byte marks can wrap and produce unexpected results.

Description:

This instruction reinitializes the static storage for eligible previously activated bound programs, including bound service programs. To be eligible, the program must have the allow static storage re-initialization attribute set. The activation mark of any affected program activation is not changed.

Operand 1 must contain a space pointer to the activation template.

The activation template must be quadword aligned. The format of the structure is different for the RINZSTAT and the RINZSTAT2 instructions.

Format of activation template for RINZSTAT2 instruction
Offset  
Dec Hex Field Name Data Type and Length
0 0 Activation template Char(24)
0 0
  • System pointer to the program
  • System pointer

16

10

  • Activation group mark
    For Non-Bound programs, the following datatype should be used:

  • UBin(8)

16 10
    • Activation group mark (Non-Bound program)
    • Char(8)

24

18

--- End ---

 

Format of activation template for RINZSTAT instruction
Offset  
Dec Hex Field Name Data Type and Length
0 0 Activation template Char(20)
0 0
  • System pointer to the program
  • System pointer
16 10
  • Activation group mark
  • UBin(4)

20

14

--- End ---

 

If the system pointer to the program is a null pointer value, all eligible activations of bound programs or bound service programs within the activation group specified by the activation group mark will be interrogated.

If the thread is in user state at the time this instruction is invoked and the activation group, specified by the activation group mark, is a system state activation group an activation group access violation (hex 2C12) exception will be signalled. The user must have adequate authority to all bound programs with the allow static storage re-initialization attribute in the activation group or none of the programs will be reinitialized.

If the system pointer to the program is not a null pointer value, only the program activation in the activation group specified, provided there is adequate authority and the program has the allow static storage re-initialization attribute, will have its static storage reinitialized. If the activation group specified by the activation group mark is not found, an activation group not found (hex 2C13) exception will be signalled. If the program activation can not be found in the activation group, an invalid operation for program (hex 2C15) exception will be signalled. If the program does not have the allow static storage re-initialization attribute set, an invalid operation for program (hex 2C15) exception will be signalled.

The activation group mark uniquely identifies an activation group within a process. A value of zero is interpreted to be a request to use the activation group of the current invocation.

Exported data to the activation group will not be changed.

Usage Notes

Static storage is initialized by the machine each time a program (bound program or bound service program) is activated or reinitialized via this instruction. Only those static storage locations specified by the high-level language (HLL) compiler are initialized by the machine. Other locations are uninitialized. The machine can only initialize static storage with values which can be specified as constants at compile-time. Complex values which can only be evaluated at run-time cannot be initialized using this mechanism. For example, the current time of day or the "construction" of a C++ object.

Some HLL compilers (e.g. C++) make use of additional run-time static initialization (s-init) mechanisms to initialize variables with complex values. The s-init mechanism is triggered by execution of the program entry point (PEP) of a bound program and is supported by language run-time code. The RINZSTAT instruction does not cause this s-init code to be re-executed. The use of the RINZSTAT instruction on a program containing s-init items can lead to an inconsistent internal state of the program.

Authorization Required

  • Execute
    • Program referenced by operand 1
    • 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
  • 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
    • 220B Object Not Available
  • 24 Pointer Specification
    • 2401 Pointer Does Not Exist
    • 2402 Pointer Type Invalid
    • 2403 Pointer Addressing Invalid Object Type
  • 2C Program Execution
    • 2C12 Activation Group Access Violation
    • 2C13 Activation Group Not Found
    • 2C15 Invalid Operation for Program
  • 2E Resource Control Limit
    • 2E01 User Profile Storage Limit Exceeded
  • 36 Space Management
    • 3601 Space Extension/Truncation
  • 44 Protection Violation
    • 4401 Object Domain or Hardware Storage Protection Violation