Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Chapter 5 – The Procedure Division File handling statements –OPEN statement Initiates processing for a file Input Output Each file opened must have been.

Similar presentations


Presentation on theme: "1 Chapter 5 – The Procedure Division File handling statements –OPEN statement Initiates processing for a file Input Output Each file opened must have been."— Presentation transcript:

1 1 Chapter 5 – The Procedure Division File handling statements –OPEN statement Initiates processing for a file Input Output Each file opened must have been referenced in the select statement in the environment division And in a corresponding FD in the data division –CLOSE statement Use when access to a file is no longer necessary Files should be closed before processing terminates Usually immediately before the STOP command

2 2 –READ statement Transfers data from an open file into memory AT END clause –If file is at the end control transfer to this clause READ file-name AT END statement END-READ Primimg the READ Correct positioning

3 3 –WRITE Transfers data from memory to an output device –Printer, Open File ADVANCING (AFTER & BEFORE) –For printer usage, printing blank lines –LINES and PAGE Contains a Record name –01 Entry in the File Section of the Data Division MOVE SPACES TO OUT-LABEL-REC. MOVE IN-EMPLOYEE-NAME TO WS-EMPLOYEE-NAME. MOVE WS-NAME-LINE TO OUT-LABEL-REC. WRITE OUT-LABEL-REC.

4 4 Data manipulation and program statements –DISPLAY statement –STOP RUN statement Terminates the program Should not be more than one in your program Typically not the last statement –MOVE statement Copies data from one location to another Syntax –MOVE 15 TO NUM-1 NUM-2 NUM-3. Restrictions on use Rules for use Group Moves

5 5 Table 5.1 Rules of the MOVE Statement (Elementary Data Items) SENDING FIELDRECEIVING FIELD Alphabetic Alphanumeric Numeric Numeric Edited ALPHABETIC ALPHANUMERIC NUMERIC NUMERIC EDITED Valid Invalid Valid Integers Only Valid Invalid Valid Invalid Valid Invalid

6 6 Table 5.2 Illustration of the MOVE statement: Alphanumeric Sending Field to Alphanumeric Receiving Field SENDING FIELDRECEIVING FIELD PICTURECONTENTSPICTURE CONTENTS (a) X(5)A B C D E X(5) A B C D E (b) X(5)A B C D E X(4) A B C D (c) X(5)A B C D E X(6) A B C D E F

7 7 Table 5.3 Illustration of the MOVE statement: Numeric Sending Field to Numeric Receiving Field SENDING FIELDRECEIVING FIELD PICTURECONTENTSPICTURE CONTENTS (a) 9(5)1 2 3 4 5 9(5) 1 2 3 4 5 (b) 9(5)1 2 3 4 5 9(4) 2 3 4 5 (c) 9(5)1 2 3 4 5 9(6) 0 1 2 3 4 5 (d) 9(3)V991 2 3 v 4 5 9(3) 1 2 3 (e) 9(3)V991 2 3 v 4 5 9V99 3 v 4 5 (f) 9(3)1 2 3 9(3)V99 1 2 3 v 0 0

8 8 –PERFORM statement Transfers control to a procedure (paragraph) Returns to the next line of code after it was called Use of UNTIL –Checks before it transfers control –IF statement ELSE clause END-IF Use of indentation

9 9 CONDITION? STATEMENT2 STATEMENT1 STATEMENT3 CONDITION? STATEMENT1 STATEMENT2 Figure 5.2 The IF Statement (a) With ELSE Option (b) Without ELSE Option FALSE TRUE

10 10 Figure 5.3 The ELSE Clause/II A=B MOVE ZERO TO C MOVE 1 TO C WRITE DETAIL-LINE MOVE ZERO TO D MOVE 1 TO D FALSETRUE IF A = B MOVE 1 TO C MOVE 1 TO D ELSE MOVE ZERO TO C MOVE ZERO TO D END-IF. WRITE DETAIL-LINE. (a) IF/ELSE Flowchart(b) COBOL Code

11 11 –EVALUATE statement Similar to a case statement EVALUATE TRUE WHEN STU-CREDITS <= 6 MOVE 25 TO IND-ACTIVITY-FEE WHEN STU-CREDITS > 6 AND STU-CREDITS <=12 MOVE 50 TO IND-ACTIVITY-FEE WHEN STU-CREDITS > 12 MOVE 75 TO IND-ACTIVITY-FEE END-EVALUATE

12 12 Arithmetic Verbs ROUNDED clause –Rounds the answer an arithmetic statement –If no rounded clause is used it truncates –ADD A B GIVING C ROUNDED SIZE ERROR clause –Creates an warning when result of a calculation is to big for the designated field –You can use this to compensate for larger numbers. –ON SIZE ERROR PERFORM …

