The PERFORM. The PERFORM Verb Iteration is an important programming construct. We use iteration...

22
The The PERFORM PERFORM

description

Paragraphs :- Revisited  A Paragraph is a block of code to which we have given a name.  A Paragraph Name is a programmer defined name formed using the standard rules for programmer defined names (A-Z, 0-9, -).  A Paragraph Name is ALWAYS terminated with a ‘full- stop’.  Any number of statements and sentences may be included in a paragraph, and the last one (at least) must be terminated with a ‘full-stop’.  The scope of a paragraph is delimited by the occurrence of another paragraph name or the end of the program text.

Transcript of The PERFORM. The PERFORM Verb Iteration is an important programming construct. We use iteration...

Page 1: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

The The PERFORMPERFORM

Page 2: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

The PERFORM VerbThe PERFORM Verb Iteration is an important programming construct. We Iteration is an important programming construct. We

use iteration when we need to repeat the same use iteration when we need to repeat the same instructions over and over again.instructions over and over again.

Most programming languages have several iteration Most programming languages have several iteration keywords (e.g. WHILE, FOR, REPEAT) which facilitate keywords (e.g. WHILE, FOR, REPEAT) which facilitate the creation different ‘types’ of iteration structure.the creation different ‘types’ of iteration structure.

COBOL only has COBOL only has oneone iteration construct; iteration construct; PERFORMPERFORM..

But the But the PERFORMPERFORM has several variations. has several variations.

Each variation is equivalent to one of the iteration Each variation is equivalent to one of the iteration ‘types’ available in other languages. ‘types’ available in other languages.

This lecture concentrates on three of the PERFORM This lecture concentrates on three of the PERFORM formats. The PERFORM..VARYING, the COBOL formats. The PERFORM..VARYING, the COBOL equivalent of the FOR , will be introduced later.equivalent of the FOR , will be introduced later.

Page 3: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

Paragraphs :- RevisitedParagraphs :- Revisited

A Paragraph is a block of code to which we have given A Paragraph is a block of code to which we have given a name.a name.

A Paragraph Name is a programmer defined name A Paragraph Name is a programmer defined name formed using the standard rules for programmer formed using the standard rules for programmer defined names (A-Z, 0-9, -).defined names (A-Z, 0-9, -).

A Paragraph Name is A Paragraph Name is ALWAYSALWAYS terminated with a ‘full- terminated with a ‘full-stop’.stop’.

Any number of statements and sentences may be Any number of statements and sentences may be included in a paragraph, and the last one (at least) included in a paragraph, and the last one (at least) must be terminated with a ‘full-stop’.must be terminated with a ‘full-stop’.

The scope of a paragraph is delimited by the The scope of a paragraph is delimited by the occurrence of another paragraph name or the end of occurrence of another paragraph name or the end of the program text.the program text.

Page 4: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

ProcessRecord.ProcessRecord. DISPLAY StudentRecordDISPLAY StudentRecord READ StudentFileREAD StudentFile

AT END MOVE HIGH-VALUES TO StudentRecordAT END MOVE HIGH-VALUES TO StudentRecord END-READ.END-READ.

ProduceOutput.ProduceOutput. DISPLAY “Here is a message”.DISPLAY “Here is a message”.

Paragraph ExampleParagraph Example

NOTENOTEThe scope of ‘ProcessRecord’ is delimited by the occurrence the paragraph name ‘ProduceOutput’.

Page 5: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

Format 1 Syntax.Format 1 Syntax.

This is the only type of PERFORM that is This is the only type of PERFORM that is not not an an iteration construct. iteration construct.

It instructs the computer to It instructs the computer to transfer controltransfer control to an to an out-of-line block of code. out-of-line block of code.

When the end of the block is reached, control When the end of the block is reached, control reverts to the statement (not the sentence) reverts to the statement (not the sentence) immediately following the PERFORM.immediately following the PERFORM.

1stProc and EndProc are the names of Paragraphs 1stProc and EndProc are the names of Paragraphs or Sections. or Sections.

