System Abend Codes – S0C1 to S0C9

Detailed description and how to fix system abend codes in IBM Mainframe systems.

System Abends

S0C1 – Operation Exception

Abend Text
CEE3201S The system detected an operation exception (System Completion Code=0C1)
From compile unit [–] at entry point DLITCBL at compile unit offset
at address [–].

Description
An attempt was made to execute an invalid machine instruction operation code. The operation code is either invalid or is for an instruction that is notavailable on this CPU. This failure is usually due to a branch to an invalid storage location, as might occur in a load module with unresolved external references, or when a branch to an address outside of a program occurs.

Possible Causes

  • Subscript error
  • Tried to read a file that was not open
  • Misspelled DDNAME
  • Error in parameters passed to subroutines
  • Missing DD card
  • Recording mode was wrong, or density was incorrect
  • Bad load module, possible bad object deck
  • FORTRAN -unresolved external references
  • FORTRAN – Missing dimension statement
  • FORTRAN – Same name for an array and a subroutine
  • COBOL – Subroutine prog ID was the same as the entry name tried to call within COBOL sort I/O procedure
  • COBOL – Tried to call a subroutine which could not be found
  • COBOL – Incomplete DCB for SORTIN file
  • COBOL – Using sort verb, DDNAME was not SORTOUT when the”giving” option was used
  • COBOL – Executing sort-using after opening SORTIN file

How to Fix
Correct the program logic or construction error and rerun the job.

S0C2 – Priviledged Operation Exception

Description
An attempt was made to execute a privileged instruction while executing in problem program state. This may be the result of an invalid branch to a storage location that contains a privileged machine instruction operation code. A privileged instruction is an instruction that only certain special system programs are permitted to execute.

Possible Causes

  • Unintentional branch to invalid instruction due to subscript error
  • COBOL – Missing period at end of paragraph or paragraph names
  • COBOL – Missing goback after sort verb – logic fell into input procedure
  • COBOL – ACCEPT verb executed when no SYSIN DD was available.
  • COBOL – Dataset was open or closed when an input/output instruction was issued for it.
  • A missing or misspelled DD statement

How to Fix
Correct the program logic and rerun the job.

S0C3

Description
An attempt was made to make the EXECUTE machine instruction the target of an EXECUTE instruction, which is not allowed

Possible Causes
NA

How to Fix
Correct the program logic and rerun the job.

S0C4 – Protection Exception

Description
This ABEND is caused by a hardware detected virtual address translation error, or a storage protection violation.

Possible Causes

  • COBOL – Invalid address was referenced due to subscript error or bad parameter passed
  • COBOL – In group move, receiving record variable length defined incorrectly
  • COBOL – Tried moving variable length record that was larger than target field size
  • COBOL – Tried to read or write a file which was not open
  • COBOL – Used DD DUMMY with logic that moves high values to FD
  • COBOL – Tried to call within COBOL SORT I/O procedure
  • COBOL – Tried to “goback” in the SORT output procedure
  • COBOL – Linkage Area Ordering is not in sync with calling and called program

How to Fix
Correct the program logic error that generated the invalid address or storage reference.

When analyzing the dump, remember that the PSW saved when an 0C4 abend occurs may point at the failing instruction or it may point at the next instruction after the failing instruction.

Check to ensure that your program is obtaining, using, and freeing storage properly.

Moving data to a zero address or to an address less than 512 (decimal) is a very frequent cause of this abend.

S0C5 – Addressing Exception

Description
An address developed and used by the ABENDing program lies outside of the available virtual storage on the processor.

Possible Causes

  • Indexing, Subcripting outside the program’s assigned limits.
  • Un-initialized index
  • Attempt to read an unopened input file
  • A missing or misspelled DD statement.
  • An attempt to close a dataset second time
  • An input/output instruction is terminated because an open is unable to complete

How to Fix
Correct the program logic the refers to invalid address/storage.

S0C6 – Specification Exception

Description
An address doesn’t specify the boundary required.

Possible Causes

  • A data, instruction, or control-word address does not specify the proper storage boundary allignment.
  • An instruction specifies an odd register number when it should specify the even numbered register of an even- odd register pair.
  • A floating point register other than 0, 2, 4, or 6 was specified in a floating point instruction.
  • The multiplier or divisor in a decimal (packed) arithmetic instruction exceeds 15 digits and sign.
  • The first operand field is shorter than or equal to the second operand field in a decimal (packed) multiplication or division instruction.
  • The block address in a SET STORAGE KEY or INSERT STORAGE KEY instruction has the four low-order bits not all zero.
  • A PSW with a non-zero protection key was encountered when protection was not installed.

S0C7 – Data Exception

Description
Data was incorrect format for the instruction that attempting to process it. The ABEND can occur when packed decimal instruction are used.

Possible Causes

  • Un-initialized index or subscript
  • Fields in decimal arithmatic overlap incorrectly
  • Index /Subscript value incorrect and invalid data was referenced
  • The decimal multiplicand has too many high-order significant digits
  • Data fields was not initialized, blanks were read into a field designed to be processed with packed decimal instruction.

How to Fix
Correct the format of the data/initialize the data item that is being computed.

S0C8 – Fixed Point Overflow Exception

Description
This ABEND is a fixed-point overflow exception. A high- order(leftmost) carry out of a significant bit has occurred during a fixed-point add,subtract, or shift instruction.

Possible Causes
The number being manipulated may be too large for fixed-point arithmetic instructions. Consider changing the program’s algorithm or switching to floating-point instructions. You can use the SPM machine instruction to disable S0C8 abends by setting the fixed-point overflow enabling bit in the PSW before fixed-pointmath is done.

S0C9 – Fixed Point Divide Exception

Description
This ABEND is a fixed-point divide exception. A quotient has exceeded the register size in a DIVIDE instruction, or the result of a CONVERT TO BINARY instruction is more than 31 bits long.

Possible Causes
Division by ZERO in logics.

How to Fix
Correct the program logic.
Change region to 0M in JCL.

Filed under:

One response

  1. Mark E Sharafinski

    Excellent source for causes of “mysterious” abends. (Esoteric programmer, now departed, loved using a S0C3 abend for his “abend” invocation.)

Leave a Reply

Your email address will not be published. Required fields are marked *

Exit mobile version