Structured COBOL
Programming
Nancy Stern
Hofstra University
Robert A. Stern
Nassau Community
College
PowerPoint Presentation:
Richard H. Baum, Ph.D.
DeVry Institute of Technology
“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.”
9th Edition
CHAPTER 13
Sequential File Processing
Structured COBOL Programming, Stern & Stern, 9th Edition
OBJECTIVES
• To familiarize you with:
1. Master file processing concepts.
2. Sequential update procedures using
disk as a master file.
3. How sequential disk files may be
updated in place with a REWRITE
statement.
Structured COBOL Programming, Stern & Stern, 9th Edition
CONTENTS
• Systems Overview of Sequential File
Processing
– Master Files
– Typical Master File Procedures: A Systems
Overview
• Sequential File Updating - Creating a New
Master File
– The Files Used
– The Ordering of Records for Sequential
Updates
– The Procedures Used for Sequential Updates
– Self-Test
Structured COBOL Programming, Stern & Stern, 9th Edition
CONTENTS
• Validity Checking in Update Procedures
– Checking for New Accounts
– Checking for Delete Codes and Deleting
Records from a Sequential Master File
– Checking for Sequence Errors
• Update Procedures with Multiple
Transaction Records for Each Master
Record
Structured COBOL Programming, Stern & Stern, 9th Edition
CONTENTS
• Sequential File Updating - Rewriting
Records on a Disk
– The REWRITE Statement for a Disk File
Opened as I-O
– Using an Activity-Status Field for Designating
Records to Be Deleted
– The EXTEND Option for Adding Records to the
End of a Sequential File
Structured COBOL Programming, Stern & Stern, 9th Edition
SYSTEMS OVERVIEW OF
SEQUENTIAL FILE
PROCESSING
Structured COBOL Programming, Stern & Stern, 9th Edition
Master Files
• In most companies, a master file will be
stored on a magnetic disk.
• The features of magnetic media such as
disk that make it ideally suited for storing
master file data include the following:
1. Disks can store billions of characters.
2. Disk drives can read and write data very
quickly.
3. Disk records can be any size.
Structured COBOL Programming, Stern & Stern, 9th Edition
Master Files
• Although tapes were once used for
storing files, most companies today use
disks because disks are more versatile.
• A tape is more often used for backing up
a file in case the original disk file
becomes unusable.
– One main reason why tapes are not as
prevalent as disks for master file processing is
that tapes can be accessed only sequentially,
thus limiting their usefulness.
Structured COBOL Programming, Stern & Stern, 9th Edition
Master Files
• Disk files, however, can be organized for
either sequential or random access.
• If a master file is always processed
sequentially, it may be stored on either
disk or tape.
• But if a file needs to be read, or
processed, randomly, or in some
sequence that cannot be predetermined,
then it would be stored on disk and
organized for random access.
Structured COBOL Programming, Stern & Stern, 9th Edition
Typical Master File
Procedures
Structured COBOL Programming, Stern & Stern, 9th Edition
Designing a Master File
• The following are elements to consider
when designing a master file:
1. The first field or fields should be key fields
that uniquely identify the record.
2. Where possible, key fields should consist of
numbers (e.g., Social Security Number rather
than Employee Name, Part Number rather
than Part Description, etc.).
3. Secondary key fields (e.g., Name) should
follow primary key fields in a record.
Structured COBOL Programming, Stern & Stern, 9th Edition
Designing a Master File
4. Fields should appear in a master file in order
of importance (e.g., Employee Name and
Address before Birth Date, etc.).
5. Be sure that fields are large enough to
accommodate the data (e.g., a 10- position
Last Name field, for example, is not likely to
be large enough).
6. Use coded fields where possible to save
space (e.g., codes are used for Marital Status,
Insurance Plan Option, etc.).
Structured COBOL Programming, Stern & Stern, 9th Edition
Creating a Master File
• When a new system is implemented, or
used for the first time, a master file must
be initially created.
– This procedure can be performed by entering
all master file data using a keyboard or other
data entry device.
• The data is then recorded on a disk, or
tape, which becomes the new master file.
– Creating a master file is a one-time
procedure. That is, once the master file is
created, changes to it are made by a different
procedure.
Structured COBOL Programming, Stern & Stern, 9th Edition
Creating a Master File
• The primary objective of a program that
creates a master file is ensuring data
integrity.
• A master file is only useful if it contains
valid and reliable data; hence, a creation
program must be designed so that it
minimizes input errors.
• When a master file is created, a control
listing or audit trail is also produced that
prints the data stored on the new master
file, and necessary control totals.
Structured COBOL Programming, Stern & Stern, 9th Edition
Creating a Transaction File
• After a master file is created, a separate
procedure is used to make changes to it.
• Change records are stored in a file
referred to as a transaction file, which is
also typically stored on disk.
– Changes to an accounts receivable master file
or changes to a payroll master file would
usually be stored in a disk transaction file.
• File design considerations, as specified
for master files, should be applied to the
transaction file as well.
– The transaction file should be validated to
ensure data integrity.
Structured COBOL Programming, Stern & Stern, 9th Edition
Updating a Master File
• The process of making a master file
current is referred to as updating.
– The master file is updated by incorporating
the changes from the transaction records.
• This chapter emphasizes techniques used
for performing sequential updates for
master files.
– Sequential updates that process transaction
records stored in sequence in a file, rather
than entered randomly and processed
interactively, are accomplished via batch
processing.
Structured COBOL Programming, Stern & Stern, 9th Edition
Reporting from a Master File
• The purpose of maintaining a master file
is to store data that will provide users
with meaningful output.
– Such output, which is generally in the form of
reports are frequently scheduled, which
means they are prepared on a regular basis.
• Sales reports, customer bills, and payroll
checks are examples of output from master
files that are prepared on a regularly scheduled
basis.
• Reports can also be prepared on demand.
That is, they are requested and produced
whenever the need arises.
Structured COBOL Programming, Stern & Stern, 9th Edition
SEQUENTIAL FILE UPDATING:
CREATING A NEW MASTER
FILE
Structured COBOL Programming, Stern & Stern, 9th Edition
The File Used
• Master files that have been designed and
created for sequential processing can be
updated by reading in the master file
along with a transaction file and creating
a new master file.
– This means that the sequential update
procedure uses three files.
• Most often, a fourth print file that
produces a control listing or audit trail is
created as well for printing all changes
made, any errors found, and totals.
– Any program written to update a master file
should create a control listing that specifies
all changes made to the master.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Files Used
Input Master File
• The input master file is current through
the previous updating period.
• That is, if updates are performed weekly,
the input master file is the file that was
created the previous week as the master.
• We call this file OLD-MASTER because it
does not contain changes that have
occurred since the previous update.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Files Used
Input Transaction File
• The transaction file contains data to be
used for updating the master file that we
call OLD-MASTER.
• The input transaction file contains all
changes that have occurred since OLDMASTER was created.
• We call this file TRANS-FILE.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Files Used
Output Master File
• The output master file becomes the new
master as a result of the updating
procedure.
• The output master file will integrate data
from the OLD-MASTER and the TRANSFILE. We call this file NEW-MASTER.
• Note that for the next week's update run,
this NEW-MASTER becomes OLD-MASTER.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Files Used
Control Listing or Audit Trail
• Recall that a print file or control listing is
usually created during a sequential file
update.
• Such a print file would list:
(1) changes made to the master file
(2) errors encountered during processing
(3) totals to be used for control and checking
purposes.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Ordering of Records for
Sequential Updates
• OLD-MASTER contains master
information that was complete and
current through the previous updating
cycle.
• The TRANS-FILE contains transactions or
changes that have occurred since the
previous updating cycle.
– These transactions or changes must be
incorporated into the master file to make it
current.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Ordering of Records for
Sequential Updates
• The NEW-MASTER will include all OLDMASTER data in addition to the changes
stored on the TRANS-FILE that have
occurred since the last update.
• The NEW-MASTER will be on the same
medium (e.g., disk) as the OLD-MASTER,
since the current NEW- MASTER becomes
the OLD-MASTER for the next update
cycle.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Ordering of Records for
Sequential Updates
• In a sequential master file, all records are
in sequence by a key field, depending on
the type of master file, such as account
number or social security number)
– This key field uniquely identifies each master
record.
• We compare the key field in the master to
the same key field in the transaction file
to determine if the master record is to be
updated;
– This comparison requires both files to be in
sequence by the key field.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Use of HIGH-VALUES
for End-of-File Conditions.
• HIGH-VALUES means ``all bits on,'' which
is not a printable character and which has
a nonnumeric value greater than all 9s.
• Using it on an end-of-file condition will
ensure correct file handling regardless of
the actual values that the account
numbers can assume.
• This is because an incoming account
number will always compare ``less than''
HIGH-VALUES.
Structured COBOL Programming, Stern & Stern, 9th Edition
QUESTIONS?
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
1. What do we call the major collection of
data pertaining to a specific application?
Solution: A master file
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
2. Changes to be made to a master file are
placed in a separate file called a ____ file.
Solution: transaction
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
3. In a sequential update procedure, we
use three files called ____ , ____ , and
____ .
Solution: the old master file - current
through the previous updating cycle; the
transaction file; the new master file which incorporates the old master data
along with the transaction data
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
4. ( T or F ) In a sequential update
procedure, all files must be in sequence
by the same key field.
Solution: T
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
5. In a sequential update procedure, the
key field in the transaction file is
compared to the key field in the ____ .
Solution: old master file
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
6. In Question 5, if the key fields are equal,
a ____ procedure is performed. Describe
this procedure.
Solution: regular update; transaction data
is added to the master data, a new
master record is written, and records
from the old master file and the
transaction file are read.
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
7. In Question 5, if the transaction key field
is greater than the master key field, a
____ procedure is performed. Describe
this procedure.
Solution: no update; a new master record
is created directly from the old master
record and a record from the old master
file is read.
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
8. In Question 5, if the transaction key field
is less than the master key field, a ____
procedure is performed. Describe this
procedure.
Solution: new account or error; if it is a
new account, move transaction data to
the new master and write; if it is an error,
an error message is printed. In either
case, a transaction record is then read.
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
9. The statement READ TRANS-FILE AT END
MOVE HIGH-VALUES TO T-ACCT- NO
moves ____ if there are no more records
in TRANS-FILE. To contain HIGH-VALUES,
T-ACCT-NO must be defined with a PIC of
____ .
Solution: a value of all bits on to the TACCT-NO field. (Any subsequent
comparison of T-ACCT-NO to an actual MACCT-NO will cause a ``>'' condition); Xs
because HIGH-VALUES is a nonnumeric
figurative constant.
Structured COBOL Programming, Stern & Stern, 9th Edition
SELF-TEST
10. ( T or F ) Disk files can be created for
either sequential or random access.
Solution: T
Structured COBOL Programming, Stern & Stern, 9th Edition
VALIDITY CHECKING IN
UPDATE PROCEDURES
Structured COBOL Programming, Stern & Stern, 9th Edition
Checking for New Accounts
• To verify that a TRANS-REC is a new
account, we usually include a coded field
in the TRANS-REC itself that specifies the
record as a new account. For example:
1-5
T-ACCT-NO
6-11 AMT-TRANS-IN-CURRENT-PER 9999V99
12-99 FILLER
100 CODE-IN (1 = NEW-ACCT; 2 = REGULARUPDATE)
– Thus, if T-ACCT-NO IS LESS THAN M-ACCTNO, we would process the transaction record
as a new account only if it also contains a 1 in
CODE-IN.
Structured COBOL Programming, Stern & Stern, 9th Edition
Checking for Delete Codes and
Deleting Records from a
Sequential Master File
• One type of update function not
considered in our previous illustrations is
that of deleting master records.
• Since accounts may need to be deleted if
customers give up their charge privileges
or have not paid their bills, there must be
some provision for eliminating specific
records from the master file during an
update.
Structured COBOL Programming, Stern & Stern, 9th Edition
Checking for Delete Codes and
Deleting Records from a
Sequential Master File
• We may use the technique of a coded
transaction field as described earlier to
accomplish this. We could add a code of
'3' to indicate that a record is to be
deleted. For example:
1-5
T-ACCT-NO
6-11 AMT-TRANS-IN-CURRENT-PER 9999V99
12-99 FILLER
100 CODE-IN (1 = NEW-ACCT; 2 = UPDATECODE; 3 = DELETE-THE-RECORD)
Structured COBOL Programming, Stern & Stern, 9th Edition
SUMMARY: How Transaction
Records Are Processed
A. T-KEY = M-KEY
1. Delete the master record if T-CODE indicates
deletion.
2. Change or update the master record if TCODE indicates update.
3. Process the transaction record as an error if
T-CODE indicates new record.
Structured COBOL Programming, Stern & Stern, 9th Edition
SUMMARY: How Transaction
Records Are Processed
B. T-KEY < M-KEY
1. Add the transaction record to the master file
if T-CODE indicates a new record.
2 . Process the transaction record as an error if
T-CODE does not indicate a new record.
C. T-KEY > M-KEY
1. Rewrite the master record as is.
Structured COBOL Programming, Stern & Stern, 9th Edition
UPDATE PROCEDURES WITH
MULTIPLE TRANSACTION
RECORDS FOR EACH MASTER
RECORD
Structured COBOL Programming, Stern & Stern, 9th Edition
Update Procedures for
Multiple Transactions
• The following is the Procedure Division
for updating a file where multiple
transactions per master record are
permitted.
100-MAIN-MODULE.
PERFORM 800-INITIALIZATION-RTN
PERFORM 200-COMP-RTN
UNTIL M-ACCT-NO-IN = HIGH-VALUES
AND
T-ACCT-NO-IN = HIGH-VALUES
PERFORM 900-END-OF-JOB-RTN
STOP RUN.
Structured COBOL Programming, Stern & Stern, 9th Edition
Update Procedures for
Multiple Transactions
200-COMP-RTN.
EVALUATE TRUE
WHEN T-ACCT-NO-IN = M-ACCT-NO-IN
PERFORM 300-REGULAR-UPDATE
WHEN T-ACCT-NO-IN < M-ACCT-NO-IN
PERFORM 400-NEW-ACCOUNT
WHEN OTHER
PERFORM 500-NO-UPDATE
END-EVALUATE.
Structured COBOL Programming, Stern & Stern, 9th Edition
Update Procedures for
Multiple Transactions
300-REGULAR-UPDATE.
MOVE OLD-MASTER-REC-IN TO
NEW-MASTER-REC-OUT
PERFORM 550-ADD-AND-READ-TRANS
UNTIL
T-ACCT-NO-IN NOT = M-ACCT-NO-IN
WRITE NEW-MASTER-REC-OUT
PERFORM 600-READ-MASTER.
Structured COBOL Programming, Stern & Stern, 9th Edition
Update Procedures for
Multiple Transactions
400-NEW-ACCOUNT.
MOVE SPACES TO NEW-MASTER-REC-OUT
MOVE T-ACCT-NO-IN TO ACCT-NO-OUT
MOVE AMT-TRANS-IN TO AMOUNT-DUE-OUT
WRITE NEW-MASTER-REC-OUT
PERFORM 700-READ-TRANS.
500-NO-UPDATE.
WRITE NEW-MASTER-REC-OUT
FROM OLD-MASTER-REC-IN
PERFORM 600-READ-MASTER.
550-ADD-AND-READ-TRANS.
ADD AMT-TRANS-IN TO AMOUNT-DUE-OUT
PERFORM 700-READ-TRANS
Structured COBOL Programming, Stern & Stern, 9th Edition
Update Procedures for
Multiple Transactions
600-READ-MASTER.
READ OLD-MASTER-IN
AT END MOVE HIGH-VALUES
TO M-ACCT-NO-IN
END-READ.
700-READ-TRANS.
READ TRANS-FILE-IN
AT END MOVE HIGH-VALUES
TO T-ACCT-NO-IN
END-READ.
Structured COBOL Programming, Stern & Stern, 9th Edition
Update Procedures for
Multiple Transactions
800-INITIALIZATION-RTN.
OPEN INPUT
OLD-MASTER-IN
TRANS-FILE-IN
OUTPUT NEW-MASTER-OUT
PERFORM 600-READ-MASTER
PERFORM 700-READ-TRANS.
900-END-OF-JOB-RTN.
CLOSE OLD-MASTER-IN
TRANS-FILE-IN
NEW-MASTER-OUT.
Structured COBOL Programming, Stern & Stern, 9th Edition
The Balanced Line Algorithm for
Sequential File Updating
• Another alternative for updating a master
file with any number of transactions and
checks for a variety of error conditions is
a technique called the balanced line
algorithm.
• This method is viewed by many as the
most efficient and effective sequential file
updating method.
– The version of the balanced line algorithm
illustrated in the text has been described by
Barry Dwyer in an article entitle "One More
Time--How to Update a Master File" ACM, vol.
24, no.1 (January, 1981), pp. 3-8
Structured COBOL Programming, Stern & Stern, 9th Edition
SEQUENTIAL FILE UPDATING:
REWRITING RECORDS ON A
DISK
Structured COBOL Programming, Stern & Stern, 9th Edition
The REWRITE Statement for a
Disk File Opened as I-O
• Both disk and tape can be organized
sequentially and both can use sequential
update procedures.
• Disks, however, unlike tape, can serve as
both input and output during the same
run. Thus, it is possible to read a disk
record, make changes directly to the
same record, and rewrite it or update it in
place.
– A disk file, for example MASTER FILE, can be
opened as I-O, which means records from the
disk will be accessed, read, changed, and
rewritten:
OPEN I-O MASTER-FILE
Structured COBOL Programming, Stern & Stern, 9th Edition
Using an Activity-Status Field
for Designating Records to be
Deleted
• If a sequential disk file is to be updated
by rewriting records directly on it, we
need a different procedure for deleting
records.
• One common technique is to begin each
record with a one-character activitystatus code that precedes the key field.
– The activity-status code would have a specific
value for active records, and a different value
if the record is to be deactivate.
Structured COBOL Programming, Stern & Stern, 9th Edition
CODED FIELDS TO DESIGNATE
RECORDS AS ACTIVE OR
INACTIVE
1. Include an ACTIVITY-STATUS code as
the first position in the record.
2. Set the ACTIVITY-STATUS code to a
value designating the record as active.
3. Change the ACTIVITY-STATUS code to a
value designating the record as inactive
only if it is to be deleted.
4. Before printing or other processing,
check first to see if the record is active.
Structured COBOL Programming, Stern & Stern, 9th Edition
The EXTEND Option
• Records may be added to the end of a
sequential disk (or tape) file by using the
following OPEN statement:
OPEN EXTEND file-name
• When the OPEN EXTEND statement is
executed, the disk pointer is positioned at
the end of the file, immediately after the
last record.
Structured COBOL Programming, Stern & Stern, 9th Edition
The EXTEND Option
• A WRITE statement, then, will add
records to the end of this file.
– If all records to be added have key fields in
sequence that are greater than those
currently on the master, then the entire file
will be in the correct order.
• If the records that are added are not in
sequence, the file must be sorted before
it is processed again.
Structured COBOL Programming, Stern & Stern, 9th Edition
The EXTEND Option
• The following is a chart of permissible
input/output statements depending on
how a sequential file was opened:
Statement INPUT OUTPUT I-O EXTEND
READ
WRITE
X
X
X
REWRITE
Structured COBOL Programming, Stern & Stern, 9th Edition
X
X
CHAPTER SLIDES END HERE
CHAPTER SUMMARY COMES NEXT
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY
A. Sequential updating by creating a new
master.
• Use three files: an incoming master file, a
transaction file with change records, and
a new output master file that will
incorporate all the changes.
• Use these techniques:
1. All files to be processed must be in sequence
by the same key field.
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY
2. A record is read from each file and
specified routines are performed
depending on whether or not the key
fields match.
3. The transaction record could have a
coded field to determine:
a. What type of update is required.
b. If the master record is to be deleted.
c. If the transaction is a new account.
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY
4. The end-of-job test for each file must be
processed individually.
• By moving HIGH-VALUES to the key field
of the file that ends first, we can be
assured that the other file will always
compare low and hence will continue to
be processed.
• The job is terminated only after both
input files have been processed. HIGHVALUES can only be moved to a key field
that has been defined as alphanumeric.
Structured COBOL Programming, Stern & Stern, 9th Edition
CHAPTER SUMMARY
B. Sequential updating by rewriting a disk.
• As an alternative to the preceding,
records on a sequential disk can also be
updated by rewriting them in place, if the
disk file is opened as I-O.
– A backup file should always be created in this
case.
C. Records can be added to the end of a
disk file if we code OPEN EXTEND filename.
Structured COBOL Programming, Stern & Stern, 9th Edition