The PERFORM..THRU instructs the computer to The PERFORM..THRU instructs the computer to treat the Paragraphs or Sections from 1stProc TO treat the Paragraphs or Sections from 1stProc TO EndProc as a single block of code. EndProc as a single block of code.

PERFORM 1stProc THRUTHROUGH

EndProc

Page 6: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.TopLevel.TopLevel. DISPLAY "In TopLevel. Starting to run program"DISPLAY "In TopLevel. Starting to run program" PERFORM OneLevelDown DISPLAY "Back in TopLevel.". STOP RUN.

TwoLevelsDown. DISPLAY ">>>>>>>> Now in TwoLevelsDown."

OneLevelDown. DISPLAY ">>>> Now in OneLevelDown" PERFORM TwoLevelsDown DISPLAY ">>>> Back in OneLevelDown".

Run of PerformFormat1

In TopLevel. Starting to run program>>>> Now in OneLevelDown>>>>>>>> Now in TwoLevelsDown.>>>> Back in OneLevelDownBack in TopLevel.

Format 1 Example.Format 1 Example.

Page 7: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.TopLevel.TopLevel. DISPLAY "In TopLevel. Starting to run program" PERFORM OneLevelDownPERFORM OneLevelDown DISPLAY "Back in TopLevel.". STOP RUN.

TwoLevelsDown. DISPLAY ">>>>>>>> Now in TwoLevelsDown."

OneLevelDown. DISPLAY ">>>> Now in OneLevelDown" PERFORM TwoLevelsDown DISPLAY ">>>> Back in OneLevelDown".

Run of PerformFormat1

In TopLevel. Starting to run program>>>> Now in OneLevelDown>>>>>>>> Now in TwoLevelsDown.>>>> Back in OneLevelDownBack in TopLevel.

Format 1 Example.Format 1 Example.

Page 8: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.TopLevel. DISPLAY "In TopLevel. Starting to run program" PERFORM OneLevelDown DISPLAY "Back in TopLevel.". STOP RUN.

TwoLevelsDown. DISPLAY ">>>>>>>> Now in TwoLevelsDown."

OneLevelDown.OneLevelDown. DISPLAY ">>>> Now in OneLevelDown"DISPLAY ">>>> Now in OneLevelDown" PERFORM TwoLevelsDown DISPLAY ">>>> Back in OneLevelDown".

Run of PerformFormat1

In TopLevel. Starting to run program>>>> Now in OneLevelDown>>>>>>>> Now in TwoLevelsDown.>>>> Back in OneLevelDownBack in TopLevel.

Format 1 Example.Format 1 Example.

Page 9: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.TopLevel. DISPLAY "In TopLevel. Starting to run program" PERFORM OneLevelDown DISPLAY "Back in TopLevel.". STOP RUN.

TwoLevelsDown. DISPLAY ">>>>>>>> Now in TwoLevelsDown."

OneLevelDown.OneLevelDown. DISPLAY ">>>> Now in OneLevelDown" PERFORM TwoLevelsDownPERFORM TwoLevelsDown DISPLAY ">>>> Back in OneLevelDown".

Run of PerformFormat1

In TopLevel. Starting to run program>>>> Now in OneLevelDown>>>>>>>> Now in TwoLevelsDown.>>>> Back in OneLevelDownBack in TopLevel.

Format 1 Example.Format 1 Example.

Page 10: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.TopLevel. DISPLAY "In TopLevel. Starting to run program" PERFORM OneLevelDown DISPLAY "Back in TopLevel.". STOP RUN.

TwoLevelsDown.TwoLevelsDown. DISPLAY ">>>>>>>> Now in TwoLevelsDown."DISPLAY ">>>>>>>> Now in TwoLevelsDown."OneLevelDown. DISPLAY ">>>> Now in OneLevelDown" PERFORM TwoLevelsDown DISPLAY ">>>> Back in OneLevelDown".

Run of PerformFormat1

In TopLevel. Starting to run program>>>> Now in OneLevelDown>>>>>>>> Now in TwoLevelsDown.>>>> Back in OneLevelDownBack in TopLevel.

