Chapter 5 The Procedure Division File handling statements

  • Slides: 32
Download presentation
Chapter 5 – The Procedure Division • File handling statements – OPEN statement •

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 1

– READ statement • Transfers data from an open file into memory • AT

– 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 2

– WRITE • Transfers data from memory to an output device – Printer, Open

– 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. 3

 • Data manipulation and program statements – DISPLAY statement – STOP RUN statement

• 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 4

Table 5. 1 Rules of the MOVE Statement (Elementary Data Items) SENDING FIELD RECEIVING

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

Table 5. 2 Illustration of the MOVE statement: Alphanumeric Sending Field to Alphanumeric Receiving

Table 5. 2 Illustration of the MOVE statement: Alphanumeric Sending Field to Alphanumeric Receiving Field SENDING FIELD PICTURE CONTENTS RECEIVING FIELD PICTURE CONTENTS (a) 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 6

Table 5. 3 Illustration of the MOVE statement: Numeric Sending Field to Numeric Receiving

Table 5. 3 Illustration of the MOVE statement: Numeric Sending Field to Numeric Receiving Field SENDING FIELD PICTURE CONTENTS RECEIVING FIELD PICTURE CONTENTS (a) 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 (d) 9(3)V 99 1 2 3 v 4 5 9(3) 1 2 3 (e) 9(3)V 99 1 2 3 v 4 5 9 V 99 3 v 4 5 (f) 9(3) 1 2 3 9(3)V 99 1 2 3 3 4 5 v 0 0 7

– PERFORM statement • Transfers control to a procedure (paragraph) • Returns to the

– 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 8

Figure 5. 2 FALSE CONDITION? STATEMENT 2 TRUE The IF Statement FALSE CONDITION? STATEMENT

Figure 5. 2 FALSE CONDITION? STATEMENT 2 TRUE The IF Statement FALSE CONDITION? STATEMENT 1 STATEMENT 3 (a) With ELSE Option TRUE STATEMENT 2 (b) Without ELSE Option 9

Figure 5. 3 FALSE A=B MOVE ZERO TO C The ELSE Clause/II TRUE MOVE

Figure 5. 3 FALSE A=B MOVE ZERO TO C The ELSE Clause/II TRUE MOVE 1 TO C IF A = B MOVE 1 TO C MOVE ZERO TO D 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 10

– EVALUATE statement • Similar to a case statement EVALUATE TRUE WHEN STU-CREDITS <=

– 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 11

Arithmetic Verbs • ROUNDED clause – Rounds the answer an arithmetic statement – If

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 … 12

Table 5. 4 DATA NAME PICTURE Value before execution The ROUNDED Clause A B

Table 5. 4 DATA NAME PICTURE Value before execution The ROUNDED Clause A B 9 V 99 C 9 V 9 123 456 (immaterial) ADD A B GIVING C 123 456 57 ADD A B GIVING C ROUNDED 123 456 58 Value after execution of: 13

 • The COMPUTE statement – Combines multiple arithmetic operations – Ex. ) COMPUTE

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

Table 5. 5 The COMPUTE Instruction DATA NAME A B C COMMENTS Value before

Table 5. 5 The COMPUTE Instruction DATA NAME A B C COMMENTS Value before execution 2 3 10 Initial Values 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 = ab COMPUTE C = B ** A. 2 3 9 algebraically, c = ba Value after execution of: 15

Table 5. 6 ALGEBRAIC EXPRESSION The COMPUTE Instruction (continued) COBOL COMPUTE x=a+b COMPUTE X

Table 5. 6 ALGEBRAIC EXPRESSION The COMPUTE Instruction (continued) COBOL COMPUTE x=a+b COMPUTE X = A + B. x=a+b 2 COMPUTE X = (A + B) / 2. x = (a + b)c 2 COMPUTE X = (A + B) * C / 2. x=a+b 2 c COMPUTE X = (A + B) / (2 * C). x = a COMPUTE X = A **. 5. x = a + b c 2 COMPUTE X = (A ** 2 + B ** 2) / C ** 2 16

 • • • The ADD statement The SUBTRACT statement The MULTIPLY statement The

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

Table 5. 7 The ADD Instruction DATA NAME A B C Value before execution

Table 5. 7 The ADD Instruction DATA NAME A B C Value before execution 5 10 30 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 Value after execution of: 18

Table 5. 8 The SUBTRACT Instruction DATA NAME A B C D Value before

Table 5. 8 The SUBTRACT Instruction DATA NAME A B C D Value before execution 5 10 30 100 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 Value after execution of: 19

Table 5. 9 The MULTIPLY Instruction DATA NAME A B C Value before execution

Table 5. 9 The MULTIPLY Instruction DATA NAME A B C Value before execution 5 10 30 MULTIPLY B BY A GIVING C 5 10 50 MULTIPLY A BY B 5 50 15 MULTIPLY B BY A 50 10 30 5 15 15 Value after execution of: MULTIPLY A BY 3 GIVING B C 20

