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.