Format 1 Example.Format 1 Example.

Page 11: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.TopLevel. DISPLAY "In TopLevel. Starting to run program" PERFORM OneLevelDown DISPLAY "Back in TopLevel.". STOP RUN.

TwoLevelsDown. DISPLAY ">>>>>>>> Now in TwoLevelsDown."

OneLevelDown.OneLevelDown. DISPLAY ">>>> Now in OneLevelDown" PERFORM TwoLevelsDown DISPLAY ">>>> Back in OneLevelDown".DISPLAY ">>>> Back in OneLevelDown".

Run of PerformFormat1

In TopLevel. Starting to run program>>>> Now in OneLevelDown>>>>>>>> Now in TwoLevelsDown.>>>> Back in OneLevelDownBack in TopLevel.

Format 1 Example.Format 1 Example.

Page 12: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.TopLevel.TopLevel. DISPLAY "In TopLevel. Starting to run program" PERFORM OneLevelDown DISPLAY "Back in TopLevel.".DISPLAY "Back in TopLevel.". STOP RUN.

TwoLevelsDown. DISPLAY ">>>>>>>> Now in TwoLevelsDown."

OneLevelDown. DISPLAY ">>>> Now in OneLevelDown" PERFORM TwoLevelsDown DISPLAY ">>>> Back in OneLevelDown".

Run of PerformFormat1

In TopLevel. Starting to run program>>>> Now in OneLevelDown>>>>>>>> Now in TwoLevelsDown.>>>> Back in OneLevelDownBack in TopLevel.

Format 1 Example.Format 1 Example.

Page 13: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.Begin. PERFORM SumSales STOP RUN.

SumSales. Statements Statements IF NoErrorFound Statements Statements IF NoErrorFound Statements Statements Statements END-IF END-IF.

Why use the PERFORM Thru?Why use the PERFORM Thru?

Page 14: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

Go To and PERFORM THRUGo To and PERFORM THRU

PROCEDURE DIVISIONBegin. PERFORM SumSales THRU SumSalesExit STOP RUN.

SumSales. Statements Statements IF ErrorFound GO TO SumSalesExit END-IF Statements Statements Statements IF ErrorFound GO TO SumSalesExit END-IF Statements

SumSalesExit. EXIT.

Page 15: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

Format 2 - SyntaxFormat 2 - Syntax

PERFORM 1stProc THRUTHROUGH

EndProc

RepeatCount TIMES

StatementBlock END - PERFORM

PROCEDURE DIVISION.Begin.

DisplayName.

StatementsPERFORM DisplayName 4 TIMESStatementsSTOP RUN.

DISPLAY “Tom Ryan”.

Page 16: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

$ SET SOURCEFORMAT"FREE"IDENTIFICATION DIVISION.PROGRAM-ID. PerformExample2.AUTHOR. Michael Coughlan.

DATA DIVISION.WORKING-STORAGE SECTION.01 NumofTimes PIC 9 VALUE 5.

PROCEDURE DIVISION.Begin. DISPLAY "Starting to run program" PERFORM 3 TIMES DISPLAY ">>>>This is an in line Perform" END-PERFORM DISPLAY "Finished in line Perform" PERFORM OutOfLineEG NumOfTimes TIMES DISPLAY "Back in Begin. About to Stop". STOP RUN.

OutOfLineEG. DISPLAY ">>>> This is an out of line Perform".

Format 2 ExampleFormat 2 Example

Starting to run program>>>>This is an in line Perform>>>>This is an in line Perform>>>>This is an in line PerformFinished in line Perform>>>> This is an out of line Perform>>>> This is an out of line Perform>>>> This is an out of line Perform>>>> This is an out of line Perform>>>> This is an out of line PerformBack in Begin. About to Stop

Run of PerformExample2

Page 17: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

Format 3 SyntaxFormat 3 Syntax

This format is used where the This format is used where the WHILE WHILE or or REPEATREPEAT constructs are used in other languages.constructs are used in other languages.

