Chapter 9 More about the Procedure Division - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Chapter 9 More about the Procedure Division

Description:

05 EMP-NAME PIC X(25). . PROCEDURE DIVISION. READ EMPLOYEE-FILE ... 05 SOC-SEC-NUM-OUT PIC 999B99B9999. PROCEDURE DIVISION. MOVE SOC-SEC-NUM TO SOC-NUM-OUT. ... – PowerPoint PPT presentation

Number of Views:133
Avg rating:3.0/5.0
Slides: 29
Provided by: Robe395
Category:

less

Transcript and Presenter's Notes

Title: Chapter 9 More about the Procedure Division


1
Chapter 9 More about the Procedure Division
2
PERFORM - with test
  • PRE-TEST PERFORM ... Until .... Or
    PERFORM ... Until WITH TEST BEFORE
    Condition is test before the loop is entered
    loop may never be executed
  • POST-TEST PERFORM ... Until WITH TEST AFTER
    Condition is tested after the loop is
    executed at least once

3
Figure 9.1 The Iteration Structure
POST-TEST
PRE-TEST
A
CONDITION?
A
TRUE
CONDITION?
FALSE
FALSE
TRUE
(a) DO WHILE Construct
(b) DO UNTIL Construct
4
Priming Read
Procedure Division statements to process the
current record
5
In Line Perform
PERFORM UNTIL DATA-REMAINS-SWITCH NO
READ INPUT-FILE AT END MOVE
NO TO DATA-REMAINS-SWITCH NOT
AT END . . .END-PERFORM
(b) False Condition Branch with In-Line Perform
Procedure Division statements to process the
current record
Advantage - Read is done only in one place within
the program
6
READ .... INTO
  • Reads the file and moves the record to the object
    of the INTO clause
  • Object of the into clause must be a defined
    usually in Working-Storage
  • Provides two copies of the record READ

7
Figure 9.3 The READ INTO statement
FD EMPLOYEE-FILE DATA RECORD IS
EMPLOYEE-RECORD.01 EMPLOYEE-RECORD PIC
X(60). . . .WORKING-STORAGE
SECTION.01 FILLER PIC X(14) VALUE WS BEGINS
HERE.01 WS-EMPLOYEE-RECORD. 05
EMP-NAME PIC X(25). . .
. PROCEDURE DIVISION. . . .
READ EMPLOYEE-FILE INTO WS-EMPLOYEE-RECORD
AT END MOVE NO TO DATA-REMAINS-SWITCH NO
T AT END PERFORM PROCESS-THIS-RECORD
END-READ.
COPY number 1
COPY number 2
8
WRITE ... FROM
  • Moves the object of the FROM to the subject of
    the WRITE
  • Convenient way to move a record to the Output
    processing buffer
  • Ex WRITE Print-Line FROM Detail-Line AFTER
    ADVANCING 1 LINEMoves the Detail-Line to the
    Print-Line and then does the WRITE

9
The WRITE FROM statement
10
INITIALIZE
  • Sets multiple data names to some initial value
    with one statement
  • INITIALIZE - with no object will set all numeric
    data items to zero and all alphanumeric items to
    spaces --- DANGEROUS to use because it affects
    the entire Data Division - FUJITSU prohibits

11
INITIALIZE object
  • Object can be a Group or Elementary item
  • INITIALIZE Group-Name sets numeric pictures to
    zero and alphanumeric to spacesGood
    to use when resetting accumulators in processes
    that requirement different levels of totals

12
INITIALIZE object REPLACING
  • Allows you to specify initial values other than
    Spaces and Zeros
  • INITIALIZE Program-Switches ALPHANUMERIC DATA BY
    YESSets all X fields in the Group-Item to
    YES

13
The INITIALIZE statement
  • Sets elementary or group data names to
    initial value
  • DOES NOT RESET VALUE TO THAT OF THE VALUE
    STATEMENT!!!
  • EX 01 GROUP-ITEM. 05
    NUMERIC-FIELD-1 PIC 9(4). 05
    NUMERIC-FIELD-2 PIC 9(4). 05
    ALPHANUMERIC-FIELD-1 PIC X(15) VALUE TOM.
    05 ALPHANUMERIC-FIELD-2 PIC X(20).
  • The statement INITIALIZE GROUP-ITEM
  • is equivalent to the combined statements
    MOVE ZEROS TO NUMERIC-FIELD-1. MOVE ZEROS TO
    NUMERIC-FIELD-2. MOVE SPACES TO
    ALPHANUMERIC-FIELD-1. MOVE SPACES TO
    ALPHANUMERIC-FIELD-2.

