15-1 cobol for the 21 st century nancy stern hofstra university robert a. stern nassau community...

76
15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin- Stout (Emeritus) John Wiley & Sons, Inc. 11th edition

Upload: suzanna-gilbert

Post on 26-Dec-2015

225 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-1

COBOL for the 21st Century

Nancy Stern Hofstra University

Robert A. Stern Nassau Community College

James P. Ley University of Wisconsin-Stout (Emeritus)

John Wiley & Sons, Inc.11th edition

Page 2: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-2

Indexed and Relative File Processing

Chapter 15

Page 3: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-3

Chapter Objectives

• To familiarize you with• Methods of disk file organization• Random processing of disk files• How to create, update, and access

indexed disk files• How to create, update, and access

relative files• Methods used for organizing relative files

Page 4: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-4

Chapter Contents

• System Considerations for Organizing Disk Files

• Feature of Magnetic Disks and Disk Drives

• Processing Indexed Disk Files– Creating, updating, accessing for reporting

Page 5: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-5

Chapter Contents

• Additional Options for Indexed File Processing– ALTERNATE RECORD KEYS– START Statement– Dynamic Access– FILE STATUS Clause– Exception Handling

Page 6: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-6

Chapter Contents

• Using Indexed Disk File As External Table

• Processing Relative Disk Files

• Converting Key Field to RELATIVE KEY

Page 7: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-7

Disk File Organization

• File is collection of records

• Three major ways records stored or organized on disk

- Sequential File Organization

- Indexed File Organization

- Relative File Organization

Page 8: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-8

Sequential File Organization

• Records stored in order they are written to file

• Must be accessed in sequence - to access 50th record in file, must read past first 49

• Typically sorted into sequence by a key field

Page 9: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-9

Indexed File Organization

• Consists of two files– Data file - records in sequence– Index file - contains value of

• Each key field• Disk address of record with that corresponding

key field

• For random access, look up key field in index file to find address

• Then access record in data file directly

Page 10: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-10

Relative File Organization

• When records created, key field used to compute a disk address where record is written

• To randomly access records– User enters key field– Disk address computed from key field– Record then accessed directly

• No index needed

Page 11: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-11

Magnetic Disks, Disk Drives

• Storage media for data

• Can be accessed at very high speeds

• Have metal oxide coating that stores data as magnetized bits

• Disks may be floppy disk, hard disk or disk pack

Page 12: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-12

Magnetic Disks, Disk Drives

• Data stored in concentric circles on disk called tracks

• Disk drives have access arm with read/write head for accessing data– Access arm can be positioned over any

track on disk– Makes random access possible

Page 13: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-13

Addressing Disk Records

• Address individual records on disks by– Surface number - top or bottom side of disk– Track number– Sector (floppy disks) or cylinder (larger

units) number• Sector or cylinder is wedge-shaped section of

tracks

Page 14: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-14

Creating an Indexed File

• Records written in sequence by key field as for sequential disk file

• Once index file created, records can be accessed randomly

Page 15: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-15

SELECT Statement

SELECT file-name-1

ASSIGN TO implementor-name-1

[ORGANIZATION IS] INDEXED

[ACCESS MODE IS SEQUENTIAL]

RECORD KEY IS data-name-1

• SELECT to create indexed file

Format

Page 16: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-16

SELECT Statement

• ORGANIZATION INDEXED– Indicates index file to be created along with

data file– Index file must be established to be able to

randomly access file later

• ACCESS MODE SEQUENTIAL– Records written in sequence by key field– Optional since SEQUENTIAL is default

mode

Page 17: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-17

SELECT Statement

• RECORD KEY clause– Names key field within disk record used to

form index– Must be in same physical location in each

record (usually first field)– Value must be unique for each record– Best to use numeric field as key

Page 18: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-18

WRITE … INVALID KEY

• INVALID KEY clause required when writing indexed records to handle I/O errors– Key field not in sequence– Key field same as one already in file

• If error detected with WRITE– Record not written– Statement(s) following INVALID KEY

executed

Page 19: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-19

WRITE … INVALID KEY

WRITE record-name-1 [FROM identifier-1]

[INVALID KEY imperative-statement-1]

[NOT INVALID KEY imperative-statement-2]

[END-WRITE]

• Statement(s) following NOT INVALID KEY executed if WRITE is successful

Format

Page 20: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-20

Updating Index File Randomly

• Master records can be updated directly without creating a new file

• With index file, changes can be made in any sequence

Page 21: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-21

Updating Index File Randomly

• Read transaction record (or get update data interactively)

• Move key field value to RECORD KEY of master file

