MainframeKit

S0CA

Decimal-overflow exceptionSYSTEM ABEND

A decimal result was too large for its target field and the program was set to treat that as an error.

MOST LIKELY

A result field sized too small for the real range of values.

FIRST CHECK

Find the failing instruction and its target field in the listing.

TRY IT ▸

Record decoder

What it means

Code 0CA is the program check for a decimal overflow. A packed-decimal result had more significant digits than the receiving field could hold.

Whether this becomes an abend depends on the program mask, which the program or compiler controls. Compiled COBOL programs usually do not abend on it; the result is truncated instead, so a 0CA is more often seen in assembler or special run-time settings.

Typical causes

  • A result field sized too small for the real range of values.
  • Unexpectedly large input values, such as a wrong unit or an extra digit.
  • Assembler code that enables the decimal-overflow mask.
  • Wrong record layout, so a large field is read where a small one was expected.

How to fix it

  1. Find the failing instruction and its target field in the listing.
  2. Compare the result's expected size with the field definition.
  3. Widen the result field if large values are legitimate.
  4. Validate input ranges before arithmetic.

Example

Illustrative only; names and values are invented.

IEA995I SYMPTOM DUMP OUTPUT
SYSTEM COMPLETION CODE=0CA  REASON CODE=0000000A
IEF450I PAYJOB01 STEP020 - ABEND=S0CA U0000 REASON=0000000A