If the If the WITH TEST BEFOREWITH TEST BEFORE phrase is used the phrase is used the PERFORM behaves like a PERFORM behaves like a WHILEWHILE loop and the loop and the condition is tested condition is tested beforebefore the loop body is entered.the loop body is entered.

If the If the WITH TEST AFTERWITH TEST AFTER phrase is used the phrase is used the PERFORM behaves like a PERFORM behaves like a REPEATREPEAT loop and the loop and the condition is tested condition is tested afterafter the loop body is entered. the loop body is entered.

The The WITH TEST BEFOREWITH TEST BEFORE phrase is the phrase is the defaultdefault and and so is rarely explicitly stated. so is rarely explicitly stated.

PERFORM 1stProc THRUTHROUGH

EndProc WITH TEST BEFOREAFTER

UNTIL Condition

StatementBlock END - PERFORM

Page 18: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

test

Loop Body

False

True

PERFORM WITHTEST AFTER =REPEAT ... UNTIL

Next Statement

test

Loop Body

False

True

PERFORM WITHTEST BEFORE =WHILE ... DO

Next Statement

Page 19: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

Sequential File ProcessingSequential File Processing

In general terms, the In general terms, the WHILE WHILE loop is an ideal loop is an ideal construct for processing sequences of data items construct for processing sequences of data items whose length is not predefined.whose length is not predefined.

Such sequences of values are often called Such sequences of values are often called “streams”.“streams”.

Because the ‘length’ of the stream is unknown we Because the ‘length’ of the stream is unknown we have to be careful how we manage the detection have to be careful how we manage the detection of the end of the stream.of the end of the stream.

A useful way for solving this problem uses a A useful way for solving this problem uses a strategy known as “read ahead”.strategy known as “read ahead”.

Page 20: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

The READ AheadThe READ Ahead

With the “read ahead” strategy we always With the “read ahead” strategy we always try try to to stay one data item ahead of the processing.stay one data item ahead of the processing.

The general format of the “read ahead” algorithm is The general format of the “read ahead” algorithm is as follows;as follows;

Attempt to READ first data itemAttempt to READ first data itemWHILE NOT EndOfStreamWHILE NOT EndOfStream Process data itemProcess data item Attempt to READ next data itemAttempt to READ next data itemENDWHILEENDWHILE

Use this to process any stream of data.Use this to process any stream of data.

Page 21: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

Reading a Sequential FileReading a Sequential File

Algorithm TemplateAlgorithm TemplateREAD StudentRecordsREAD StudentRecordsAT END MOVE HIGH-VALUES TO StudentRecordAT END MOVE HIGH-VALUES TO StudentRecordEND-READEND-READPERFORM UNTIL StudentRecord = HIGH-VALUESPERFORM UNTIL StudentRecord = HIGH-VALUESDISPLAY StudentRecordDISPLAY StudentRecordREAD StudentRecordsREAD StudentRecordsAT END MOVE HIGH-VALUES TO StudentRecordAT END MOVE HIGH-VALUES TO StudentRecord END-END-READREADEND-PERFORMEND-PERFORM

This is an example of an algorithm which is capable This is an example of an algorithm which is capable of processing any sequential file; ordered or of processing any sequential file; ordered or unordered! unordered!

Page 22: The PERFORM. The PERFORM Verb  Iteration is an important programming construct. We use iteration when we need to repeat the same instructions over and.

PROCEDURE DIVISION.Begin. OPEN INPUT StudentFile

READ StudentFile AT END MOVE HIGH-VALUES TO StudentDetails END-READ PERFORM UNTIL StudentDetails = HIGH-VALUES DISPLAY StudentId SPACE StudentName SPACE CourseCode READ StudentFile AT END MOVE HIGH-VALUES TO StudentDetails END-READ END-PERFORM

CLOSE StudentFile STOP RUN.

9456789 COUGHLANMS LM51

9367892 RYAN TG LM60

9368934 WILSON HR LM61

RUN OF SeqRead