MainframeKit

S0C2

Privileged-operation exceptionSYSTEM ABEND

A program running in problem state tried to run a privileged instruction it is not allowed to use.

MOST LIKELY

A branch to a bad address, so data is executed as instructions.

FIRST CHECK

Find the failing address and the active module in the symptom dump.

TRY IT ▸

MainframeKit assistant

What it means

Code 0C2 is the program check for a privileged operation. Some machine instructions may only run in supervisor state; when an ordinary program reaches one, the system ends the task unless a recovery routine takes over.

In application programs this is rarely a real attempt to use a privileged instruction. Like 0C1, it usually means control passed into data or overwritten storage that happens to look like a privileged opcode.

Typical causes

  • A branch to a bad address, so data is executed as instructions.
  • A corrupted return address or save area.
  • A called module that is missing, wrong-level or badly link-edited.
  • Assembler code that issues a supervisor-only instruction without authority.

How to fix it

  1. Find the failing address and the active module in the symptom dump.
  2. Use the traceback to see which program made the last call or return.
  3. Check that every module in the call chain is the right level and linked cleanly.
  4. For assembler code, use the proper system service instead of the privileged instruction.

Example

Illustrative only; names and values are invented.

IEA995I SYMPTOM DUMP OUTPUT
SYSTEM COMPLETION CODE=0C2  REASON CODE=00000002
IEF450I PAYJOB01 STEP020 - ABEND=S0C2 U0000 REASON=00000002