The END-SUBTRACT statement represents a fundamental component of arithmetic processing and calculation control in COBOL, serving as an explicit scope terminator that clearly defines the boundaries of SUBTRACT statement blocks. This statement embodies modern computational principles by providing unambiguous termination points for subtraction operations, enabling sophisticated arithmetic error handling and precision control, and supporting the development of robust financial and mathematical applications that require precise control over subtraction calculations and overflow conditions.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109IDENTIFICATION DIVISION. PROGRAM-ID. END-SUBTRACT-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 ARITHMETIC-WORK-AREAS. 05 FINANCIAL-CALCULATIONS. 10 ACCOUNT-BALANCE PIC 9(9)V99 VALUE 1500.75. 10 WITHDRAWAL-AMOUNT PIC 9(7)V99 VALUE 250.50. 10 SERVICE-FEE PIC 9(5)V99 VALUE 5.00. 10 OVERDRAFT-FEE PIC 9(5)V99 VALUE 35.00. 10 NEW-BALANCE PIC S9(9)V99. 05 INVENTORY-CALCULATIONS. 10 CURRENT-STOCK PIC 9(7) VALUE 1000. 10 ITEMS-SOLD PIC 9(5) VALUE 150. 10 ITEMS-RETURNED PIC 9(5) VALUE 25. 10 ADJUSTMENTS PIC S9(5) VALUE -10. 10 FINAL-STOCK PIC 9(7). 01 CALCULATION-CONTROLS. 05 OPERATIONS-COUNT PIC 9(5) VALUE 0. 05 SUCCESSFUL-OPERATIONS PIC 9(5) VALUE 0. 05 OVERFLOW-ERRORS PIC 9(3) VALUE 0. 05 SIZE-ERRORS PIC 9(3) VALUE 0. PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-BASIC-SUBTRACTION PERFORM DEMONSTRATE-CONDITIONAL-SUBTRACTION PERFORM DEMONSTRATE-COMPLEX-CALCULATIONS PERFORM DISPLAY-CALCULATION-STATISTICS STOP RUN. DEMONSTRATE-BASIC-SUBTRACTION. DISPLAY 'Demonstrating basic subtraction operations...' *> Simple account balance calculation SUBTRACT WITHDRAWAL-AMOUNT FROM ACCOUNT-BALANCE ON SIZE ERROR DISPLAY 'Size error in withdrawal calculation' ADD 1 TO SIZE-ERRORS NOT ON SIZE ERROR DISPLAY 'New balance after withdrawal: ' ACCOUNT-BALANCE ADD 1 TO SUCCESSFUL-OPERATIONS END-SUBTRACT ADD 1 TO OPERATIONS-COUNT. DEMONSTRATE-CONDITIONAL-SUBTRACTION. DISPLAY 'Demonstrating conditional subtraction operations...' *> Subtract with multiple conditions SUBTRACT SERVICE-FEE FROM ACCOUNT-BALANCE ON SIZE ERROR DISPLAY 'Size error in service fee calculation' ADD 1 TO SIZE-ERRORS NOT ON SIZE ERROR DISPLAY 'Balance after service fee: ' ACCOUNT-BALANCE *> Check for overdraft IF ACCOUNT-BALANCE < 0 SUBTRACT OVERDRAFT-FEE FROM ACCOUNT-BALANCE ON SIZE ERROR DISPLAY 'Size error in overdraft fee' ADD 1 TO SIZE-ERRORS NOT ON SIZE ERROR DISPLAY 'Overdraft fee applied: ' ACCOUNT-BALANCE ADD 1 TO SUCCESSFUL-OPERATIONS END-SUBTRACT END-IF ADD 1 TO SUCCESSFUL-OPERATIONS END-SUBTRACT ADD 1 TO OPERATIONS-COUNT. DEMONSTRATE-COMPLEX-CALCULATIONS. DISPLAY 'Demonstrating complex calculations...' *> Multi-step inventory calculation SUBTRACT ITEMS-SOLD FROM CURRENT-STOCK ON SIZE ERROR DISPLAY 'Size error in stock reduction' ADD 1 TO SIZE-ERRORS NOT ON SIZE ERROR DISPLAY 'Stock after sales: ' CURRENT-STOCK *> Add back returns (subtract negative) SUBTRACT ITEMS-RETURNED FROM CURRENT-STOCK ON SIZE ERROR DISPLAY 'Size error in returns processing' ADD 1 TO SIZE-ERRORS NOT ON SIZE ERROR DISPLAY 'Stock after returns: ' CURRENT-STOCK ADD 1 TO SUCCESSFUL-OPERATIONS END-SUBTRACT ADD 1 TO SUCCESSFUL-OPERATIONS END-SUBTRACT ADD 1 TO OPERATIONS-COUNT. DISPLAY-CALCULATION-STATISTICS. DISPLAY 'Calculation Statistics:' DISPLAY 'Total operations: ' OPERATIONS-COUNT DISPLAY 'Successful operations: ' SUCCESSFUL-OPERATIONS DISPLAY 'Size errors: ' SIZE-ERRORS DISPLAY 'Final account balance: ' ACCOUNT-BALANCE DISPLAY 'Final stock level: ' CURRENT-STOCK.