`200-PROCESS-SCREEN-RECORD

Figure 9.9
01 STUDENT-RECORD.
05 STUDENT-NAME
05 SOCIAL-SECURITY-NUM
05 STUDENT-ADDRESS.
10 STREET
10 CITY-STATE
05 ZIP-CODE
05 CREDITS
05 MAJOR
05 FILLER
Duplicate Data Names
PIC X(20).
PIC 9(9).
PIC X(15).
PIC X(15).
PIC X(5).
PIC 9(3).
PIC X(10).
PIC X(3).
.
.
.
01 PRINT-LINE.
05 STUDENT-NAME
05 FILLER
05 CREDITS
05 FILLER
05 TUITION
05 FILLER
05 STUDENT-ADDRESS.
10 STREET
10 CITY-STATE
10 ZIP-CODE
05 FILLER
05 SOCIAL-SECURITY-NUM
05 FILLER
PIC X(20).
PIC XX.
PIC 9(3).
PIC XX.
PIC $$,$$9.99.
PIC XX.
PIC X(15).
PIC X(15).
PIC X(5).
PIC XX.
PIC 999B99B9999.
PIC X(47).
(a) Duplicate Data Names
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
The Iteration Structure
A
TRUE
CONDITION?
A
FALSE
CONDITION?
FALSE
TRUE
(a) DO WHILE Construct
(b) DO UNTIL Construct
The PERFORM Verb
•
Structured Programming uses iteration as an integral part of its main
constructs.
•
In COBOL the PERFORM statement handles all the different iterations.
•
We will discuss the different variations of the Perform.
•
But first, how do we define a paragraph
000-MAIN-MODULE.
PERFORM 100-INITIALIZATION-RTN.
PERFORM 200-PROCESS-SCREEN-RECORD-RTN
UNTIL WS-FUNCTION-KEY-03.
PERFORM 300-TERMINATION-RTN.
STOP RUN.
100-INITIALIZATION-RTN.
OPEN I-O
DISPLAY-FILE
INPUT EMPLOYEE-PAY-FILE.
WRITE DISPLAY-RECORD
FORMAT IS 'SCREEN1'.
READ DISPLAY-FILE RECORD.
200-PROCESS-SCREEN-RECORD-RTN.
MOVE SN1-EMPLOYEE-NUMBER TO EP-EMPLOYEE-NUMBER.
READ EMPLOYEE-PAY-FILE
Paragraph Scope
The scope of ‘100-INITIALIZATION-RTN’ is delimited by the occurrence of
the paragraph name ‘200-PROCESS-SCREEN-RECORD-RTN’.
PERFORM statement formats
•
•
•
Basic PERFORM
PERFORM . . . TIMES phrase.
PERFORM . . . UNTIL phrase.
•
PERFORM . . .VARYING phrase..
PERFORM variation examples
• PERFORM 1000-INITIALIZATION-RTN (THRU 100-EXIT).
• PERFORM 420-PRINT-RTN 2 TIMES.
• PERFORM 2000-PROCESS-SCREEN-RECORD-RTN
•
UNTIL WS-FUNCTION-KEY-03.
• PERFORM 300-PRINT-RTN
•
VARYING SUB FROM 1 BY 1 UNTIL SUB > 12
•
•
•
•
PERFORM UNTIL END-OF-FILE-SWITCH = 'YES’
. . .
. . .
END-PERFORM.
The Basic Peform

  THRU
 





PERFORM 1stProc  

 EndProc  


 
THROUGH 



• This is the only type of PERFORM that is not an iteration
construct.
• It instructs the computer to transfer control to an out-of-line
block of code.
• When the end of the block is reached, control reverts to the
statement (not the sentence) immediately following the
PERFORM.
• 1stProc and EndProc are the names of Paragraphs or
Sections.
• The PERFORM..THRU instructs the computer to treat the
Paragraphs or Sections from 1stProc TO EndProc as a single
block of code.
Keep them in line when possible
• The out-of-line Perform
• The in-line Perform
• Avoid GO TOs
Figure 9.2
Structure of a COBOL Program
READ INPUT-FILE
AT END MOVE ‘NO’ TO DATA-REMAINS-SWITCH.
PERFORM PROCESS-RECORDS
UNTIL DATA-REMAINS-SWITCH = ‘NO’.
PROCESS-RECORDS.
.
Procedure Division statements to process the current record
.
.
READ INPUT-FILE
AT END MOVE ‘NO’ TO DATA-REMAINS-SWITCH.
(a) Priming Read
PERFORM UNTIL DATA-REMAINS-SWITCH = ‘NO’
READ INPUT-FILE
AT END
MOVE ‘NO’ TO DATA-REMAINS-SWITCH
NOT AT END
.
Procedure Division statements to process the current record
.
.
END-READ
END-PERFORM.
(b) False Condition Branch with In-Line Perform
EVALUATE Statement
Implements the Case Structure
• In many cases nested IF statements can be replaced
by an EVALUATE statement.
• The EVALUATE statement evaluates multiple
conditions and a particular action is taken
depending on the results of these evaluations.
IF Syntax.
StatementBlock


IF Condition THEN 
NEXT
SENTENCE


StatementBlock


  END - IF
ELSE
 NEXT SENTENCE 
CONDITION TYPES
•
•
•
Simple Conditions
– Relation Conditions
– Class Conditions
– Sign Conditions
Complex Conditions
Condition Names
The Evaluate statement
• EVALUATE TRUE
•
WHEN STU-CREDITS <= 1ST-CREDIT-LIMIT
•
MOVE 1ST-ACTIVITY-FEE TO IND-ACTIVITY-FEE
•
WHEN STU-CREDITS > 1ST-CREDIT-LIMIT
•
AND STU-CREDITS <= 2ND-CREDIT-LIMIT
•
MOVE 2ND-ACTIVITY-FEE TO IND-ACTIVITY-FEE
•
WHEN STU-CREDITS > 2ND-CREDIT-LIMIT
•
MOVE 3RD-ACTIVITY-FEE TO IND-ACTIVITY-FEE
•
WHEN OTHER
•
DISPLAY 'INVALID CREDITS FOR: ' STU-NAME
• END-EVALUATE.
• Check pgm Tuition5
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
EVALUATE
MENU-INPUT
WHEN "0"
PERFORM INIT-PROC
WHEN "1" THRU "9"
PERFORM PROCESS-PROC
WHEN "R"
PERFORM READ-PARMS
WHEN "X"
PERFORM CLEANUP-PROC
WHEN OTHER
PERFORM ERROR-PROC
END-EVALUATE.
Equivalent Nested If’s
IF (MENU-INPUT = "0") THEN
PERFORM INIT-PROC
ELSE
IF (MENU-INPUT ° "1") AND (MENU-INPUT ° "9") THEN
PERFORM PROCESS-PROC
ELSE
IF (MENU-INPUT = "R") THEN
PERFORM READ-PARMS
ELSE
IF (MENU-INPUT = "X") THEN
PERFORM CLEANUP-PROC
ELSE
PERFORM ERROR-PROC
END-IF
END-IF
END-IF
END-IF.
Why all these varieties?
• Did you hear about the Law of the Hammer
• If the only tool you have is a hammer you
will always try pounding as the best and only
solution