13 13 Table 5.4 The ROUNDED Clause DATA NAMEA BC PICTURE9V999V999V9 Value before execution 123 456(immaterial) Value after execution of: ADD A B GIVING C 123 456 57 ADD A B GIVING C ROUNDED 123 456 58

14 14 The COMPUTE statement –Combines multiple arithmetic operations –Ex.) COMPUTE A = a * b + c –+,-,*,/,** –Order: Parentheses Exponentiation Multiplication, division Addition, subtraction

15 15 Table 5.5 The COMPUTE Instruction DATA NAMEA BC COMMENTS Value before execution 2 3 10 Initial Values Value after execution of: COMPUTE C = A + B. 2 3 5 Simple addition COMPUTE C = A + B * 2. 2 3 8 Multiplication before addition COMPUTE C = (A + B) * 2. 2 3 10 Parenthesis evaluated first COMPUTE C = A ** B. 2 3 8 algebraically, c = a b COMPUTE C = B ** A. 2 3 9 algebraically, c = b a

16 16 Table 5.6 The COMPUTE Instruction (continued) ALGEBRAIC EXPRESSION COBOL COMPUTE x = a + bCOMPUTE X = A + B. x = a + b COMPUTE X = (A + B) / 2. 2 x = (a + b)cCOMPUTE X = (A + B) * C / 2. 2 x = a + bCOMPUTE X = (A + B) / (2 * C). 2c x =  aCOMPUTE X = A **.5. x = a  + b  COMPUTE X = (A ** 2 + B ** 2) / C ** 2 c 2

17 17 The ADD statement The SUBTRACT statement The MULTIPLY statement The DIVIDE statement Assumed decimal point The COMPUTE statement for multiple operations

18 18 Table 5.7 The ADD Instruction DATA NAMEA BC Value before execution 5 10 30 Value after execution of: ADD A TO C 5 10 35 ADD A B TO C 5 10 45 ADD A TO B GIVING C 5 10 15 ADD A 18 B GIVING C 5 10 33 ADD A 18 B TO C 5 10 63 ADD 1 TO B C 5 11 31

19 19 Table 5.8 The SUBTRACT Instruction DATA NAMEA BCD Value before execution 5 10 30 100 Value after execution of: SUBTRACT A FROM C 5 10 25 100 SUBTRACT A B FROM C 5 10 15 100 SUBTRACT A B FROM C GIVING D 5 10 30 15 SUBTRACT 10 FROM C D 5 10 20 90

20 20 Table 5.9 The MULTIPLY Instruction DATA NAMEA BC Value before execution 5 10 30 Value after execution of: MULTIPLY B BY A GIVING C 5 10 50 MULTIPLY A BY B GIVING C 5 10 50 MULTIPLY A BY B 5 50 15 MULTIPLY B BY A 50 10 30 MULTIPLY A BY 3 GIVING B C 5 15 15

21 21 Table 5.10 The DIVIDE Instruction DATA NAMEA BC Value before execution 5 10 30 Value after execution of: DIVIDE 2 INTO B. 5 5 30 DIVIDE 2 INTO B GIVING C. 5 10 5 DIVIDE B BY 5 GIVING A 2 10 30 DIVIDE A INTO B C 5 2 6 DIVIDE A INTO B GIVING C 5 10 2 DIVIDE 3 INTO A GIVING B REMAINDER C 5 1 2

22 22 DATA NAMEA BC PICTURE 9999V999V99 Value before execution 12 345 4712 Value after execution of: ADD B TO A 46 345 4712 ADD A TO B 12 465 4712 ADD B TO C 12 345 8162 ADD C TO B 12 816 4712 ADD C TO A 59 345 4712 ADD A TO C 12 465 5912 Table 5.11 Arithmetic on Fields with Assumed Decimal Points

23 23 Use the COMPUTE Statement for Multiple Arithmetic Operations MULTIPLY B BY B GIVING B-SQUARED. MULTIPLY 4 BY A GIVING FOUR-A. MULTIPLY FOUR-A BY C GIVING FOUR-A-C. SUBTRACT FOUR-A-C FROM B-SQUARED GIVING RESULT-1. COMPUTE RESULT-2 = RESULT-1 **.5. SUBTRACT B FROM RESULT-2 GIVING NUMERATOR. MULTIPLY 2 BY A GIVING DENOMINATOR. DIVIDE NUMERATOR BY DENOMINATOR GIVING X. COMPUTE X = (-B + (B ** 2 - ( 4 * A * C)) **.5) / ( 2 * A). Both sets of code apply to the quadratic formula X = -B +  B  -4AC 2A Poor Code Improved Code PROGRAMMING TIP

24 24 Problems ABCD 48122 ADD 1 TO D B ADD A B C GIVING C MULTIPLY A BY B C COMPUTE D=A+B/2*D COMPUTE D=(A+B)/(2*D)

