Reinitialize Static Storage (RINZSTAT)


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
UBin(8)



For Non-Bound programs, the following datatype should be used:


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

Lock Enforcement

Exceptions

06 Addressing

0A Authorization

10 Damage Encountered

1A Lock State

1C Machine-Dependent

20 Machine Support

22 Object Access

24 Pointer Specification

2C Program Execution

2E Resource Control Limit

36 Space Management

44 Protection Violation