Structured COBOL Programming
Nancy Stern Hofstra University Robert A. Stern
Copyright @ 2000 John Wiley & Sons, In. All rights reserved. Reproduction or translation of this work beyond that permitted in Section 117 of the 1976 United States Copyright Act without the express permission of the copyright owner is unlawful. Request for further information should be addressed to the permissions Department , John Wily & Sons, Inc. The purchaser may make back-up copies for his/her own use only and not for distribution or resale. The Publisher assumes no responsibility for errors, omissions, or damages, caused by the use of these programs or from the use of the information contained herein.
Nassau Community College
PowerPoint Presentation: Richard H. Baum, Ph.D.
DeVry Institute of Technology
9th Edition
CHAPTER 4 Coding Complete COBOL Programs
A Closer Look at the PROCEDURE DIVISION and the PERFORM Statement
OBJECTIVES
To familiarize you with the methods used to:
1. Access input and output files.
2. Read data from an input file.
3. Perform simple move operations.
Structured COBOL Programming, Stern & Stern, 9th Edition
OBJECTIVES
4. Write information onto an output file. 5. Accomplish end-of-job operations. 6. Execute paragraphs from a main module and then return control to that main module.
Structured COBOL Programming, Stern & Stern, 9th Edition
CONTENTS
A REVIEW OF THE FIRST THREE DIVISIONS
THE FORMAT OF THE PROCEDURE DIVISION
Paragraphs that Serve as Modules Statements within Paragraphs The Sequence of Instructions in a Program The Top-Down Approach for Coding Paragraphs
Structured COBOL Programming, Stern & Stern, 9th Edition
CONTENTS
STATEMENTS TYPICALLY CODED IN THE MAIN MODULE OF BATCH PROGRAMS:
OPEN Statement
PERFORM UNTIL ... END-PERFORM Statement:
A Structured Programming Technique
Structured COBOL Programming, Stern & Stern, 9th Edition
CONTENTS
READ Statement More on PERFORM Statements End-of-Job Processing:
The CLOSE and STOP RUN Statements
Structured COBOL Programming, Stern & Stern, 9th Edition
CONTENTS
STATEMENTS TYPICALLY CODED FOR PROCESSING INPUT RECORDS AND PRODUCING OUTPUT RECORDS
Simplified MOVE Statement WRITE Statement
Looking Ahead Review of Comments in COBOL Year 2000-Compliant Date Fields
Structured COBOL Programming, Stern & Stern, 9th Edition
A REVIEW OF THE FIRST THREE DIVISIONS
The IDENTIFICATION and ENVIRONMENT DIVISIONs supply information about the nature of the program and the specific equipment and files.
The FILE SECTION of the DATA DIVISION defines the input and output records.
Structured COBOL Programming, Stern & Stern, 9th Edition
A REVIEW OF THE FIRST THREE DIVISIONS
The WORKING-STORAGE SECTION of the DATA DIVISION is used for defining any areas not part of input and output files. The instructions in the PROCEDURE DIVISION read and process the data and produce the output information.
Structured COBOL Programming, Stern & Stern, 9th Edition
THE FORMAT OF THE PROCEDURE DIVISION
PARAGRAPHS THAT SERVE AS MODULES
The PROCEDURE DIVISION is divided into paragraphs. Each paragraph is an independent module or routine that includes a series of instructions designed to perform a specific set of operations.
Structured COBOL Programming, Stern & Stern, 9th Edition
THE FORMAT OF THE PROCEDURE DIVISION
Paragraph-names, like the PROCEDURE DIVISION entry itself, are coded in Area A.
All other entries in the PROCEDURE DIVISION are coded in Area B.
Paragraph-names, like the PROCEDURE DIVISION entry, end with a period.
Structured COBOL Programming, Stern & Stern, 9th Edition
THE FORMAT OF THE PROCEDURE DIVISION
PARAGRAPHS THAT SERVE AS MODULES
Rules for forming paragraph-names are the same as rules for forming data-names except that a paragraph-name may have all digits.
Paragraph-names must be unique, meaning that two paragraphs may not have the same name. Similarly, a data-name cannot also serve as a paragraph-name.
Structured COBOL Programming, Stern & Stern, 9th Edition
Paragraphs That Serve as Modules
We will use descriptive paragraph-names along with a numeric prefix such as 200PROCESS-RTN to identify the type of paragraph.
A paragraph with a prefix of 200- is located after paragraph 100--XXX and before paragraph 300-- YYY.
Structured COBOL Programming, Stern & Stern, 9th Edition
Statements within Paragraphs
Each paragraph in a COBOL program consists of statements, where a statement begins with a verb such as READ, MOVE, or WRITE, or a condition such as IF A = B ....
As noted, all COBOL statements are coded in Area B whereas paragraph-names are coded in Area A.
Statements that end with a period are called sentences.
Structured COBOL Programming, Stern & Stern, 9th Edition
Statements within Paragraphs
With COBOL 85 only the last statement in a paragraph ends with a period.
With COBOL 74, each statement typically ends with a period.
Although statements can be written across the coding sheet in paragraph form, we recommend that each statement be coded on an individual line.
This makes programs much easier to read and debug.
Structured COBOL Programming, Stern & Stern, 9th Edition
THE SEQUENCE OF INSTRUCTIONS IN A PROGRAM
Instructions are typically executed in sequence unless a PERFORM statement is encountered. A PERFORM UNTIL ... END-PERFORM is a loop that repeatedly executes the included statements until the condition specified in the UNTIL clause is met. A PERFORM paragraph-name is an instruction that temporarily transfers control to another paragraph.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Top-Down Approach for Coding Paragraphs
Well-designed programs are written using a top-down approach. This means that the main module is coded first
subsequent modules are coded from the major level to the detail level.
Endeavor to code the more general paragraphs first and end with the most detailed ones.
Structured COBOL Programming, Stern & Stern, 9th Edition
STATEMENTS TYPICALLY CODED IN THE MAIN MODULE OF BATCH PROGRAMS
Structured COBOL Programming, Stern & Stern, 9th Edition
OPEN Statement
The OPEN statement accesses the files in a program and indicates which are input and which are output. It has the following instruction format: Format
OPEN INPUT file-name-1 . . .
OUTPUT file-name-2 . . .
Structured COBOL Programming, Stern & Stern, 9th Edition
OPEN STATEMENT
A REVIEW OF INSTRUCTION FORMAT SPECIFICATIONS
1. Uppercase words are COBOL reserved words. 2. Underlined words are required in the statement or option specified.
3. Lowercase entries are user-defined words.
4. Braces { } denote that one of the enclosed items is required.
Structured COBOL Programming, Stern & Stern, 9th Edition
OPEN STATEMENT
A REVIEW OF INSTRUCTION FORMAT SPECIFICATIONS
5. Brackets [ ] denote that the enclosed item is optional. 6. Punctuation, when included in the format, is required.
7. The use of three dots or ellipses (. . .) indicates that additional entries of the same type (a file-name in this case) may be repeated if desired.
Structured COBOL Programming, Stern & Stern, 9th Edition
OPEN STATEMENT
FUNCTIONS OF THE OPEN STATEMENT
1. Indicates which files will be input and which will be output.
2. Makes the files available for processing. 3. Performs header label routines if label records are STANDARD.
Structured COBOL Programming, Stern & Stern, 9th Edition
OPEN STATEMENT
DEBUGGING TIPS: CODING GUIDELINES
2. Indent each line within an OPEN sentence.
This makes a program more readable.
For the OPEN sentence, we typically indent so that the words INPUT and OUTPUT are aligned. For other entries we indent four spaces.
Structured COBOL Programming, Stern & Stern, 9th Edition
OPEN STATEMENT
DEBUGGING TIPS: CODING GUIDELINES
AN EXAMPLE:
OPEN INPUT
OLD-MASTER-IN
TRANS-FILE
OUTPUT NEW-MASTER-OUT
ERROR-LIST.
Structured COBOL Programming, Stern & Stern, 9th Edition
OPEN STATEMENT
DEBUGGING TIPS: CODING GUIDELINES
For output disk files, the ASSIGN clause of a SELECT statement often specifies the name the file is to be saved as:
SELECT SALES-FILE ASSIGN TO DISK DATA100.
Structured COBOL Programming, Stern & Stern, 9th Edition
PERFORM UNTIL . . . END-PERFORM Statement: A Structured Programming Technique
The basic instruction format of the PERFORM UNTIL ... END- PERFORM statement is as follows:
PERFORM
UNTIL condition-1
. . .
[END-PERFORM]* COBOL 85 only
Structured COBOL Programming, Stern & Stern, 9th Edition
READ Statement
Typically, after an input file has been opened, the PERFORM ... END-PERFORM loop, which begins with a READ, is executed.
A READ statement transmits data from the input device, assigned in the ENVIRONMENT DIVISION, to the input storage area, defined in the FILE SECTION of the DATA DIVISION.
Structured COBOL Programming, Stern & Stern, 9th Edition
READ Statement
The following is a partial instruction format for a READ statement: Format
READ file-name-1
AT END statement-1 . . . [NOT AT END statement-2 . . .] [END-READ]* COBOL 85 ONLY
Structured COBOL Programming, Stern & Stern, 9th Edition
READ Statement
The file-name specified in the READ statement appears in three previous places in the program:
1. The SELECT statement, indicating the filename and the device or implementor-name assigned to the file.
If a file is stored on a disk, for example, a READ operation transmits data from the disk to the input area.
2. The FD entry, describing the file and its format.
Structured COBOL Programming, Stern & Stern, 9th Edition
READ Statement
3. The OPEN statement, accessing the file and activating the device.
The primary function of the READ statement is to transmit one data record to the input area reserved for that file.
Each time a READ statement is executed, one record is read into primary storage - not the entire file.
Structured COBOL Programming, Stern & Stern, 9th Edition
DEBUGGING TIP
Code the AT END and NOT AT END clause on separate lines and indent them for readability.
If an error occurs, you will be able to more easily identify the problem because the line number of the error is specified.
Structured COBOL Programming, Stern & Stern, 9th Edition
QUESTIONS?
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
1. The PROCEDURE DIVISION is divided into ______ each of which contains ______ .
Solution: modules, routines or paragraphs; sentences or instructions or statements
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
2. Statements are executed in the order ______ unless a ______ occurs.
Solution: in which they appear; PERFORM
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
3. Before a file may be read, it must be ________ .
Solution: opened
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
4. The PERFORM UNTIL (condition) ... END- PERFORM executes _____ . When the condition specified is met, control returns to the _______ .
Solution: all the instructions within the PERFORM ... END-PERFORM loop; statement directly following the PERFORM ... END-PERFORM loop
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
5. In the statement PERFORM . . . UNTIL EOF = 1, EOF should be initialized at _____ .
Write the required WORKING-STORAGE entries for defining and initializing EOF.
Solution: 0 --- Actually any other value but 1: WORKING-STORAGE SECTION. 01 WS-STORED-AREAS. 05 EOF PIC 9 VALUE 0.
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
6. In a COBOL 85 PERFORM UNTIL . . . END-PERFORM in-line main processing loop, the first instruction within the loop is typically a _____ statement.
Solution: READ
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
7. The basic format for a READ within a PERFORM UNTIL loop for COBOL 85 is _____ .
Solution: READ . . . AT END . . . NOT AT END . . . END-READ.
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
8. The NOT AT END clause of a READ statement in COBOL 85 is executed when _____ .
Solution: a record has been successfully read
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
9. Typically the NOT AT END clause in COBOL 85 includes a _____ statement.
Solution: PERFORM
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
10. In COBOL 85, END-PERFORM and END-READ are called _____ because they terminate the range of the PERFORM and READ statements, respectively.
Solution: scope terminators
Structured COBOL Programming, Stern & Stern, 9th Edition
End-of-Job Processing: The CLOSE and STOP RUN Statements
The CLOSE Statement
Files must be accessed or activated by an OPEN statement before data may be read or written.
Similarly, a CLOSE statement is coded at the end of the job after all records have been processed to release these files and deactivate the devices.
Structured COBOL Programming, Stern & Stern, 9th Edition
End-of-Job Processing: The CLOSE and STOP RUN Statements
The format of the CLOSE is:
CLOSE file-name-1 . . .
Structured COBOL Programming, Stern & Stern, 9th Edition
End-of-Job Processing: The CLOSE and STOP RUN Statements
The STOP RUN Statement
The STOP RUN instruction tells the computer to terminate the program.
All programs should include a STOP RUN statement to end the run. The STOP RUN is usually the last instruction in the main module.
Structured COBOL Programming, Stern & Stern, 9th Edition
STATEMENTS TYPICALLY CODED FOR PROCESSING INPUT RECORDS AND PRODUCING OUTPUT RECORDS
Structured COBOL Programming, Stern & Stern, 9th Edition
Simplified MOVE Statement
A simple MOVE statement has the following basic instruction format: MOVE identifier-1 TO identifier-2 Fields in main memory may be moved to other fields with the use of the MOVE instruction.
The word ``identifier'' means ``data-name''.
Structured COBOL Programming, Stern & Stern, 9th Edition
WRITE Statement
The WRITE instruction takes data in the output area defined in the DATA DIVISION and transmits it to the device specified in the ENVIRONMENT DIVISION.
A simple WRITE statement has the following format:
WRITE record-name-1
Structured COBOL Programming, Stern & Stern, 9th Edition
WRITE Statement
Format
WRITE record-name-1
Note that although files are read, we write records.
The record-name appears on the 01 level and is generally subdivided into fields. The record description specifies the format of the output.
With each WRITE instruction, we tell the computer to write data that is in the output area.
Structured COBOL Programming, Stern & Stern, 9th Edition
LOOKING AHEAD: AN INTRODUCTION TO ARITHMETIC and CONDITIONAL verbs
Structured COBOL Programming, Stern & Stern, 9th Edition
The four basic arithmetic verbs have the following simple formats::
ADD {identifier-1} {literal-1} TO identifier-2 SUBTRACT {identifier-1} {literal-1} FROM identifier-2
MULTIPLY {identifier-1} {literal-1} BY identifier-2 DIVIDE {identifier-1} {literal-1} INTO identifier-2
Structured COBOL Programming, Stern & Stern, 9th Edition
The basic instruction format for a conditional IF is as follows: Format IF condition-1
[THEN] imperative-statement-1. . . [ELSE imperative-statement-2 . . .]
[END-IF]
*Note that the ELSE clause is optional. Numerous statements can follow each IF or ELSE clause.
Structured COBOL Programming, Stern & Stern, 9th Edition
The simple conditions that can be tested are as follows: (identifier-1)
= (or IS EQUAL TO)
< (or IS LESS THAN)
identifier-2
literal-1
> (or IS GREATER THAN)
Structured COBOL Programming, Stern & Stern, 9th Edition
REVIEW OF COMMENTS IN COBOL
Structured COBOL Programming, Stern & Stern, 9th Edition
COMMENTS IN COBOL An asterisk (*) in column 7 (the continuation position) of any line makes the entire line a comment Use comments freely to make your program user-friendly and easier to understand.
Structured COBOL Programming, Stern & Stern, 9th Edition
Coding Guidelines for PROCEDURE DIVISION Entries
1. Each clause should be on a separate line indented for readability. For example:
READ ... AT END ... NOT AT END ... END-READ.
Structured COBOL Programming, Stern & Stern, 9th Edition
Coding Guidelines for PROCEDURE DIVISION Entries
2. Each paragraph-name should begin with a sequence number that helps to pinpoint the location of the paragraph:
a descriptive name should follow this number (e.g., 100-MAIN-MODULE, 200-CALC-RTN).
3. The last statement in a paragraph should always end with a period.
Structured COBOL Programming, Stern & Stern, 9th Edition
COBOL 2000+ CHANGES
You will be able to code comments on a line, even those with instructions:
*> will be used to add a comment to a line. After *> appears, characters to the end of the line will not be compiled.
Structured COBOL Programming, Stern & Stern, 9th Edition
YEAR 2000-COMPLIANT DATE FIELDS
Older, legacy programs, using only twodigit for the year, will no longer accurately depict the date beginning in the year 2000.
Problems associated with dates after this are referred to as the Year 2000 Problem or Y2K Problem.
Structured COBOL Programming, Stern & Stern, 9th Edition
YEAR 2000-COMPLIANT DATE FIELDS
Fixes for the Y2K problem are not all that difficult:
They are just costly and timeconsuming.
In addition to program source changes, all files on which they operate will also need to be modified.
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SLIDES END HERE
CHAPTER SUMMARY COMES NEXT
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY
Most programs illustrated or assigned as homework in this text will use the following structure (lowercase entries are user-defined names):
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY COBOL 85
PROCEDURE DIVISION. paragraph-name-1. OPEN INPUT file-name-1 OUTPUT file-name-2 PERFORM UNTIL ARE-THERE-MORERECORDS = 'NO
READ file-name-1 AT END MOVE 'NO ' TO ARETHERE-MORE-RECORDS NOT AT END PERFORM paragraph-name-2 END-READ END-PERFORM CLOSE file-name-1 file-name-2 STOP RUN.
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY
A. Paragraph-names are coded in Area A and end with a period.
Rules for forming paragraph-names are the same as for data-names except that a paragraph-name can have all digits. We use a prefix such as 100-, 200- , 300-, along with a descriptive name such as HEADING- RTN or MAIN-MODULE. A paragraph with a prefix of 200- is located after a paragraph with prefix 100and before a paragraph with prefix 300-.
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY B. All statements are coded in Area B.
We recommend coding one statement per line.
C. Instructions are executed in the order in which they appear unless a PERFORM statement executes a loop or transfers control.
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY D. When the main module's
PERFORM UNTIL ... END-PERFORM
is encountered, the loop specified is executed repeatedly until there are no more input records.
Structured COBOL Programming, Stern & Stern, 9th Edition