1 / 45

Computing in COBOL: The Arithmetic Verbs and Intrinsic Functions

Chapter 7. Computing in COBOL: The Arithmetic Verbs and Intrinsic Functions. Chapter Contents. Basic Arithmetic Verbs Options Available with Arithmetic Verbs COMPUTE Statement Signed Numbers in Arithmetic Operations Intrinsic Functions. Basic Arithmetic Verbs.

serge
Download Presentation

Computing in COBOL: The Arithmetic Verbs and Intrinsic Functions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 7 Computing in COBOL: The Arithmetic Verbs and Intrinsic Functions

  2. Chapter Contents • Basic Arithmetic Verbs • Options Available with Arithmetic Verbs • COMPUTE Statement • Signed Numbers in Arithmetic Operations • Intrinsic Functions

  3. Basic Arithmetic Verbs • ADD, SUBTRACT, MULTIPLY, DIVIDE • All require fields operated on to • Have numeric PICTURE clauses • Contain numeric data when statements executed

  4. ADD … TO Statement Format 1 identifier-1 ADD … TO identifier-2 ... literal-1 • identifier-1 or literal-1 added to identifier-2 • Result stored in identifier-2

  5. ADD … TO Examples Assume X, Y and Z are numeric fields X = 5, Y = 3 and Z = 7 ADD StatementResult Add X To Y Y = 8 Add X, 9 To Y Y = 17 Add X, 6, Y To Z Z = 21 • Identifiers preceding TO are unchanged • Value of identifier after TO • Used in ADD operation • Original value replaced with ADD result

  6. ADD … GIVING Statement Format 2 identifier-1 ADD … GIVING identifier-2 ... literal-1 • Identifiers and literals preceding GIVING added together • Result stored in identifier-2

  7. ADD … GIVING Examples Assume X, Y and Z are numeric fields X = 5, Y = 3 and Z = 7 ADD StatementResult Add X, Y Giving Z Z = 8 Add X, 10 Giving Y Y = 15 Add X, 4, Y Giving Z Z = 12 • Identifiers preceding GIVING are unchanged • Value of identifier after GIVING • Original value replaced with ADD result • May be report-item with edit symbols

  8. 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 ADD StatementResult Add X To Y, Z Y = 8, Z = 12 Add X, 6 Giving Y, Z Y = 11, Z = 11

  9. 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 • ADD HOURS-WORKED TO WEEKLY-HOURS • Vs. Giving

  10. SUBTRACT Statement Format 1 identifier-1 SUBTRACT … FROM identifier-2 ... literal-1 • identifier-1 or literal-1 subtracted from identifier-2 • Result stored in identifier-2

  11. SUBTRACT Examples Assume A, B and C are numeric fields A = 6, B = 2 and C = 18 SUBTRACT StatementResult Subtract A From C C = 12 Subtract B, 5 From C C = 11 Subtract B From A, C A = 4, C = 16

  12. SUBTRACT … GIVING Statement Format 2 identifier-1 identifier-2 SUBTRACT … FROM literal-1 literal-2 GIVING identifier-3 ... • identifier-1 or literal-1 subtracted from identifier-2 or literal-2 • Result stored in identifier-3

  13. SUBTRACT … GIVING Examples Assume A, B and C are numeric fields A = 6, B = 2 and C = 18 SUBTRACT StatementResult Subtract B From A Giving C C = 4 Subtract A From 15 Giving C C = 9 Subtract A, 4 From C Giving B B = 8

  14. MULTIPLY Statement Format 1 identifier-1 MULTIPLYBY identifier-2 ... literal-1 • identifier-1 or literal-1 multiplied by identifier-2 • Result stored in identifier-2

  15. MULTIPLY Examples Assume Q, R and S are numeric fields Q = 4, R = 7 and S = 5 MULTIPLY StatementResult Multiply Q By R R = 28 Multiply 10 By S S = 50 Multiply 2 By R, S R = 14, S = 10

  16. MULTIPLY … GIVING Statement identifier-1 identifier-2 MULTIPLYBY literal-1 literal-2 GIVING identifier-3 ... • identifier-1 or literal-1 multiplied by identifier-2 or literal-2 • Result stored in identifier-3 Format 2

  17. MULTIPLY … GIVING Examples Assume Q, R and S are numeric fields Q = 4, R = 7 and S = 5 MULTIPLYStatementResult Multiply Q By R Giving S S = 28 Multiply Q By 3 Giving S S = 12 Multiply 6 By Q Giving R, S R = 24 S = 24

  18. MULTIPLY Statement • Only two operands can be multiplied using the MULTIPLY statement • To obtain product of 3 operands requires two instructions To find Price x Qty x Discount Multiply Price By Qty Giving WS-Amt Multiply Discount By WS-Amt

  19. DIVIDE Statement Format 1 identifier-1 DIVIDEINTO identifier-2 ... literal-1 • identifier-1 or literal-1 divided into identifier-2 • Result stored in identifier-2

  20. DIVIDE Examples Assume X, Y and Z are numeric fields X = 2, Y = 12 and Z = 8 DIVIDEStatementResult Divide X Into Y Y = 6 Divide 3 Into Y Y = 4 Divide 2 Into Y, Z Y = 6, Z = 4

  21. DIVIDE … GIVING Statement Format 2 identifier-1 INTO identifier-2 DIVIDE literal-1 BY literal-2 GIVING identifier-3 ... • identifier-1 or literal-1 divided into or by identifier-2 or literal-2 • Result stored in identifier-3

  22. DIVIDE … GIVING Examples Assume X, Y and Z are numeric fields X = 2, Y = 12 and Z = 8 DIVIDEStatementResult Divide X Into Y Giving Z Z = 6 Divide Y By X Giving Z Z = 6 Divide 16 By Z Giving X, Y X = 2 Y = 2

  23. 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 • Stores quotient 4 in Q and integer remainder 10 in R • What can this be used for??? • Same as MOD

  24. ROUNDED Option • Arithmetic result truncated if room to store all decimal positions not available • Result of 3.89 stored in field with PIC 9V9 as 3^8 • Include ROUNDED to round result to PICTURE specification • Result of 3.89 stored as 3.9 if ROUNDED option used • Its actually adding .5 then truncating

  25. ROUNDED Option Examples 01 Amt1 Pic 9V99 Value 2.25. 01 Amt2 Pic 999. Arithmetic statementResult Value Stored Multiply .3 By Amt1 .675 Amt1 = 0^67 Multiply .3 By Amt1 Rounded .675 Amt1 = 0^68 Divide 150 By 9Giving Amt2 Rounded 16.66… Amt2 = 017

  26. 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

  27. Checking for Overflow • Any arithmetic statement may include one or both size error clauses • ON SIZEERROR statement(s) • Specifies one or more statements to be executed if overflow (size error) occurs • NOT ON SIZEERROR statement(s) • Specifies one or more statements to be executed if overflow (size error) does not occur

  28. 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 • If sum of X and Y too large to store in Z, Display statement executed • If Z large enough for result, Calc-Para is performed • When using one or both clauses, use scope terminator to end arithmetic operation • END-ADD, END-SUBTRACT • END-MULTIPLY, END-DIVIDE

  29. 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

  30. 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

  31. COMPUTE Statement • General arithmetic statement using symbols in place of arithmetic verbs SymbolVerb + ADD - SUBTRACT * MULTIPLY / DIVIDE ** exponentiation

  32. COMPUTE Statement arithmetic-exp-1 COMPUTEidentifier-1 … = literal-1 identifier-2 • Identifier to left of equal sign set to value of arithmetic-expression, literal or identifier on right of equal sign Format

  33. COMPUTE Examples Assume X, Y and Z are numeric fields X = 9, Y = 4 and Z = 12 COMPUTE StatementResult Compute Z = X * Y Z = 36 Compute X = Z - Y + 2 X = 10 Compute X = Y X = 4 Compute Z = Y ** 2 Z = 16

  34. Order of Evaluation • Arithmetic expression may include any combination of symbols +, -, *, / or ** • Order of operations 1. ( ) override rules 1-3, all operations in ( ) performed first 2. ** all exponentiation performed first 3. * or / in order or appearance left to right 4. + or - in order or appearance left to right Same rules apply here as standard math

  35. COMPUTE Examples Assume X, Y and Z are numeric fields X = 6, Y = 18 and Z = 5 COMPUTE StatementResult Compute Z = Y / X + 3 Z = 6 Compute Z = Y / (X + 3) Z = 2 Compute Y = Z + X * 10 Y = 65 Compute Y = Z * X / 10 Y = 3

  36. 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

  37. 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 • We discussed this already

  38. Intrinsic Functions • Built-in procedures to perform particular task like • Find square root of number • Convert letters to uppercase • Get current date • Looks like our compiler handles these because of Lab 2 with the NUMVAL function

  39. Intrinsic Functions Example Find square root of X and place result in Y Compute Y = Function Sqrt(X) • Value of X passed to function called Sqrt • Code in function finds square root of X • Result returned by Sqrt assigned to Y

  40. Intrinsic Functions Example Convert More-Data to uppercase Move Function Upper-Case (More-Data) To Up-More-Data • If More-Data = "Yes", function Upper-Case returns value "YES" • Value "YES" moved to Up-More-Data

  41. 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, of course • Page 283 – 288 has a list of several categorized by type

  42. 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

  43. 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

  44. 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)

  45. Chapter Summary • Intrinsic functions added as COBOL extensions in 1989 • Calendar • Numerical analysis • Statistical • Trigonometric • Financial • Character and String

More Related