COBOL Troubleshooting
S0CA decimal overflow
S0CA is a decimal overflow: a packed-decimal result was too large for its field.
What it means
- Packed-decimal arithmetic produced more digits than the receiving field holds.
- Common in financial totals when volumes grow beyond the original design.
Common causes
- Total field (e.g. PIC 9(9)V99) exceeded by larger-than-expected input.
- Multiplication of two packed fields into an undersized result.
- Missing ON SIZE ERROR on the COMPUTE.
How to diagnose
- Identify the statement and the receiving field size.
- Compare maximum possible input values against the field capacity.
How to fix it
- Enlarge the result field to cover realistic maximums.
- Add ON SIZE ERROR to handle overflow as a business exception.
Example: Size packed totals for peak values
01 WS-GRAND-TOTAL PIC S9(13)V99 COMP-3.
COMPUTE WS-GRAND-TOTAL = WS-GRAND-TOTAL + WS-AMT
ON SIZE ERROR
PERFORM 9000-OVERFLOW-HANDLER
END-COMPUTE.
Generous field sizes plus ON SIZE ERROR keep totals safe.
Interview tip
- Q: How would you troubleshoot a S0CA decimal overflow in production?
- A: I would check the receiving field capacity against the actual data range and enlarge it, adding ON SIZE ERROR handling.
Prevention checklist
- Design totals for 10x current peak volume.
- Monitor totals approaching capacity.