14
INSPECT
  • Convenient way to replace one character with
    another
  • INSPECT PayHours REPLACING LEADING SPACES BY
    ZERO
  • INSPECT Det-SSNumber REPLACING ALL Spaces BY -

15
Figure 9.4 The INSPECT statement
01 RECORD-IN. 05 SOC-SEC-NUM PIC
9(9). . . .01 PRINT-LINE.
05 SOC-SEC-NUM-OUT PIC 999B99B9999. .PROCEDURE
DIVISION. . MOVE
SOC-SEC-NUM TO SOC-NUM-OUT. INSPECT
SOC-SEC-NUM-OUT REPLACING ALL Spaces BY -.
Initial SOC-SEC-NUM 123 45 6789 Result
SOC-SEC-NUM-OUT 123-45-6789
16
STRING and UNSTRING
  • STRING join two or more alphanumeric fields
    together - Concatenation.
  • DELIMITED BY some value - indicates when to stop
    moving
  • DELIMITED BY SIZE move the entire field
  • UNSTRING - Breaks a field apart
  • DELIMITED BY some value delineates the component
    parts

17
Figure 9.5 The STRING Statement
05 NAME-IN-PIECES. 10 LAST-NAME PIC
X(16). 10 FIRST-NAME PIC X(10). 10
MIDDLE-INITIAL PIC X. 05 ENTIRE-NAME PIC
X(29). (a) Working-Storage Holding Areas
18
Figure 9.5 The STRING Statement (cont.)
MOVE SPACES TO ENTIRE-NAME.STRING FIRST-NAME
DELIMITED BY SPACE DELIMITED BY SIZE
MIDDLE-INITIAL DELIMITED BY SPACE
DELIMITED BY SIZE LAST-NAME DELIMITED
BY SPACE INTO ENTIRE-NAME (b) STRING
Statement
Execution Steps
(c) Sequence of transfer
19
Figure 9.6 The UNSTRING Statement
05 NAME-IN-PIECES. 10 LAST-NAME PIC
X(16). 10 FIRST-NAME PIC X(10). 10
MIDDLE-INITIAL PIC X. 05 ENTIRE-NAME PIC
X(31). (a) Working-Storage Holding Areas
MOVE SPACES TO NAME-IN-PIECES.UNSTRING
ENTIRE-NAME DELIMITED BY INTO FIRST-NAME
MIDDLE-INITIAL LAST-NAME. (b) UNSTRING Statement
20
Figure 9.6 The UNSTRING Statement
J
O
H
N
H
S
M
I
T
H
(1) ENTIRE-NAME
H
FIRST-NAME
LAST-NAME
MIDDLE-INITIAL
(c) Execution of UNSTRING
21
Reference Modification
  • Lets you address a character string within an
    existing data-item
  • data-name (beginlength)Telephone-Number (13)
    area-codeTelephone-Number (43)
    exchangeTelephone-Number (64) number