• Read master record into storage (READ … INVALID KEY)

• Make needed changes to fields

• REWRITE record to master file

Page 22: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-22

Updating Index File Randomly

• In SELECT statement specify ACCESS MODE IS RANDOM

• Open indexed file for I-O– I (Input) to read in records– O (Output) to rewrite or update records

Page 23: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-23

READ … INVALID KEY

• To locate record with key field equal to value stored in record key

Move Trans-No To Master-No

Read Indexed-File

Invalid Key Perform 600-Err-Rtn

Not Invalid Key Perform 500-OK-Rtn

End-Read

Page 24: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-24

REWRITE … INVALID KEY

REWRITE record-name-1 [FROM identifier-1]

[INVALID KEY imperative-statement-1]

[NOT INVALID KEY imperative-statement-2]

[END-REWRITE]

• To update existing indexed record• INVALID KEY occurs if programmer has

changed key field of record

Format

Page 25: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-25

Add New Record

• To add new record to indexed file– Move data to master record fields– Use WRITE … INVALID KEY to create

new record

Page 26: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-26

Delete Existing Record

DELETE index-file-name-1 RECORD

[INVALID KEY imperative-statement-1]

[NOT INVALID KEY imperative-statement-2]

[END-DELETE]

• To delete record with key field equal to value stored in record key

Format

Page 27: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-27

Debugging Tips

• Must run program to create indexed file– Cannot be created using text editor

• To test an update program, always run index file creation program first

• May not be able to DISPLAY or print indexed records on your system directly– Move data to standard sequential record

first

Page 28: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-28

Printing Indexed File Sequentially

• Process file in same way as a sequential file

• Specify ACCESS IS SEQUENTIAL

• SORT file before printing if report is to be in sequence by field other than key field

Page 29: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-29

Printing Indexed File Randomly

• May need to access only records about which inquiries have been made

• Specify ACCESS IS RANDOM

Page 30: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-30

Printing Indexed File Randomly

• Read inquiry record

• Move inquiry key field value to RECORD KEY of master file

• Read master record into storage (READ … INVALID KEY)

• Move desired fields to output record

• WRITE output record to print file

Page 31: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-31

Random Interactive Inquiries

• Inquiries often made interactively with output displayed on screen

• Assume indexed accounts receivable file with customer's Acct-No as key field

• Interactive inquiries made about balance due for a customer

• Code using random access for one inquiry follows

Page 32: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-32

Random Interactive Inquiries

Display 'Enter account number'

Accept Acct-No

Read Accts-Receivable

Invalid Key

Display 'Account not on file'

Not Invalid Key

Display 'Balance due = ', Bal-Due

End-Read

Page 33: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-33

ALTERNATE RECORD KEY

• Clause to enable file to be accessed randomly using more than one key field– May want to access accounts receivable

records by account number or name

• Add to SELECT statement after RECORD KEY clause to establish multiple key fields for indexing

Page 34: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-34

ALTERNATE RECORD KEY

[ALTERNATE RECORD KEY IS

data-name-2 [WITH DUPLICATES] ] …

• Multiple ALTERNATE keys allowed

• Need not be unique

• Access records by RECORD KEY or any ALTERNATE RECORD KEYs

Format

Page 35: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-35

SELECT Example

Select Accts-Receivable

Assign To 'C:\AcctRec.ndx'

Organization Is Indexed

Access Is Sequential

Record Key Is Acct-No

Alternate Record Key

Is Cst-Last-Name

With Duplicates.

Page 36: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-36

Random Access by ALTERNATE

• To access file by Cst-Last-NameDisplay 'Enter last name'

Accept Cst-Last-Name

Read Accts-Receivable

Key is Cst-Last-Name

Invalid Key Display 'No record found'

Not Invalid Key

Display 'Balance due = ', Bal-Due

End-Read

Page 37: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-37

Random Access by ALTERNATE

• KEY clause used with READ to specify access by ALTERNATE RECORD KEY

• Since WITH DUPLICATES specified– May be more than one record with same

last name– Record retrieved is first one placed on disk

• If KEY clause omitted, uses RECORD KEY field (Acct-No) to find record

Page 38: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-38

START Statement

• To begin processing indexed file sequentially starting from any record location– Print file beginning with customer record

with Acct-No = 025– Print all customers with Cst-Last-Name

beginning with letter 'S'

Page 39: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-39

START Statement

START file-name-1 IS =

KEY IS > data-name-1IS NOT <IS >=

[INVALID KEY imperative-statement-1][NOT INVALID KEY

imperative-statement-2][END-START]

Format

Page 40: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-40

START Statement• To begin processing with record whose

account number equals 025