25 25 Problems X = a + b + c X = a 2 + b 2 + c 2 F = p(1+I) n

26 26 Problems Sending fieldReceiving field X(4) HOPEX3 X(4) HOPEX5 9(4) 67899(5) 999V9 67899(3)V99

27 27 Figure 5.4a Developing the Procedure Division PREPARE TUITION REPORT WRITE HEADING LINE READ STUDENT FILE PROCESS STUDENT RECORD WRITE UNIVERSITY TOTALS COMPUTE TUITION COMPUTE UNION FEE COMPUTE ACTIVITY FEE COMPUTE SCHOLARSHIP COMPUTE INDIVIDUAL BILL INCREMENT UNIVERSITY TOTALS WRITE DETAIL LINE READ STUDENT FILE (a) Hierarchy Chart

28 28 Open files Write heading line(s) Read STUDENT-FILE at end indicate no more data DO WHILE data remains Compute tuition = 200 * credits IF union member Union fee = $25 ELSE Union fee = $0 ENDIF DO CASE CASE credits 6 and = 12 Activity fee = 75 END CASE IF gpa > 2.5 Scholarship = Scholarship amount ELSE (no scholarship) Scholarship = 0 ENDIF Compute Bill = Tuition + Union fee + Activity fee - Scholarship Increment university totals Write detail line Read STUDENT-FILE at end indicate no more data ENDDO Write university totals Close files Stop run (b) Detailed Pseudocode Figure 5.4b Developing the Procedure Division

29 29 SMITHJB15Y0000230 JAMESHR15 0500245 BAKERSR09 0500350 PART-TIMERJR03Y0000300 JONESPL15Y0000280 HEAVYWORKERHM18 0000200 LEEBL18 0000335 CLARKJC06 0000310 GROSSMANSE07 0000215 FRANKELLF10 0000350 BENWAYCT03 0250395 KERBELNB04 0000100 STUDENT NAME CREDITS TUITION UNION FEE ACT FEE SCHOLARSHIP TOTAL BILL SMITHJB 15 003000 025 075 00000 003100 JAMESHR 15 003000 000 075 00000 003075 BAKERSR 09 001800 000 050 00500 001350 PART-TIMERJR 03 000600 025 025 00000 000650 JONESPL 15 003000 025 075 00000 003100 HEAVYWORKERHM 18 003600 000 075 00000 003675 LEEBL 18 003600 000 075 00000 003675 CLARKJC 06 001200 000 025 00000 001225 GROSSMANSE 07 001400 000 050 00000 001450 FRANKELLF 10 002000 000 050 00000 002050 BENWAYCT 03 000600 000 025 00250 000375 KERBELNB 04 000800 000 025 00000 000825 ------- ---- ----- ------ ------- UNIVERSITY TOTALS 024600 0075 0625 000750 024550 (a) Test Data (b) Output Figure 5.6 Test Data and Output

30 30 Figure 5.7 Skeleton Outline of a COBOL Program IDENTIFICATION DIVISION. PROGRAM-ID.PROGNAME. AUTHOR.JOHN DOE. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INPUT-FILE ASSIGN TO ‘A:\CHAPTR05\TUITION.DAT’ ORGANIZATION IS LINE SEQUENTIAL. SELECT PRINT-FILE ASSIGN TO PRINTER. DATA DIVISION. FILE SECTION. FD INPUT-FILE RECORD CONTAINS 80 CHARACTERS. 01 INPUT-RECORDPIC X(80). FD PRINT-FILE RECORD CONTAINS 132 CHARACTERS. 01 PRINT-LINEPIC X(132). WORKING-STORAGE SECTION. 01 DATA-REMAINS-SWITCHPIC X(2) VALUE SPACES. 01 HEADING-LINE... 01 DETAIL-LINE... 01 TOTAL-LINE... SELECT statements for input and output files Controls performed paragraph

31 31 Figure 5.7 Skeleton Outline of a COBOL Program(cont.) PROCEDURE DIVISION. MAINLINE. OPEN INPUT INPUT-FILE OUTPUT PRINT-FILE. READ INPUT-FILE AT END MOVE ‘NO’ TO DATA-REMAINS-SWITCH END-READ. PERFORM PROCESS-RECORDS UNTIL DATA-REMAINS-SWITCH = ‘NO’. CLOSE INPUT-FILE PRINT-FILE. STOP RUN. PROCESS-RECORDS... READ INPUT-FILE AT END MOVE ‘NO’ TO DATA-REMAINS-SWITCH END-READ. Housekeeping consists of opening files and the initial READ Termination includes closing files and STOP RUN. Last line of performed paragraph is a second READ

32 32 Tuition Billing Program


Download ppt "1 Chapter 5 – The Procedure Division File handling statements –OPEN statement Initiates processing for a file Input Output Each file opened must have been."

Similar presentations


Ads by Google