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
- Find the failing address and the active module in the symptom dump.
- Use the traceback to see which program made the last call or return.
- Check that every module in the call chain is the right level and linked cleanly.
- 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