Created On:  25 July 2012

Problem:

The calculation is coded as follows:

COMPUTE BEN-ER-PER-COMMUTED ROUNDED =

(BEN-ER-CASH-LSUM-COMMUTED / COMM-FACT) /

BEN-ER-FULL-ANNUAL * 100

The values loaded into COMM-FACT and BEN-ER-FULL-ANNUAL are zero.

If the value inserted into BEN-ER-CASH-LSUM-COMMUTED is 63, the result is 300.00

It would seem as though where a value is loaded into the last integer digit the result is returned with a value other than zero.

Resolution:

In normal circumstances you cannot divide by zero and the SIZE ERROR option should be used.

However, AcuCobol has the following configuration file setting A_CHECKDIV.

This variable allows you to specify an alternate runtime response to a divide by zero condition when the statement does not include a SIZE ERROR clause.

In COBOL, a division by zero produces a size error condition. The SIZE ERROR clause allows the programmer to specify actions to take when this condition occurs.
 
If there is no SIZE ERROR clause, by default in ACUCOBOL-GT the results are undefined. You can use the A_CHECKDIV configuration variable to specify alternate handling.

Incident #2582581