Move 025 To Acct-NoStart Accts-Receivable

Invalid Key Display 'Acct-No 025 not found'

Not Invalid Key Perform 300-Proc-Rec

End-Start

Page 41: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-41

START Statement

• START locates record with Acct-No = 025

• INVALID KEY clause executed only if no such record found

• START locates record but does not READ it

• 300-Proc-Rec must include READ … AT END to bring record into storage for processing

Page 42: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-42

START Statement

• KEY clause can be omitted only if checking for value equal to RECORD KEY value

• To locate record with Acct-No > 100:Move 100 To Acct-No

Start Accts-Receivable

Key > Acct-No

Invalid Key …...

Page 43: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-43

ACCESS IS DYNAMIC

• Mode used to access indexed file both randomly and sequentially in single program

• For example, update selected records, then print control listing of entire indexed file– Random access used for updating– Sequential access used for printing report

Page 44: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-44

ACCESS IS DYNAMIC

• Mode required for reading records in sequence by ALTERNATE RECORD KEY

• Also required when records accessed by both RECORD KEY and ALTERNATE RECORD KEY

Page 45: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-45

READ … NEXT RECORD

• To perform sequential read of indexed file when ACCESS MODE IS DYNAMIC

• To sequentially read from file by its ALTERNATE RECORD KEY

• To begin reading sequentially from some point other than beginning of file

Page 46: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-46

READ … NEXT RECORD

• Assume first record with Acct-No > 100 has been located using START

• Use READ … NEXT RECORD to read in records sequentially from this position

• Only word NEXT required

Page 47: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-47

READ … NEXT RECORD

Perform Until More-Records = 'NO'

Read Accts-Receivable Next Record

At End

Move 'NO' To More-Records

Not At End

Perform 300-Proc-Rec

End-Read

End-Perform

Page 48: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-48

FILE STATUS Clause

• To determine exact type of input or output error that occurred when accessing a file

• Included in SELECT statement for a file as last clause

SELECT …

[FILE STATUS IS data-name]

• Format

Page 49: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-49

FILE STATUS Clause

• Data-name must appear in WORKING-STORAGE as two-position alphanumeric field

Select Indexed-Pay-File …

File Status Is WS-Status.…Working-Storage Section.

01 WS-Status Pic X(2).

• Example

Page 50: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-50

FILE STATUS Clause

• When input or output operation performed on Indexed-Pay-File– Value placed in WS-Status– Can be tested by programmer in

PROCEDURE DIVISION

• Several FILE STATUS field values and their meaning follow

Page 51: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-51

FILE STATUS Values

File Status

field value Meaning

00 No error occurred

21 Sequence error - keys not

in correct order

22 Attempt to write record

creating duplicate primary

record key

Page 52: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-52

Checking FILE STATUS

Write Indexed-Pay-Rec

Invalid Key

If WS-Status = '21'

Display 'Key not in sequence'

End-If…

Not Invalid Key

Perform 600-OK-Rtn

End-Write

Page 53: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-53

Exception Handling

• Most comprehensive method for handling input/output errors is to establish separate section(s) for this

• Place exception handling routines in DECLARATIVES segment– Always appears first in PROCEDURE

DIVISION– Must begin with section-name

Page 54: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-54

DECLARATIVES Format

DECLARATIVES.

section-name SECTION.

USE AFTER STANDARD

EXCEPTION PROCEDURE

ERROR

ON file-name-1 …

END DECLARATIVES.

Page 55: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-55

DECLARATIVES ExampleProcedure Division.Declaratives.A000-Exception-Handling Section.

Use After Error ProcedureOn Indexed-Pay-File

A100-Check-It.If WS-Status = '21'

Display 'Key not in sequence'End-If …

End Declaratives.

Page 56: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-56

DECLARATIVES Example

B000-Regular-Processing Section.

B100-Main-Paragraph.

Read Indexed-Pay-File

Write Indexed-Pay-File

Page 57: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-57

DECLARATIVES Example• Once section header used, rest of

PROCEDURE DIVISION must be divided into sections

• Statements in paragraph A100-Check-It in DECLARATIVES test value of FILE STATUS field

• INVALID KEY not needed for READ or WRITE since errors handled in DECLARATIVES

Page 58: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-58

Relative Files

• File organization that converts key field to actual disk address to find location of record– No need to look up disk address in index– Convert key to disk address and access

record directly

• Records may be accessed both sequentially and randomly

Page 59: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-59

SELECT for Relative Files

SELECT file-name-1

ASSIGN to implementor-name-1

[ORGANIZATION IS] RELATIVE

