Upload
randolf-morrison
View
221
Download
0
Tags:
Embed Size (px)
Citation preview
BIS 1753
• Introduction to Computer Programming
1
Computer Program
• A set of instructions that enables a computer to process data
• Also called software
• Two types of computer software– Systems software - controls overall
operations of computer– Application software - perform specific
tasks
2
Application Software
• Written by application programmers• May provide quick solution to one-time
problem– Generate ad hoc report, summarize data
• Or may be run on regularly scheduled basis– Payroll system, Billing system
3
Customized Application Software
• Written for specific users like retail establishments, manufacturing firms, banks, and more
• Necessary if user has special requirements
4
Programming Languages
Symbolic language (like COBOL)• English-like languages used to write
programs• Easier than writing programs in machine
language• Must be translated or compiled into
machine language to run on computer
5
Programming Languages
Machine language• Only language computer understands• All programs executed on computer
must be in machine language• Machine language programs difficult to
write
6
Programming Languages
Compiler• Translates source code (such as
COBOL) into object code (roughly, executable code)
• Checks for syntax errors in the source code
7
Nature of COBOL
• Business-oriented language
• Standard language
• English-like language
• Relatively easy to understand
8
History of COBOL
• Developed in 1959 as standard language to meet needs of business
• Committee to develop language convened by Department of Defense
• Included representatives from academia, business, computer manufacturers
9
Standard Versions of COBOL• 1960s
• 1968
• 1974
• 1985
wide variations in COBOL compilers
first COBOL standard set by American National Standards Institute (ANSI)
second ANSI standard to make COBOL more efficient, standardized
this ANSI standard incorporated structured programming techniques
10
Current and Future Standards
• 1985 currently the most widely used
• 2008 is next standard – Approval expected in 2008 or so– Information on 2008 COBOL standard at
http://www.ansi.org
11
Future of COBOL
Likely to remain important language
• Older COBOL programs need to be updated
• Still used by many for new program development
12
Use of COBOL
• About 200 billion lines of COBOL source code in use
• 5 billion new lines added each year
• Used by 42.7% of application programmers in medium to large U.S. companies
13
Overview of the Four Divisions
• Every COBOL program contains up to four separate divisions in the following order:
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISION
PROCEDURE DIVISION
14
Overview of the Four Divisions
• IDENTIFICATION DIVISION– Identifies program to operating system– Provides documentation about program
• ENVIRONMENT DIVISION– Defines file-names– Describes devices used to store them– Not included in fully interactive programs
15
Overview of the Four Divisions
• DATA DIVISION– Describes input and output format of data
in files– Defines any constants and work areas
• PROCEDURE DIVISION– Contains instructions to read input, process
it and create output
16
17
18
BIS 1753
• Introduction to Structured Program Design in COBOL
19
Basic COBOL Program Structure
• Originally, each COBOL instruction coded on single line of 80 characters
• Positions on line reserved for special purposes
• Rigid column rules dropped in 2008
• OpenCOBOL supports free-format COBOL
20
Coding Rules (fixed format)
• Columns 1-6 and 73-80 optional and rarely used today
• Column 7 for continuation, comment, starting new page
• Columns 8-72 for COBOL program statements
21
Coding Rules (fixed format)
Column 7
* (asterisk) designates entire line as comment
/ (slash) forces page break when printing source listing
- (dash) to indicate continuation of nonnumeric literal
22
Coding Rules (free format)
*> at beginning of line indicates comment
23
Margin Rules
• Columns 8-72 divided into two areas– Area A - columns 8, 9, 10, 11– Area B - columns 12-72
• Division, section and paragraph-names must all begin in Area A– First letter of name must begin in column 8,
9, 10 or 11– Entry may extend into Area B
24
Margin Rules
• All other statements, clauses, and sentences begin anywhere in Area B (column 12, 13, 14, etc.)– Select entries in ENVIRONMENT
DIVISION– Data description entries in DATA DIVISION– All PROCEDURE DIVISION instructions
25
Rules for User-Defined Words
1. 1 to 30 characters
2. Letters, digits, hyphens (-) only
3. No embedded blanks
4. At least one alphabetic character
5. May not begin or end with hyphen
6. May not be COBOL reserved word
26
Coding Guidelines
1. Separate divisions by blank comment line, page eject symbol or blank line
2. Code a single statement per line
3. Code paragraph-names on line by themselves
4. Be liberal in use of comments. Box lengthy comments using asterisks.
27
Coding Guidelines
5. Code SELECT statements in logical order (input files first, then output files) although order not required
6. Use separate lines for SELECT, ASSIGN, ORGANIZATION clauses for readability
7. Avoid use of device-specific file-names
28
COBOL 2008 Changes
• Coding rules for Areas A and B will be recommended not required.
• PROGRAM-ID will be only paragraph in IDENTIFICATION DIVISION. All others can be specified as comments.
• Length of user-defined words will be increased from 30 to 60 characters.
29
30
BIS 1753
• IDENTIFICATION and ENVIRONMENT Divisions
31
IDENTIFICATION DIVISION
• Provides identifying information about program
• Divided into paragraphs
• PROGRAM-ID only required paragraph
• Other paragraphs optional
32
IDENTIFICATION DIVISION
Syntax
IDENTIFICATION DIVISION.
PROGRAM-ID. program-name.
[AUTHOR. [comment-entry] …]
[other optional paragraphs]
33
Syntax Symbology• Uppercase words are COBOL reserved
words• Lowercase words are user-defined entries
IDENTIFICATION DIVISION.
PROGRAM-ID. program-name.
– DIVISION is reserved word– program-name is user-defined data-name
Example
34
Syntax Symbology
• Underlined words are required• Punctuation if specified is required
IDENTIFICATION DIVISION. PROGRAM-ID. program-name.
– IDENTIFICATION, DIVISION required– PROGRAM-ID is required paragraph– Periods required after division header, paragraph
name and program-name
Example
35
Syntax Symbology
• Brackets [ ] mean item is optional, braces { } mean one of enclosed items required
• Ellipses (. . .) mean entry may be repeated
IDENTIFICATION DIVISION.
PROGRAM-ID. program-name.
[AUTHOR. [comment-entry] …]
– AUTHOR paragraph optional– If included it may have any number of comment
entries
Example
36
ENVIRONMENT DIVISION
• Describes files and computer devices used to process them
• Required by programs that process files
• This division is machine-dependent since devices differ from computer to computer
• Only division that may change if program run on different computer
37
Sections of Environment Division
• CONFIGURATION SECTION– Describes computer used to
compile/execute program– Optional and recommended that you omit it
• INPUT-OUTPUT SECTION– Describes input and output files– Required for all programs using files
38
INPUT-OUTPUT SECTION
Format
INPUT-OUTPUT SECTION.FILE-CONTROL.
SELECT internal-file-name-1 ASSIGN TO externale-file-name-1 [ORGANIZATION IS LINE SEQUENTIAL].1
1Use this clause for all PC files so each line treated as separate record.
39
SELECT Statement file-names
• File-names are user-defined words– Words chosen by programmer to represent
some element of program
40
41
42
BIS 1753
• DATA Division
43
Data-Name Guidelines
1.Use meaningful data-names that describe contents of field• Amount-Due-In instead of A1
2.Use prefixes or suffixes in data-names when appropriate• -IN and -OUT for fields (Emp-Salary-IN and
Emp-Salary-OUT)• -FILE and -RECORD for file and record
names (Emp-File and Emp-Record)
44
DATA DIVISION
• Defines, describes storage for all data• Two main sections
– FILE SECTION • Defines all input and output files, records, fields• Required for any program that uses files,
typically batch programs
– WORKING-STORAGE SECTION • Defines constants, end-of-file indicators and
work areas • Defines fields not part of input or output files
45
WORKING-STORAGE SECTION
• Follows FILE SECTION
• Begins with heading on line by itself
• Starts in Area A, ends with period
• All items must be defined at 01 level or in entries subordinate to 01 level entry, or 77 level (independent data item)
46
WORKING-STORAGE SECTION
• Rules for user-defined data-names apply
• Elementary items:– Must include PICTURE clause– May be assigned initial value with VALUE
clause
47
Uses of WORKING-STORAGE
To define fields used for
• Keyed input and displayed output
• Intermediate arithmetic results
• Counters and totals
• End-Of-File Indicators
48
PICTURE (PIC) clauses
• Specify type of data stored in field• Indicate size of field
49
Types of data fields• Alphanumeric (x- prefix)
• Any character - letters, digits, special characters• For an address like 123 N. Main St.
• Numeric (n- prefix)• Only digits• Used for input and calculations
• Numeric edited (ne-prefix)• Digits and special characters • Used for output
50
Data Types in PICTURE clause
• X for alphanumeric• 9 V for numeric• Z , $ . and more for numeric edited
51
Size of Data Fields
Denote size of field by:
• Number of formatting characters used in PICTURE
01 Cust-Rec-In.05 Cust-ID-In Picture XXXX.
05 Amt-In Picture 99999.
52
Size of Data Fields
My also denote size of field by:
• A, X or 9 followed by number in parentheses
01 Cust-Rec-In.05 Cust-ID-In Picture X(4).
05 Amt-In Picture 9(5).
53
Implied Decimal Point
• For fields used in arithmetic operations• Symbol V used in PIC clause to denote
location of implied decimal point• Decimal point itself not stored as part of
number• To store value 26.79 in field AMT-IN,
code entry as
05 Amt-In Pic 99V99.54
VALUE clause
• To define initial value for field• If omitted, field’s value undefined when
program begins execution• May be used only in WORKING-
STORAGE SECTION
55
VALUE vs MOVE
• VALUE clause used in DATA DIVISION– Gives initial value before execution begins
• MOVE used in PROCEDURE DIVISION– Assigns value to field after program begins
• MOVE may change initial value of field
56
VALUE Clause
• Contains literal or figurative constant• Data type must match PICTURE
• Numeric literals or ZEROS used with PIC 9 fields 01 WS-Tax-Rate Pic V99 Value .06. 01 WS-Total Pic 999 Value Zeros.
57
VALUE Clause
• Nonnumeric literals, ZEROS or SPACES used with PIC X fields 01 WS-EOF Pic X(3) Value ‘YES’. 01 WS-Descrip Pic X(8) Value Spaces.
58
Rules for Numeric Literals
1. 1 to 18 digits.2. + or - sign may be included to left of
first digit.3. Decimal point permitted within literal.
May not follow last digit.
Valid numeric literals
23 +2359.4 .125 -68734
59
Rules for Nonnumeric Literals
• Must be enclosed in quotation marks• From 1 to 160 characters, including space• Any character in COBOL character set except
quotation mark
Valid Nonnumeric Literals
'123 Main St.' '$14.99' '12,342' 'Enter a value from 1 to 10'
60
Nonnumeric Literals
• Only characters within quotes are moved or displayed
• May contain all numbers ('125') but not same as numeric literal (125)– Cannot be used in arithmetic operations– Cannot be moved to field with PIC of 9’s
• Are not data-names– 'Amount-In' not same as field defined in
DATA DIVISION called Amount-In
61
Figurative Constants - ZERO
• ZERO, ZEROS or ZEROES means all zeros
Move Zeros To Total-Out
• Fills each position in Total-Out with a zero
• May be used with both numeric and alphanumeric fields
Example
62
Figurative Constants - SPACE
• SPACE or SPACES means all spaces or blanks
Move Spaces To Code-Out
• Fills each position in Code-Out with a space or blank
• Use only with alphanumeric fields since blank is invalid numeric character
Example
63
BIS 1753
• PROCEDURE Division (Interactive I/O)
64
PROCEDURE DIVISION
Contains instructions for
• initialization activities
• processing activities
• termination activities
65
PROCEDURE DIVISION
• Interactive processing instructions
– Accept input from keyboard
– Display output on screen
66
Paragraphs
• PROCEDURE DIVISION divided into
paragraphs
• Each is independent module or routine
• Made up of series of instructions to
perform specific set of operations
67
Rules for Paragraph-Names
• Coded in Area A, followed by period
• Follow rules for forming data-names
except may be all digits
– 1010, 1020, 1030, etc. are valid paragraph
names
• Must be unique
68
Procedure Division Statements
• All statements coded in Area B
• Statement begins with verb (Accept,
Display)
• Last statement in paragraph ends with
period
• Sentence - series of statements ending
with period69
Interactive Program Statements
• DISPLAY to prompt for input
• ACCEPT to store input in WORKING-STORAGE areas
• Various statements to process input
• DISPLAY to show output
70
ACCEPT statement
71
DISPLAY statement
72
COMPUTE statement
73
STOP RUN statement
• Terminates the program
• Usually last instruction in main paragraph
• Execution continues with next paragraph if STOP RUN is omitted
74
Comments in COBOL• Start with asterisk (*) in column 7 (fixed
format)
• Start with *> in column 1 (free format)
• Use as reminders and explanations of processing performed by program
• Use to describe program in IDENTIFICATION DIVISION
• Use to describe each paragraph in PROCEDURE DIVISION
75
BIS 1753
• Move statement
76
Move statement
•
MOVE identifier-1 TO identifier-2 …
literal-1
Move 0 To Total-1, Total-2, Total-3
• Move may have multiple receiving fields
Full Format
77
Numeric MOVE Rules
• Decimal alignment always maintained
• Digits in integer part moved right to left starting at decimal point
• Digits in decimal part moved left to right starting at decimal point
78
Numeric MOVE Rules
• If receiving field has more integer positions than sending field– Unfilled high-order (leftmost) integer
positions filled with zeros
• If receiving field has more decimal positions than sending field– Unfilled low-order (rightmost) decimal
positions filled with zeros
79
Numeric MOVE Rules
• If receiving field has fewer integer positions than sending field– High-order (leftmost) digits truncated
• If receiving field has fewer decimal positions than sending field– Low-order (rightmost) digits truncated
80
Rules for Nonnumeric MOVE
• Characters moved from left to right
• If receiving field longer, low-order (rightmost) positions replaced with spaces
• If receiving field shorter, low-order characters in sending field truncated
81
BIS 1753
• Full-screen interactive I/O
82
Displaying Output Interactively
• No COBOL standard for interactive processing
• Two techniques used by compilers to add interactivity– ACCEPT, DISPLAY enhancements with
options to define appearance of data on screen
– SCREEN SECTION added in DATA DIVISION to define screen’s format
83
ACCEPT, DISPLAY Enhancements
Display "Enter date of birth"At Line 13 Column 1
With Blank ScreenForeground-Color 1Background-Color 7
• Displays prompt at specific position on screen after clearing screen, using one color for characters and another for background
EXAMPLE
84
SCREEN SECTION
• Specify formats, options for screen
• Follows WORKING-STORAGE
• Define each screen with 01 level entry followed by subordinate entries
• DISPLAY screen-name displays all prompts described in entries for screen
• ACCEPT screen-name captures all data typed by user for that screen
85
SCREEN SECTION
01 Screen-1.05 Blank Screen.05 Line 3 Column 1 Value 'City'.05 Column 17 Pic X(13) To City-In.
• Display Screen-1 blanks screen and displays City in first column of line 3
• Accept Screen-1 moves 13 characters user enters starting in line 3, column 17 to City-In
EXAMPLE
86
87
BIS 1753
• File Input/Output (I/O)
88
COBOL Data Organization
• File - group of related records– Customer file made up of customer records
• Record - group of related fields– All fields related to one customer
• Field - group of characters forming a meaningful unit or basic fact– Characters in a name or digits in an
amount
89
DATA DIVISION
• Defines, describes storage for all data• Two main sections
– FILE SECTION • Defines all input and output files, records, fields• Required for any program that uses files,
typically batch programs
– WORKING-STORAGE SECTION • Defines constants, end-of-file indicators and
work areas • Defines fields not part of input or output files
90
Types of Files to Define
• Input files• Master files• Transaction files
• Output files• New Master files• Report files
91
File Description Entries
• Each file must be described with an FD (File Descriptor) entry
• One FD entry for each SELECT statement in ENVIRONMENT DIVISION
• FD followed by• File-name• Optional clauses to describe file and format
of its records
92
File Description Format
FD file-name RECORD IS OMITTED LABEL RECORDS ARE
STANDARD
RECORD CONTAINS integer-1 CHARACTERS
BLOCK CONTAINS integer-2 RECORDS .
93
BIS 1753
• PROCEDURE Division (File I/O)
94
PROCEDURE DIVISION
• Interactive processing instructions
– Accept input from keyboard
– Display output on screen
• Batch processing instructions
– Access files and read them
– Write output to files
95
Batch Processing File I/O
Statements to:
• Initialization activities: open files,
generate headings
• Processing activities: read records,
process, generate detail output
• Termination activities: generate footers,
close files96
Batch Program Instructions
• OPEN - Open files to be processed
• PERFORM UNTIL
– Loop to repeatedly READ and process
input records, and WRITE results to output
file
• CLOSE – Close files when done processing
• STOP RUN – Terminate program execution
97
Environment/Data Divisions
For each input or output file:
• Select statement: binds internal file name to external file name
• fd entry (file description entry)
• associated record
98
OPEN Statement
• Accesses and makes files available for processing
• Identifies whether files will be used for input or output
99
OPEN Statement
INPUT file-name-1 … OPEN OUTPUT file-name-2 …
• File-names used must appear in SELECT statement
• File must be accessed with OPEN before reading from or writing to it
FORMAT
100
PERFORM statement
PERFORM paragraph-name
• To execute instructions in separate paragraph one time
• Control returns to statement following PERFORM
FORMAT
101
PERFORM/UNTIL Statement
PERFORM paragraph-name UNTIL condition
• Step 1: Evaluate condition
• Step 2: If condition evaluates to false, perform paragraph one time
FORMAT
102
In-Line PERFORM
PERFORM UNTIL condition statement(s) END-PERFORM
• Step 1: Evaluate condition• Step 2: If condition evaluates to false,
execute in-line statements one time
FORMAT
103
READ Statement
• Reads record from file opened for input
• Makes one record available at a time, not entire file (the record is the unit of access)
• Makes data available in input file’s associated record
104
READ Statement
• READ file-name-1 AT END statement-1 … [NOT AT END statement-2 …] [END-READ]
• File-name appears in SELECT statement, FD entry and OPEN
• AT END tests if there are more records
FORMAT
105
READ Statement
• If no more records– Executes statement(s) after AT END– Typically statement(s) to cause loop
containing READ to end
• If more records– Reads in next record– Executes statement(s) after NOT AT END– Typically statement(s) to process record
just read
106
WRITE statement
• WRITE record-name-1
• Transmits data from associated record to output file
• record-name-1 must be an associated record of a file opened for output
FORMAT
107
CLOSE statement
• CLOSE file-name-1 ...
• Close specified file(s)
• Indicates files no longer needed for processing
• Releases files and deactivates devices
FORMAT
108
STOP RUN
• Terminates the program
• Usually last instruction in main paragraph
• Execution “falls through” to next paragraph if STOP RUN is omitted
109
110
111
BIS 1753
• Report Design Guidelines
112
Report Design Guidelines
1. Include heading to identify report
2. Include date, page number
3. Include column headings to identify fields printed
4. Place most significant fields where they are most visible
5. Edit numeric fields for readability
113
Report Design Guidelines
6. Include totals at end of page or report
7. Include page footings at end of each page, report footings at end of report
114
WRITE Statement
WRITE record-name-1 [FROM identifier-1]
AFTER integer-1 LINE BEFORE identifier-2 LINES
– integer-1 or identifier-2 must be non-negative integer value
– AFTER ADVANCING prints line after paper is spaced
– BEFORE ADVANCING prints line before spacing occurs
FORMAT
ADVANCING
115
Defining Print Records
• Define each type of output line as separate 01-level record in WORKING-STORAGE
• May include 01-level records for heading, detail, total, footing lines, etc.
• Establishes separate storage area for each record
• All constants and blanks may be preassigned with VALUE clauses
116
WRITE … FROM Statement
• To transfer data from storage to print area and then print
• Replaces MOVE and WRITE
Write Print-Rec From Heading-1
instead of
Move Heading-1 to Print-RecWrite Print-Rec
117
BIS 1753
• Tables
118
Defining a Table with the OCCURS clause
01 xTempTable.
05 nTemp occurs 24 times pic S9(3).
- Indicates repeated occurrence an element with same format- Defines series of related elements with same format as a table
119
Accessing Elements in Table
• Identifier nTemp is table name• Use nTemp along with a subscript to
access fields or elements within array• Subscript indicates which of the 24
elements to access
Statement OutputDisplay nTemp (2) 2 AM valueDisplay nTemp (23) 11 PM value
120
Valid Subscripts• Integer literal, data item, or expression
• Valid values are 1 to number of elements in table
121
Processing Elements in Table
• PERFORM VARYING perfectly suited to process the elements in a table
perform 210-processvarying nSubscript from 1 by 1until nSubscript > 24.
210-process.add nTemp(nSubscript) to nTotalTemp.
122
In-line PERFORM VARYING
perform varying nSubscript
from 1 by 1 until nSubscript > 24
add nTemp (nSubscript) To nTotalTemp
end-perform.
123
Elementary Items with OCCURS
• Occurs clause may be used with elementary data item
01 xTotalsTable.
05 nTotal occurs 12 times pic 9(5)V99.
• Defines xTotalstable as 84-character array (12 x 7) of 12 elementary items
124
Group Items with OCCURS
• OCCURS may be used with group item
01 xTaxTable.
05 xGroup occurs 20 times.
10 xCity pic X(6).
10 nTaxRate pic V999.
• xCity and nTaxRate each occur 20 times in group item xGroup.
125
Initializing Elements
• Two ways to use VALUE clause to initialize all elements to zero
01 xTable-1.
05 nTotal occurs 50 times pic 9(5) value zero.
01 xTable-2 value zero.
05 nTotal occurs 50 times pic 9(5).
126
Initializing Elements
• Can also initialize each element to different value
01 xDayNames
value 'SUNMONTUEWEDTHUFRISAT'.
05 xDay occurs 7 times pic x(3).
• Defines table with 7 three-character elements. xDay(1) = SUN, xDay(2) = MON, etc.
127
SEARCH Statement
SEARCH identifier-1[AT END imperative-statement-1]
WHEN condition-1 imperative-
statement-2 ...
CONTINUE[END-SEARCH]
• Use in place of PERFORM VARYING to search table
Format
128
SEARCH Statement
• Identifier used after SEARCH is table name specified in OCCURS entry
• Condition compares search argument to table argument
• WHEN clause indicates action to take when condition is met
• AT END clause specifies action to take if table searched but no match found
129
INDEXED BY clause
• Special field called index must be used with SEARCH
• Similar to subscript but defined along with table as part of OCCURS
05 xTableEntries occurs 1000 timesindexed By nIndex.
• Compiler automatically supplies appropriate pic clause for nIndex
130
Index with SEARCH
• Must initialize index before SEARCH• SEARCH performs table look-up,
automatically incrementing index• Internally, computer can use faster
method to access table entries with an index than with a subscript, even when SEARCH not used
• Both can have values from 1 to number of table elements
131
Modifying Index
• PERFORM … VARYING can modify subscript or index
• SET is only other statement that can modify index
TOSET index-name-1 UP BY integer-1
DOWN BY
Format
132
Sequential Search
Each entry (usually starting with first) checked in order until
• Condition is met
• Table completely searched
133
Sequential Search
Best used when
• Entries not in order by table argument value (not in numerical or alphabetical order)
• Entries can be organized so first values are ones searched for most frequently, minimizing search time
134
Binary Search
• Most efficient type of look-up when table entries in sequence by some table field
• On average, takes fewer comparisons to find match than serial search
• Called binary search because each comparison eliminates half of entries under consideration
135
Binary Search Statement
SEARCH ALL identifier-1[AT END imperative-statement-1]WHEN data-name-1 = identifier-2
literal-1 condition-1 arithmetic-
expression-1imperative-statement-2CONTINUE
[END-SEARCH]
Format (partial)
136
SEARCH ALL Limitations
• Condition in WHEN can test only for equality between table and search argument
• Condition following WHEN may be compound– Only ANDs permitted, not Ors– Each relational test can test only for
equality
137
SEARCH ALL Limitations
• Only one WHEN clause can be used• VARYING option may not be used• Table argument and its index must
appear to left of equal sign– Valid:
When nCustomerNo (X1) = nCustNoIn– Invalid:
When nCustNoIn = nCustomerNo (X1)
138
Key Field
• Must include clause to indicate which table entry serves as key field
• Must specify whether KEY is– ASCENDING KEY - entries in sequence,
increasing in value– DESCENDING KEY - entries in sequence,
decreasing in value
139
140
141
BIS 1753
• Random access files
142
Disk File Organization
• File is collection of records
• Three major ways records stored or organized on disk
- Sequential File Organization
- Relative File Organization
- Indexed File Organization
143
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
144
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
145
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 directly146
Relative Files
• Use the value of the unique identifying key value as the record number
• Records may be accessed either randomly or sequentially
147
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
148
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).
149
Creating Relative Files
• May not use a standard text editor
• Program must be written to create the relative file
• Relative files are platform-dependent; must create file on the platform on which it will be accessed
150
Reading Relative Files
• (Random access) Move desired key value to RELATIVE KEY data item, then execute READ statement
• (Random access) May get invalid key condition
• (Sequential access) READ
• (Sequential access) May get at end condition
151
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
152
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
153
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
mode154
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
155
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
executed156
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
157
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-Read158
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
159
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
160
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
161
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'
162
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
163
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
164
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
165
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
166
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
167
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
168