## Module 6: Procedure Division

### ON SIZE ERROR option

• SIZE ERROR occurs in arithmetic operation when result value exceeds the size of the PICTURE specification of receiving field
• For example, DATA-A = 60 (PIC 99) and DATA-B = 60 (PIC 99). Now, arithmetic operation “ADD DATA-A TO DATA-B”  will result DATA-B =20 even though the expected value is 120, but due to PIC specification of DATA-B, truncation occurred.
• Such types of truncation resulted due to SIZE error. Such size errors can be handled using ON SIZE ERROR option
• A size error condition exist when result is truncated on either left or right hand side
• If an arithmetic operation is coded with ROUNDED option then a size error occurs only if there is truncation on the left hand side.
• Division by zero can also be handled using ON SIZE ERROR option
• Basic syntax:-

Arithmetic statement [ON SIZE ERROR <imperative-statement>].

• If ON SIZE ERROR option evaluates true, imperative-statement will be executed
• The imperative statement needs to be ended either by period or scope terminator (for example, END-ADD is scope terminator for ADD statement)
• Example:-
In DATA DIVISION,

05 A PIC 99 VALUE 20. 05 B PIC 99 VALUE 50. 05 C PIC 99 VALUE 80. 05 TOTAL PIC 99.

In PROCEDURE DIVISION,

ADD A B C GIVING TOTAL ON SIZER ERROR MOVE ZERO TO TOTAL.

After execution of ADD statement, values in data items will be A=20, B=50, C=80, D =0. D will have zero because the ADD statement will try to store 150 which will results in SIZE ERROR and thus imperative statement coded after ON SIZE ERROR option will set D=0