[ACCESS IS

SEQUENTIAL [RELATIVE KEY IS

data-name-1]

RANDOM RELATIVE KEY IS

DYNAMIC data-name-1

[FILE STATUS IS data-name-2].

Page 60: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-60

SELECT for Relative Files

• RELATIVE KEY clause– Optional if ACCESS is SEQUENTIAL– Otherwise, required

• ACCESS IS DYNAMIC allows both sequential and random access in same program

• FILE STATUS field used same way as with indexed files

Page 61: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-61

FD for Relative Files

• RELATIVE KEY not part of record– In separate WORKING-STORAGE entry

• If key is a three digit field and SELECT clause is

Relative Key is R-Key

• Entry in WORKING-STORAGE is

01 R-Key Pic 9(3).

Page 62: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-62

Creating Relative Files

• When created sequentially, either computer or user can supply keys

• If RELATIVE KEY clause omitted, computer supplies keys

• First record placed in relative record location 1 (RELATIVE KEY = 1)

• Second record in relative record location 2 (RELATIVE KEY = 2), etc.

Page 63: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-63

Processing Relative Files

• WRITE … INVALID KEY to write record to relative file

• READ … AT END to read sequentially

• READ … INVALID KEY to read randomly– Move key value of record to locate to

RELATIVE KEY before executing READ

Page 64: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-64

Processing Relative Files

• REWRITE … INVALID KEY to update

• DELETE … INVALID KEY to remove record from file

Page 65: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-65

Relative Keys

• Sometimes key field not feasible to use as relative key

• For example, a five digit Trans-No with values from 00001 to 99999 with only 1000 actual records would be wasteful– 99999 record locations would need to be

allocated but only a small portion used

Page 66: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-66

Converting to Relative Keys

• Methods called hashing used to convert key field into relative record number

• Simple hashing method

Divide Trans-No by 1009 Giving Num

Remainder Rel-Key• Rel-Key will be number from 0 to 1008• Add 1 to get relative record number from 1

to 1009, enough positions for 1000-record file

Page 67: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-67

Relative Files

Hashing algorithm used when:

• Creating relative file - each record's key field used to calculate RELATIVE KEY for positioning record in file

• Accessing file randomly - convert inquiry or transaction record's key to RELATIVE KEY before reading

Page 68: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-68

Chapter Summary

• Indexed Files - SELECT clauses– ORGANIZATION IS INDEXED– ACCESS IS RANDOM

• For nonsequential updates, inquiries

– ACCESS IS SEQUENTIAL• For creating, reporting, updating sequentially

Page 69: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-69

Chapter Summary

• Indexed Files - SELECT clauses – RECORD KEY - Key field for establishing

index, accessing records– FILE STATUS IS data-name for indicating

success of input or output operation

Page 70: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-70

Chapter Summary

• Indexed Files - PROCEDURE DIVISION– Creating indexed file

• ACCESS IS SEQUENTIAL• Use READ … AT END

– Reading from indexed file• In sequence - READ … AT END• Randomly - READ … INVALID KEY

Page 71: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-71

Chapter Summary

• Relative Files– No index, record's key field converted to

relative record number or RELATIVE KEY– Fast for random access but may be slow

for sequential access

Page 72: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-72

Chapter Summary

• Relative Files - SELECT clauses– ORGANIZATION IS RELATIVE– RELATIVE KEY clause uses

• For randomly accessing file• For sequential reads, writes if conversion

necessary from record's key field to RELATIVE KEY

• Data-name used as RELATIVE KEY defined in WORKING-STORAGE

Page 73: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-73

Chapter Summary

• Relative Files - SELECT clauses– Any of three ACCESS MODEs can be

used

• Creating a relative file– ACCESS IS SEQUENTIAL– Move or convert input record's key field to

RELATIVE KEY in WORKING-STORAGE– Use WRITE … INVALID KEY

Page 74: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-74

Chapter Summary

• Accessing a relative file– ACCESS IS RANDOM– Move or convert transaction record's key

field to RELATIVE KEY in WORKING-STORAGE

– Use READ … INVALID KEY

Page 75: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-75

Chapter Summary

• Updating a relative file– ACCESS IS RANDOM– OPEN for I-O– Use READ, WRITE, REWRITE, or

DELETE with INVALID KEY clauses

Page 76: 15-1 COBOL for the 21 st Century Nancy Stern Hofstra University Robert A. Stern Nassau Community College James P. Ley University of Wisconsin-Stout (Emeritus)

15-76

Copyright © 2003 John Wiley & Sons, Inc. 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 written permission of the copyright owner is unlawful. Request for further information should be addressed to the Permissions Department, John Wiley & 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.