Error message and abend code differences

The optimized modules generated by ABO are in almost every case functionally equivalent to the corresponding original modules. However, in some rare cases an ABO generated module will produce different Language Environment® (LE) runtime messages or different CICS® abend codes than the original module.

This can happen when division on large data items and other complex operations are inlined or optimized in the generated code by ABO for more efficient processing, instead of being handled by an LE library routine or inefficient machine instructions.

In a non-CICS application, an ABO generated module:
  • may produce a fixed-point divide exception (CEE3209S) message in places where the original module produced a decimal-divide exception (CEE3211S) or IGZ0061S message.
  • may produce a decimal-divide exception (CEE3211S) in places where the original module produced a IGZ0061S message
For reference the full LE runtime message text for these differing exceptions is given below.
CEE3211S The system detected a decimal-divide exception (System Completion Code=0CB).
IGZ0061S Division by zero occurred in program 'program-name' at displacement 'displacement'.
CEE3209S The system detected a fixed-point divide exception (System Completion Code=0C9).

For a CICS application the abend code returned by "CICS ASSIGN ABCODE" can change from '1061' from the original module to 'ASRA' from the ABO generated module.