The GIVING clause represents a fundamental result storage mechanism within COBOL arithmetic operations, serving as the primary specification for defining where calculation results should be stored without modifying the original operands. This clause embodies the principles of non-destructive arithmetic by providing clean result assignment capabilities, enabling sophisticated mathematical processing patterns, and supporting efficient data preservation while maintaining operational clarity and ensuring predictable value management in enterprise applications that require precise calculation control, financial computations, and business logic implementation with reliable result handling and data integrity preservation.
123456ADD operand1 TO operand2 GIVING result-field SUBTRACT operand1 FROM operand2 GIVING result-field MULTIPLY operand1 BY operand2 GIVING result-field DIVIDE operand1 BY operand2 GIVING result-field DIVIDE operand1 INTO operand2 GIVING result-field DIVIDE operand1 BY operand2 GIVING quotient REMAINDER remainder-field
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051IDENTIFICATION DIVISION. PROGRAM-ID. GIVING-EXAMPLES. DATA DIVISION. WORKING-STORAGE SECTION. 01 ARITHMETIC-VARIABLES. 05 NUM1 PIC 9(5)V99 VALUE 123.45. 05 NUM2 PIC 9(5)V99 VALUE 67.89. 05 NUM3 PIC 9(5)V99 VALUE 10.5. 05 RESULT PIC 9(7)V99. 05 QUOTIENT PIC 9(5)V99. 05 REMAINDER PIC 9(3)V99. 01 FINANCIAL-CALCULATIONS. 05 PRINCIPAL PIC 9(7)V99 VALUE 10000.00. 05 INTEREST-RATE PIC 9V9999 VALUE 0.0525. 05 TIME-YEARS PIC 9(2) VALUE 5. 05 SIMPLE-INTEREST PIC 9(7)V99. 05 COMPOUND-AMOUNT PIC 9(9)V99. PROCEDURE DIVISION. MAIN-PROCESSING. *> Basic arithmetic with GIVING ADD NUM1 TO NUM2 GIVING RESULT DISPLAY 'Addition result: ' RESULT DISPLAY 'Original NUM1: ' NUM1 ' NUM2: ' NUM2 SUBTRACT NUM2 FROM NUM1 GIVING RESULT DISPLAY 'Subtraction result: ' RESULT MULTIPLY NUM1 BY NUM3 GIVING RESULT DISPLAY 'Multiplication result: ' RESULT DIVIDE NUM1 BY NUM3 GIVING QUOTIENT REMAINDER REMAINDER DISPLAY 'Division - Quotient: ' QUOTIENT ' Remainder: ' REMAINDER *> Financial calculations MULTIPLY PRINCIPAL BY INTEREST-RATE GIVING SIMPLE-INTEREST MULTIPLY SIMPLE-INTEREST BY TIME-YEARS GIVING SIMPLE-INTEREST DISPLAY 'Simple Interest: $' SIMPLE-INTEREST *> Compound interest calculation ADD 1 TO INTEREST-RATE GIVING COMPOUND-AMOUNT MULTIPLY COMPOUND-AMOUNT BY COMPOUND-AMOUNT GIVING COMPOUND-AMOUNT MULTIPLY COMPOUND-AMOUNT BY COMPOUND-AMOUNT GIVING COMPOUND-AMOUNT MULTIPLY COMPOUND-AMOUNT BY COMPOUND-AMOUNT GIVING COMPOUND-AMOUNT MULTIPLY COMPOUND-AMOUNT BY COMPOUND-AMOUNT GIVING COMPOUND-AMOUNT MULTIPLY PRINCIPAL BY COMPOUND-AMOUNT GIVING COMPOUND-AMOUNT DISPLAY 'Compound Amount: $' COMPOUND-AMOUNT STOP RUN.
123456789101112131415161718192021222301 PAYROLL-DATA. 05 HOURS-WORKED PIC 9(3)V9 VALUE 42.5. 05 HOURLY-RATE PIC 9(3)V99 VALUE 25.50. 05 OVERTIME-RATE PIC 9V99 VALUE 1.5. 05 REGULAR-HOURS PIC 9(2) VALUE 40. 01 PAYROLL-RESULTS. 05 REGULAR-PAY PIC 9(5)V99. 05 OVERTIME-HOURS PIC 9(2)V9. 05 OVERTIME-PAY PIC 9(5)V99. 05 GROSS-PAY PIC 9(6)V99. PROCEDURE DIVISION. *> Calculate regular pay MULTIPLY REGULAR-HOURS BY HOURLY-RATE GIVING REGULAR-PAY *> Calculate overtime SUBTRACT REGULAR-HOURS FROM HOURS-WORKED GIVING OVERTIME-HOURS MULTIPLY HOURLY-RATE BY OVERTIME-RATE GIVING OVERTIME-PAY MULTIPLY OVERTIME-HOURS BY OVERTIME-PAY GIVING OVERTIME-PAY *> Calculate gross pay ADD REGULAR-PAY TO OVERTIME-PAY GIVING GROSS-PAY.
1234567891011121314151617181920212201 SALES-DATA. 05 SALES-AMOUNT PIC 9(7)V99. 05 BASE-COMMISSION PIC 9V9999 VALUE 0.05. 05 BONUS-THRESHOLD PIC 9(6) VALUE 50000. 05 BONUS-RATE PIC 9V9999 VALUE 0.02. 01 COMMISSION-RESULTS. 05 BASE-COMMISSION-AMT PIC 9(5)V99. 05 BONUS-COMMISSION PIC 9(5)V99. 05 TOTAL-COMMISSION PIC 9(6)V99. PROCEDURE DIVISION. MULTIPLY SALES-AMOUNT BY BASE-COMMISSION GIVING BASE-COMMISSION-AMT IF SALES-AMOUNT > BONUS-THRESHOLD SUBTRACT BONUS-THRESHOLD FROM SALES-AMOUNT GIVING BONUS-COMMISSION MULTIPLY BONUS-COMMISSION BY BONUS-RATE GIVING BONUS-COMMISSION ELSE MOVE ZERO TO BONUS-COMMISSION END-IF ADD BASE-COMMISSION-AMT TO BONUS-COMMISSION GIVING TOTAL-COMMISSION.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-GIVING-PATTERNS. DATA DIVISION. WORKING-STORAGE SECTION. 01 LOAN-CALCULATIONS. 05 LOAN-AMOUNT PIC 9(8)V99. 05 ANNUAL-RATE PIC 9V9999. 05 LOAN-TERM-MONTHS PIC 9(3). 05 MONTHLY-RATE PIC 9V999999. 05 MONTHLY-PAYMENT PIC 9(6)V99. 05 TOTAL-PAYMENTS PIC 9(8)V99. 05 TOTAL-INTEREST PIC 9(7)V99. 01 STATISTICAL-ANALYSIS. 05 DATA-POINTS OCCURS 10 TIMES PIC 9(5)V99. 05 SAMPLE-SIZE PIC 9(2) VALUE 10. 05 SUM-VALUES PIC 9(7)V99. 05 MEAN-VALUE PIC 9(5)V99. 05 VARIANCE PIC 9(7)V99. 05 STANDARD-DEVIATION PIC 9(5)V99. 01 WORKING-VARIABLES. 05 TEMP-RESULT PIC 9(9)V99. 05 COUNTER PIC 9(2). 05 DIFFERENCE PIC S9(5)V99. 05 SQUARED-DIFF PIC 9(7)V99. PROCEDURE DIVISION. ADVANCED-CALCULATIONS. *> Loan payment calculation DIVIDE ANNUAL-RATE BY 12 GIVING MONTHLY-RATE *> Calculate monthly payment using approximation ADD 1 TO MONTHLY-RATE GIVING TEMP-RESULT MULTIPLY TEMP-RESULT BY TEMP-RESULT GIVING TEMP-RESULT MULTIPLY TEMP-RESULT BY TEMP-RESULT GIVING TEMP-RESULT MULTIPLY LOAN-AMOUNT BY MONTHLY-RATE GIVING MONTHLY-PAYMENT DIVIDE MONTHLY-PAYMENT BY (1 - (1 / TEMP-RESULT)) GIVING MONTHLY-PAYMENT MULTIPLY MONTHLY-PAYMENT BY LOAN-TERM-MONTHS GIVING TOTAL-PAYMENTS SUBTRACT LOAN-AMOUNT FROM TOTAL-PAYMENTS GIVING TOTAL-INTEREST *> Statistical calculations MOVE ZERO TO SUM-VALUES PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > SAMPLE-SIZE ADD DATA-POINTS(COUNTER) TO SUM-VALUES GIVING SUM-VALUES END-PERFORM DIVIDE SUM-VALUES BY SAMPLE-SIZE GIVING MEAN-VALUE *> Calculate variance MOVE ZERO TO VARIANCE PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > SAMPLE-SIZE SUBTRACT MEAN-VALUE FROM DATA-POINTS(COUNTER) GIVING DIFFERENCE MULTIPLY DIFFERENCE BY DIFFERENCE GIVING SQUARED-DIFF ADD SQUARED-DIFF TO VARIANCE GIVING VARIANCE END-PERFORM DIVIDE VARIANCE BY SAMPLE-SIZE GIVING VARIANCE STOP RUN.
What's the correct syntax to multiply two numbers and store the result?
Answer: MULTIPLY number1 BY number2 GIVING result-variable
How does GIVING differ from TO in arithmetic operations?
Answer: GIVING stores the result in a separate variable without modifying operands, while TO modifies the receiving field by adding the result to its current value.
How do you capture both quotient and remainder in division?
Answer: DIVIDE dividend BY divisor GIVING quotient-variable REMAINDER remainder-variable
12345678901 INVOICE-CALC. 05 SUBTOTAL PIC 9(6)V99. 05 TAX-RATE PIC 9V9999 VALUE 0.0825. 05 TAX-AMOUNT PIC 9(5)V99. 05 TOTAL-AMOUNT PIC 9(7)V99. PROCEDURE DIVISION. MULTIPLY SUBTOTAL BY TAX-RATE GIVING TAX-AMOUNT ADD SUBTOTAL TO TAX-AMOUNT GIVING TOTAL-AMOUNT.
12345678901 STATS-DATA. 05 VALUE-SUM PIC 9(8)V99. 05 VALUE-COUNT PIC 9(5). 05 AVERAGE PIC 9(5)V99. 05 PERCENTAGE PIC 9(3)V99. PROCEDURE DIVISION. DIVIDE VALUE-SUM BY VALUE-COUNT GIVING AVERAGE MULTIPLY AVERAGE BY 100 GIVING PERCENTAGE.