Table 5. 10 The DIVIDE Instruction DATA NAME A B C Value before execution

Table 5. 10 The DIVIDE Instruction DATA NAME A B C Value before execution 5 10 30 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 Value after execution of: 21

Table 5. 11 Arithmetic on Fields with Assumed Decimal Points DATA NAME A B

Table 5. 11 Arithmetic on Fields with Assumed Decimal Points DATA NAME A B C PICTURE 99 99 V 99 12 345 4712 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 Value before execution Value after execution of: 22

PROGRAMMING TIP Use the COMPUTE Statement for Multiple Arithmetic Operations Poor Code MULTIPLY B

PROGRAMMING TIP Use the COMPUTE Statement for Multiple Arithmetic Operations Poor Code 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. Improved Code COMPUTE X = (-B + (B ** 2 - ( 4 * A * C)) **. 5) / ( 2 * A). Both sets of code apply to the quadratic formula X = -B + B -4 AC 2 A 23

Problems A 4 B 8 C 12 D 2 ADD 1 TO D B

Problems A 4 B 8 C 12 D 2 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) 24

Problems X=a+b+c X = a 2 + b 2 + c 2 F =

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

Problems Sending field X(4) HOPE 9(4) 6789 999 V 9 6789 Receiving field X

Problems Sending field X(4) HOPE 9(4) 6789 999 V 9 6789 Receiving field X 3 X 5 9(5) 9(3)V 99 26

Figure 5. 4 a Developing the Procedure Division PREPARE TUITION REPORT WRITE HEADING LINE

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

Figure 5. 4 b Developing the Procedure Division Open files Write heading line(s) Read

Figure 5. 4 b Developing the Procedure Division 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 credits <= 6 Activity fee = 25 CASE credits > 6 and < 12 Activity fee = 50 CASE credits >= 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 28

Figure 5. 6 Test Data and Output SMITH JAMES BAKER PART-TIMER JONES HEAVYWORKER LEE

Figure 5. 6 Test Data and Output SMITH JAMES BAKER PART-TIMER JONES HEAVYWORKER LEE CLARK GROSSMAN FRANKEL BENWAY KERBEL JB 15 Y 0000230 HR 15 0500245 SR 09 0500350 JR 03 Y 0000300 PL 15 Y 0000280 HM 18 0000200 BL 18 0000335 JC 06 0000310 SE 07 0000215 LF 10 0000350 CT 03 0250395 NB 04 0000100 (a) Test Data STUDENT NAME SMITH JAMES BAKER PART-TIMER JONES HEAVYWORKER LEE CLARK GROSSMAN FRANKEL BENWAY KERBEL CREDITS JB HR SR JR PL HM BL JC SE LF CT NB 15 15 09 03 15 18 18 06 07 10 03 04 UNIVERSITY TOTALS TUITION 003000 001800 000600 003000 003600 001200 001400 002000 000600 000800 ------024600 UNION FEE 025 000 000 000 000 ---0075 (b) Output ACT FEE 075 050 025 075 075 025 050 025 ----0625 SCHOLARSHIP 00000 00500 00000 00000 00250 00000 -----000750 TOTAL BILL 003100 003075 001350 000650 003100 003675 001225 001450 002050 000375 000825 ------024550 29

Figure 5. 7 Skeleton Outline of a COBOL Program IDENTIFICATION DIVISION. PROGRAM-ID. PROGNAME. AUTHOR.

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: CHAPTR 05TUITION. DAT’ ORGANIZATION IS LINE SEQUENTIAL. SELECT PRINT-FILE ASSIGN TO PRINTER. DATA DIVISION. FILE SECTION. FD INPUT-FILE RECORD CONTAINS 80 CHARACTERS. 01 INPUT-RECORD PIC X(80). FD 01 SELECT statements for input and output files PRINT-FILE RECORD CONTAINS 132 CHARACTERS. PRINT-LINE PIC X(132). WORKING-STORAGE SECTION. 01 DATA-REMAINS-SWITCH 01 HEADING-LINE. . . 01 DETAIL-LINE. . . 01 TOTAL-LINE. . . PIC X(2) Controls performed paragraph VALUE SPACES. 30

Figure 5. 7 Skeleton Outline of a COBOL Program(cont. ) PROCEDURE DIVISION. MAINLINE. Housekeeping

Figure 5. 7 Skeleton Outline of a COBOL Program(cont. ) PROCEDURE DIVISION. MAINLINE. Housekeeping consists of opening files and the initial READ OPEN 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. Termination includes closing files and STOP RUN. PROCESS-RECORDS. . . READ INPUT-FILE AT END MOVE ‘NO’ TO DATA-REMAINS-SWITCH END-READ. Last line of performed paragraph is a second READ 31

Tuition Billing Program • 32

Tuition Billing Program • 32