22
Figure 9.7 Reference Modification
01 INCOMING-RECORD. . . .
05 TELEPHONE-NUMBER PIC X(10). . .
. 01 EDITED-PHONE-NUMBER. 05
FILLER PIC X VALUE (. 05
AREA-CODE PIC X(3). 05 FILLER PIC X
VALUE ). 05 EXCHANGE PIC X(3). 05
FILLER PIC X VALUE -. 05
DIGITS PIC X(4). . . .
MOVE TELEPHONE-NUMBER (13) TO AREA-CODE.
MOVE TELEPHONE-NUMBER (43) TO EXCHANGE.
MOVE TELEPHONE-NUMBER (74) TO DIGITS.
23
Figure 9.8 The ACCEPT Statement
01 DAY-CODE-VALUE PIC 9. 01 TODAYS-DATE.
05 TODAYS-YEAR PIC 99. 05 TODAYS-MONTH
PIC 99. 05 TODAYS-DAY PIC 99. 01
HDG-LINE. 05 HDG-DAY-OF-WEEK PIC X(9).
05 FILLER PIC XX VALUE , . 05
HDG-DATE PIC X(8). (a) Working-Storage Entries
ACCEPT DAY-CODE-VALUE FROM DAY-OF-WEEK.EVALUATE
DAY-CODE-VALUE WHEN 1 MOVE Monday
TO HDG-DAY-OF-WEEK WHEN 2 MOVE
Tuesday TO HDG-DAY-OF-WEEK WHEN 3 MOVE
Wednesday TO HDG-DAY-OF-WEEK WHEN 4 MOVE
Thursday TO HDG-DAY-OF-WEEK WHEN 5
MOVE Friday TO HDG-DAY-OF-WEEK
WHEN 6 MOVE Saturday TO HDG-DAY-OF-WEEK
WHEN 7 MOVE Sunday TO
HDG-DAY-OF-WEEKEND-EVALUATE. (b) DAY-OF-WEEK
Clause
ACCEPT TODAYS-DATE FROM DATE.STRING
TODAYS-MONTH / TODAYS-DATE / TODAYS-YEAR
DELIMITED BY SIZE INTO HDG-DATEEND-STRING.
(c) DATE Clause
24
Qualification
  • Allows programmer to use the same data name more
    than once in the data division
  • Must specify which data item you are referring to
    by using OF group-name
  • May be required by organization
  • More professional approach
  • Allows use of MOVE CORESSPONDING

25
Figure 9.9 Duplicate Data Names
01 STUDENT-RECORD. 05 STUDENT-NAME PIC
X(20). 05 SOCIAL-SECURITY-NUM PIC 9(9).
05 STUDENT-ADDRESS. 10 STREET PIC
X(15). 10 CITY-STATE PIC X(15).
05 ZIP-CODE PIC X(5). 05 CREDITS PIC
9(3). 05 MAJOR PIC X(10). 05
FILLER PIC X(3). . . . 01
PRINT-LINE. 05 STUDENT-NAME PIC X(20).
05 FILLER PIC XX. 05 CREDITS PIC
9(3). 05 FILLER PIC XX. 05
TUITION PIC ,9.99. 05 FILLER PIC XX.
05 STUDENT-ADDRESS. 10
STREET PIC X(15). 10 CITY-STATE PIC
X(15). 10 ZIP-CODE PIC X(5). 05
FILLER PIC XX. 05 SOCIAL-SECURITY-NUM PIC
999B99B9999. 05 FILLER PIC X(47). (a)
Duplicate Data Names
26
Figure 9.9 Duplicate Data Names
MOVE CORRESPONDING STUDENT-RECORD TO
PRINT-LINE (b) MOVE CORRESPONDING Statement
MOVE STUDENT-NAME OF STUDENT-RECORD
TO STUDENT-NAME
OF PRINT-LINE. MOVE SOCIAL-SECURITY-NUM OF
STUDENT-RECORD
TO SOCIAL-SECURITY-NUM OF PRINT-LINE. MOVE
STREET OF STUDENT-RECORD
TO STREET OF
PRINT-LINE. MOVE CITY-STATE OF STUDENT-RECORD
TO
CITY-STATE OF PRINT-LINE. MOVE CREDITS OF
STUDENT-RECORD
TO CREDITS OF PRINT-LINE. (c)
Equivalent MOVE Statements
27
Page Overflow
  • A printed page 8.5 x 11 will only hold 66 lines
    at 6 linesper inch
  • Most often we leave 1/2 inch border top and
    bottom --- leaving room for 60 lines on a page
  • When page is full programmer must start a new
    page with headings etc.
  • Program must count lines printed including blank
    lines
  • Must test the number of lines printed before
    printing
  • Remember to RESET the line counter after printing
    headers

28
EXAMPLE
Working-Storage. 01 Line-Ctr Pic 99 Value
75. Procedure Division. 100-Start-Program. 350-Pri
nt-Detail-Lines. IF Line-Ctr 55 then
PERFORM 400-Heading-Routine END-IF WR
ITE Print-Line FROM Detail-Line AFTER ADVANCING 2
LINES ADD 2 to Line-Ctr 400-Heading-Routine. WRI
TE Print-Line FROM Heading-One AFTER ADVANCING
PAGE WRITE Print-Line FROM Heading-One AFTER
ADVANCING 2 LINES MOVE SPACES TO
Print-Line WRITE Print-Line AFTER ADVANCING 1
LINE MOVE 4 TO Line-Ctr.
Write a Comment
User Comments (0)
About PowerShow.com