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

Keywords:                   interactive vs batch processing

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.