Structured COBOL Programming: Nancy Stern Robert A. Stern James P. Ley
Structured COBOL Programming: Nancy Stern Robert A. Stern James P. Ley
Nancy Stern
Hofstra University
Robert A. Stern
Nassau Community College
James P. Ley
University of Wisconsin-Stout
7-2
Chapter Objectives
To familiarize you with
• Ways in which arithmetic may be
performed in COBOL
• Formats and options available with
arithmetic verbs
7-3
Chapter Contents
• Basic Arithmetic Verbs
• Options Available with Arithmetic Verbs
• COMPUTE Statement
• Signed Numbers in Arithmetic
Operations
• Intrinsic Functions
7-4
Basic Arithmetic Verbs
• ADD, SUBTRACT, MULTIPLY, DIVIDE
• All require fields operated on to
– Have numeric PICTURE clauses
– Contain numeric data when statements
executed
7-5
ADD … TO Statement
Format 1
identifier-1
ADD … TO identifier-2 ...
literal-1
7-6
ADD … TO Examples
Assume X, Y and Z are numeric fields
X = 5, Y = 3 and Z = 7
7-7
ADD … TO Statement
• Identifiers preceding TO are unchanged
• Value of identifier after TO
– Used in ADD operation
– Original value replaced with ADD result
7-8
ADD … GIVING Statement
Format 2
identifier-1
ADD … GIVING identifier-2 ...
literal-1
7-9
ADD … GIVING Examples
Assume X, Y and Z are numeric fields
X = 5, Y = 3 and Z = 7
7-10
ADD … GIVING Statement
• Identifiers preceding GIVING are
unchanged
• Value of identifier after GIVING
– Not part of ADD operation
– Original value replaced with ADD result
– May be report-item with edit symbols
7-11
ADD … GIVING Statement
• TO may be included before last
identifier or literal preceding GIVING
• For example: Add X, 4 To Y Giving Z
– Adds values of X, 4 and Y together
– Stores result in Z
7-12
ADD Statement
• Comma followed by one space may be
used to separate operands
• Result of ADD always placed in field(s)
after TO or GIVING
• Result field must be data-name, not a
literal
7-13
Producing More Than One Sum
• Several ADD operations can be done in
single statement
• Assume X, Y and Z are numeric fields
X = 5, Y = 3 and Z = 7
7-14
ADD … TO vs ADD … GIVING
• Use ADD … TO when original contents
of result operand
– Need to be included in operation
– But are not needed after operation
• Use ADD … GIVING when
– Original contents of all operands except
result field are to be retained
7-15
SUBTRACT Statement
Format 1
identifier-1
SUBTRACT … FROM identifier-2 ...
literal-1
7-16
SUBTRACT Examples
Assume A, B and C are numeric fields
A = 6, B = 2 and C = 18
7-17
SUBTRACT Statement Rules
• All identifiers and literals must be
numeric
• Data-name, not a literal, must follow
FROM
• All fields, literals preceding FROM
added together
• Sum subtracted from field after FROM
• Result stored in field after FROM
7-18
SUBTRACT … GIVING Statement
Format 2
identifier-1 identifier-2
SUBTRACT … FROM
literal-1 literal-2
GIVING identifier-3 ...
7-20
SUBTRACT … GIVING Rules
• All identifiers, literals before FROM
must be numeric
• GIVING must be followed by data-name
– May be numeric or report-item
• All fields, literals preceding FROM
added together
• Sum subtracted from field after FROM
• Result stored in field after GIVING
7-21
MULTIPLY Statement
Format 1
identifier-1
MULTIPLY BY identifier-2 ...
literal-1
7-22
MULTIPLY Examples
Assume Q, R and S are numeric fields
Q = 4, R = 7 and S = 5
7-23
MULTIPLY … GIVING Statement
Format 2
identifier-1 identifier-2
MULTIPLY BY
literal-1 literal-2
GIVING identifier-3 ...
7-25
MULTIPLY Statement
• Only two operands can be multiplied
• To obtain product of 3 operands
requires two instructions
identifier-1
DIVIDE INTO identifier-2 ...
literal-1
7-27
DIVIDE Examples
Assume X, Y and Z are numeric fields
X = 2, Y = 12 and Z = 8
7-28
DIVIDE … GIVING Statement
Format 2
7-30
REMAINDER Clause
• Optional clause with DIVIDE used to
store remainder of division
• Assume Q and R have PICTUREs of 99
Divide 70 By 15
Giving Q Remainder R
7-32
ROUNDED Option
Examples
7-33
Overflow or Size Error
• Occurs when result value too large to
be stored in result field
• Result of this ADD statement is 1,075
Add 350 To 725 Giving Num
• If Num has PICTURE of 999, only 3
digits can be stored
• High-order digits truncated so 075
stored in Num
7-34
Checking for Overflow
• Any arithmetic statement may include
one or both size error clauses
• ON SIZE ERROR statement(s)
– Specifies one or more statements to be
executed if overflow (size error) occurs
• NOT ON SIZE ERROR statement(s)
– Specifies one or more statements to be
executed if overflow (size error) does not
occur
7-35
SIZE ERROR Clause Example
Add X To Y Giving Z
On Size Error Display ' Result too large'
Not On Size Error Perform Calc-Para
End-Add
7-37
Size of Receiving Fields
• Ensure receiving field has PICTURE large
enough to store result
• Addition - define resultant field one
position larger than largest field added
• Subtraction - define resultant field as large
as number being subtracted from
– Assumes positive numbers
– Assumes smaller subtracted from larger
number
7-38
Size of Receiving Fields
• Multiplication - define resultant field
equal to sum of lengths of operands
begin multiplied
• Division - define resultant field equal to
sum of number of digits in divisor and
dividend
7-39
COMPUTE Statement
• General arithmetic statement using
symbols in place of arithmetic verbs
Symbol Verb
+ ADD
- SUBTRACT
* MULTIPLY
/ DIVIDE
** exponentiation
7-40
COMPUTE Statement
Format
arithmetic-exp-1
COMPUTE identifier-1 … = literal-1
identifier-2
7-41
COMPUTE Examples
Assume X, Y and Z are numeric fields
X = 9, Y = 4 and Z = 12
7-42
Order of Evaluation
• Arithmetic expression may include any
combination of symbols +, -, *, / or **
• Order of operations
1. ** all exponentiation performed first
2. * or / in order or appearance left to right
3. + or - in order or appearance left to right
4. () override rules 1-3, all operations
in ( ) performed first
7-43
COMPUTE Examples
Assume X, Y and Z are numeric fields
X = 6, Y = 18 and Z = 5
7-44
COMPUTE Statement
• COMPUTE can include same optional
clauses used with other arithmetic verbs
• ROUNDED follows result field (identifier
preceding equal sign)
• If ON SIZE ERROR or NOT ON SIZE
ERROR clauses used, include scope
terminator END-COMPUTE
7-45
Signed Numbers
• Use S in PIC clause of result field if
– Numbers used in calculation may be
negative
– Calculation may produce negative results
• PIC clause without S assumed to be
unsigned
– If negative result stored in unsigned field,
sign not retained
7-46
Intrinsic Functions
• Built-in procedures to perform particular
task like
– Find square root of number
– Convert letters to uppercase
– Get current date
• Approved as extensions to COBOL
standard in 1989
• Now included in many compilers
7-47
Intrinsic Functions
Example
7-48
Intrinsic Functions
Example
7-50
Intrinsic Functions
• Output of function - result returned after
function performs its task
• Function returning alphanumeric result
used in statements using alphanumeric
data-items
• Function returning numeric result can
be used only in arithmetic expressions
7-51
COBOL 2002+ Changes
• Spaces around arithmetic operators will
no longer be required
• COMPUTE statement will yield same
results on all compilers
– Will make precision or number of decimal
places in each intermediate calculation
fixed
7-52
Chapter Summary
• ADD, SUBTRACT, MULTIPLY, and
DIVIDE verbs
– format without GIVING
• Receiving field is part of arithmetic
• May not be report-item
– with GIVING format
• Receiving field is not part of arithmetic
• May be report-item
7-53
Chapter Summary
• COMPUTE used for any combination of
arithmetic operations
• Order of evaluation of operators
1. **
2. * or / in sequence left to right
3. + or - in sequence left to right
4. ( ) override normal hierarchy rules
7-54
Chapter Summary
• ROUNDED can follow receiving field in
any arithmetic verb
• ON SIZE ERROR, NOT ON SIZE
ERROR
– Can be used with any arithmetic verb
– Include scope terminator (e.g., END-ADD)
7-55
Chapter Summary
• Intrinsic functions added as COBOL
extensions in 1989
– Calendar
– Numerical analysis
– Statistical
– Trigonometric
– Financial
– Character and String
7-56
Copyright © 2003 John Wiley & Sons, Inc. All rights reserved.
Reproduction or translation of this work beyond that permitted in Section
117 of the 1976 United States Copyright Act without the express written
permission of the copyright owner is unlawful. Request for further
information should be addressed to the Permissions Department, John
Wiley & Sons, Inc. The purchaser may make back-up copies for his/her
own use only and not for distribution or resale. The Publisher assumes no
responsibility for errors, omissions, or damages, caused by the use of these
programs or from the use of the information contained herein.
7-57