CHAPTER 4
CODING COMPLETE COBOL
PROGRAMS:
THE PROCEDURE DIVISION
CHAPTER OBJECTIVES
After
completion of this chapter, the student should be able to:
1. Explain the purpose of the PROCEDURE
DIVISION.
2. Define the terms "paragraph,"
"sentence," and "statement" as they relate to the PROCEDURE
DIVISION.
3. Explain the purpose and use of the OPEN
statement.
4. Explain the purpose and use of the
PERFORM UNTIL ... END-PERFORM statement.
5. Explain the purpose and use of the READ
statement.
6. Explain the purpose of the AT END
condition in a READ statement.
7. Explain
the purpose and use of the simple PERFORM statement.
8. Explain the purpose and use of a CLOSE
statement.
9. Explain the purpose and use of a STOP
RUN statement.
10. Explain the purpose and use of a simple
MOVE statement.
11. Explain
the purpose and use of a WRITE statement.
12. Explain
the purpose and use of simple ADD, SUBTRACT, MULTIPLY, DIVIDE, and
IF statements.
13. Describe
the source of the Year 2000 Problem.
14. Describe
some of the specific computer problems that arose in the year 2000.
15. Describe
two major approaches that were taken to solve the Year 2000 Problem.
LECTURE OUTLINE
I. A
Review of the First Three Divisions
1. The IDENTIFICATION and ENVIRONMENT
DIVISIONs supply information about the nature of the program and the specific
equipment and files that will be used.
2. The FILE SECTION of the DATA DIVISION
defines, in detail, the input and output files.
3. The WORKING-STORAGE SECTION of the DATA
DIVISION is used for defining any storage areas not part of input or output
files but nonetheless required for processing.
4. The PROCEDURE DIVISION is the most
significant section. It contains all the
instructions that the computer will execute.
II. The
Format of the PROCEDURE DIVISION
A. Paragraphs that Serve as Modules
1. The PROCEDURE DIVISION is divided into
paragraphs.
2. Each paragraph is an independent module
(routine) consisting of a series of instructions designed to perform a specific
set of operations.
3. Paragraph-names are coded in Area A
while all other PROCEDURE DIVISION entries are coded in Area B.
4. Paragraph-names preferably are coded on
lines by themselves and must end with a period.
5. Rules for forming paragraph-names are
the same as those for forming data-names, except that a paragraph-name can
contain all digits.
6. Paragraph-names must be unique.
7. Use descriptive paragraph-names along
with a numeric prefix.
B. Statements within Paragraphs
1. Each paragraph in a COBOL program
consists of statements.
2. A statement begins with a verb (READ,
MOVE, WRITE, ADD, etc.) or a condition (IF A = B).
3. Statements are coded in Area B.
4. Statements that end with a period are
called sentences.
5. Typically only the last statement in a
paragraph ends with a period.
6. Statements may be written in paragraph
form, but it is recommended that each statement be coded on a separate line.
C. The Sequence of Instructions in a
Program
1. Statements are executed in the order
written unless control of the program is transferred to another paragraph in
the program.
2. The PERFORM instruction is normally
used to temporarily transfer control from one paragraph to another.
D. The Top-Down Approach for Coding
Paragraphs
1. Well-designed programs are written
using a top-down approach.
2. The main module is developed first and
subsequent modules are coded from the major level to the detail level.
III.
Statements Typically Coded in the
Main Module
A. OPEN Statement
1. The OPEN statement has the following functions:
a. Indicates which files will be input and
which will be output.
b. Makes the files available for
processing.
c. Performs header label routines if label
records are STANDARD.
2. Coding guidelines for the OPEN
statement:
a. Each file to be opened should appear on
a separate line.
b. Indent so that the words INPUT and
OUTPUT are aligned. Indent other entries
four spaces.
B. PERFORM UNTIL ... END-PERFORM
Statement: A Structured Programming
Technique
1. A PERFORM UNTIL ... END-PERFORM is
called an in-line PERFORM.
2. The in-line PERFORM executes the
statements within the PERFORM UNTIL ... END-PERFORM loop.
a. This sequence of instructions is
executed repeatedly until the condition specified in the UNTIL clause is
met.
b. When the condition is met, control
returns to the statement directly following the END-PERFORM.
3. The condition used to terminate the
PERFORM UNTIL ... END-PERFORM should be one that is eventually reached within
the loop.
4. The conditional test within a PERFORM
UNTIL ... END-PERFORM is made prior to the process being executed. Thus, it is possible that the loop will never
be executed (if the condition is met initially).
C. READ statement
1. The primary function of the READ
statement is to transmit one data record to the input area reserved for the
file.
2. The file-name specified in the READ
statement also appears in:
a. The SELECT statement.
b. The FD entry.
c. The OPEN statement.
3. If a RECORD CONTAINS clause is
included, the READ statement checks the length of each input record to ensure
that it corresponds to the length specified in the RECORD CONTAINS clause.
4. The READ statement checks the blocking
factor if a BLOCK CONTAINS clause was used.
5. The AT END clause tests to determine if
there are more input records to be processed and specifies what to do if there
is no more input.
6. When a record is successfully read, the
NOT AT END clause, if coded, is executed.
7. An END-READ clause is used to terminate
the READ statement.
8. All programs in this text are coded
using the following format:
PERFORM UNTIL ...
READ file-name
AT END
MOVE ’NO ’ TO
ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM paragraph-name
END-READ
.
.
.
END-PERFORM
D. More on PERFORM Statements
1. A simple PERFORM statement will execute
a routine one time.
2. With a simple PERFORM, control
transfers to another paragraph, the instructions are executed within that
paragraph, and control returns to the statement following the PERFORM.
3. The types of PERFORM statements
discussed so far:
a. PERFORM paragraph-name UNTIL condition
b. In-line PERFORM
c. Simple PERFORM
E. End-of-Job Processing: The CLOSE and
STOP RUN Statements
1. Two statements which are part of an
end-of-job routine are:
a. The CLOSE statement
b. The STOP RUN statement
2. The CLOSE statement releases the files
and deactivates the devices to which they are assigned. Every file used by the program should be
closed.
3. The CLOSE statement will create a
trailer label on a disk file with standard labels.
4. The STOP RUN instructs the computer to
terminate the program.
5. With COBOL 85, a STOP RUN statement
will also close any files that are still open.
IV. Statements
Typically Coded for Processing Interactive Programs
A. Display
1. Output to screen
2. Prompts and other output
B. Accept
1. Input from the keyboard
2. Input is put in field defined in
WORKING-STORAGE SECTION
V. Statements Typically Coded for
Processing Batch Files
A. Simplified MOVE Statement
1. The simple MOVE statement copies the
contents of a field (sending field) in storage to another field (receiving
field).
2. The sending field in a MOVE statement
remains unchanged.
B. WRITE Statement
1. The WRITE statement transmits data
stored in the output area of the DATA DIVISION to the device specified in the
ENVIRONMENT DIVISION.
2. It is important to note that we READ
files and WRITE records.
VI. Looking Ahead
A. The four basic arithmetic verbs listed
below are briefly introduced in this chapter.
They are thoroughly covered in Chapters 7 and 8.
1. ADD
2. SUBTRACT
3. MULTIPLY
4. DIVIDE
B. The basic conditional verb is the IF
... ELSE ... END-IF statement.
VII. Comparing
Batch and Interactive Programs
A. Batch
1. Uses Files
2. Uses READ and WRITE
B. Interactive
1. Uses Keyboard and Screen
2. Uses ACCEPT and DISPLAY
VIII. Review of Comments in COBOL
A. An asterisk (*) in column 7 of any line
makes the entire line a comment.
B Comments should be used freely to make
a program easier to understand.
C. Use comments in the IDENTIFICATION
DIVISION to describe the program.
D Use comments in the PROCEDURE DIVISION
to describe the function of
each
module.
IX. Year
2000-Compliant Date Fields
A.
The Source of the Year 2000 Problem
The Year 2000 (Y2K) Problem occurred
because older programs used two-digit year codes rather than four-digit year
codes.
B.
Why
was This a Problem?
1.
A
two-digit year of 49 could refer to 1949 or 2049 – how is a program to know?
2.
Programs
that used two-digit years in calculations would have begun to produce errors in
the year 2000.
C.
How
did Companies Solve This Problem?
1.
Many
companies have chosen to recreate their data files so that each date field
contains a four-digit year. In addition
to recreating the files, the companies must also update all programs that
operate on these updated files.
2.
Other
companies have instead decided to maintain the two-digit year codes and use a
formula to process them. This, however,
is only a temporary fix.
SOLUTIONS TO REVIEW
QUESTIONS
I. True-False Questions
1. F Reading
and processing takes place in the PROCEDURE DIVISION.
2. T
3. T
4. T
5. F The
test is first. It is possible to not
perform the code at all.
6. T
7. F WRITE RECORD-name
8. T
9. T
10. T
II. General Questions
1.
|
Entry |
Division |
Purpose |
a. |
DATE-COMPILED |
IDENTIFICATION |
Indicates the date of the compilation. |
b. |
WORKING-STORAGE SECTION |
DATA |
Defines and describes all fields not part of
input or output files. |
c. |
paragraph-name |
IDENTIFICATION or PROCEDURE or ENVIRONMENT |
Defines a separate group of ENVIRONMENT
statements or sentences; same as a module or routine in the PROCEDURE
DIVISION. |
d. |
FD |
DATA |
Describes a file. |
e. |
level numbers |
DATA |
Used to indicate the hierarchy of data within
a record. |
f. |
FILE SECTION |
DATA |
Includes a description of all input and output
files. |
g. |
SELECT |
ENVIRONMENT |
Defines a file and assigns it to a specific
device. |
h. |
AUTHOR |
IDENTIFICATION |
Indicates the programmer’s name |
i. |
STOP RUN |
PROCEDURE |
Terminates the program. |
j. |
AT END clause |
PROCEDURE |
Indicates what is to be done when there are no
more input records to read. |
k. |
VALUE |
DATA |
Initializes a data field in WORKING-STORAGE. |
l. |
PICTURE |
DATA |
Indicates the size and type of data in a
field. |
m. |
FILE-CONTROL |
ENVIRONMENT |
Describes the files and devices to be used. |
n. |
OPEN |
PROCEDURE |
Opens input and output files and activates
them for processing. |
2. The SELECT statement assigns the device
to the file used in the READ statement.
3. To activate and deactivate the device on
which the files are located.
4. When we want fields to have initial
values.
5. a. Valid
b. Invalid MOVE is a reserved word.
c. Valid
d. Invalid Special characters (%) are not
permitted in paragraph
names.
6. The AT END clause is required whenever
reading a sequential file. The computer
must be told what to do when there are no more records to process. The NOT AT END clause allows the programmer
to specify what should be done when a record is successfully read.
7. DISPLAY
'ENTER AMOUNT'.
8. It should have a V.
9. DISPLAY
'TOTAL IS' TOTAL.
10. The WORKING-STORAGE SECTION.
III. Interpreting Instruction Formats
1. Incorrect. Only one file may be specified in a READ.
2. Incorrect. The OPEN statement must specify if a
particular file is to be used for input or output. Also, the word AND is not permitted.
3. Incorrect. The AT END clause is used with the READ
statement.
4. Correct.
5. Incorrect. The CLOSE does not specify whether a file was
used for input or output.
6 Incorrect. Only one item may be ACCEPTed.
7. Correct.
8. Correct.
9. Incorrect. INPUT is not used with ACCEPT.
10. Correct.
IV. Internet/Critical Thinking Questions
1.
Search
Engine: hotbot.com
Keywords: interactive
vs batch processing
URL:
http://www.maxpress.com/encyclopedia/batchint.htm
Contents: Batch vs. Interactive
Processing
Search Engine: altavista.com
URL: http://www.brs.net/yskim/gen/on-bat.htm
Contents: Online
vs. Batch Processing
2.
Search
Engine: altavista.com
Keywords: Y2K Problem
URL: http://www.compinfo.co.uk/y2k.htm
Contents: Links
to Y2K Web Sites
Search
Engine: yahoo.com>Computers
& Internet>History>Year 2000 Problem
Contents: Links
to Y2K Web Sites
SOLUTIONS TO DEBUGGING
EXERCISES
1. The OPEN statement does not indicate
which file is input and which is output.
The statement should be:
OPEN INPUT SALES-FILE
OUTPUT PRINT-FILE
2. The MOVE statement can only move
fields, not files. The statement should
be:
MOVE SALES-RECORD TO
PRINT-RECORD
3. The WRITE statement must specify a
record rather than a file. The statement
should be:
WRITE
PRINT-RECORD
4. The logic error is in paragraph
200-PROCESS-RTN. The MOVE and WRITE
statements are executed even when the READ statement detects that there are no
more input records. The routine should
be coded:
200-PROCESS-RTN.
READ SALES-FILE
AT END
MOVE ’NO ’ TO
ARE-THERE-MORE-RECORDS
NOT AT END
MOVE SALES-RECORD TO PRINT-RECORD
WRITE PRINT-RECORD
END-READ.
5. No.
Commas are optional in a COBOL program.
6. SALES-FILE was assigned to a device
using the SELECT statement in the ENVIRONMENT DIVISION.
7. Yes, this would cause an error because
the file is being processed sequentially.
The computer must be told what to do when the end of file is reached.
8. Paragraph-names
must end with a period.
9. Embedded blanks are not allowed. Use 100-MAIN.
10. Quotes are needed. Use DISPLAY
'ENTER SALES AMOUNT'.
11. Embedded blanks are not allowed. Use SALES-AMT.
12. DISPLAY
'COMMISSION IS', COMMISSION.
13. Quotes are needed. Use DISPLAY
'IS THERE MORE DATA (YES/NO)?'.
14. PIC 999V99 is OK.
123.45 for SALES-AMT is OK when data
is entered interactively.
PIC for COMMISSION should be 999.99.
SALES-AMT and COMMISION should be
defined in the WORKING-STORAGE
SECTION.