Вы находитесь на странице: 1из 26

Indexed and

Relative
Files

ED Entries for Indexed Files


ENVIRONMENT DIVISION.
INPUT - OUTPUT SECTION.
FILE - CONTROL.
SELECT [OPTIONAL] FileName
ASSIGN TO FileSpec
ORGANIZATION IS INDEXED

SEQUENTIAL


ACCESS MODE IS RANDOM


DYNAMIC

RECORD KEY IS UniqueRecKey


ALTERNATE RECORD KEY IS AltKey WITH DUPLICATES
FILE STATUS IS FileStatus

FDs for Indexed Files

Indexed File Verbs


OPEN

INPUT

OPEN OUTPUT

I-O

FileName

REA
D

Write and Rewrite

DELET
E

START

Creating an Indexed File


IDENTIFICATION
DIVISION.
IDENTIFICATION
DIVISION.
PROGRAM-ID.
CIDXFILE.
CIDXFILE.
*PROGRAM-ID.
* Creates
Creates an
an indexed
indexed file
file from
from aa sequential
sequential file.
file.
ENVIRONMENT
ENVIRONMENT DIVISION.
DIVISION.
INPUT-OUTPUT
SECTION.
INPUT-OUTPUT
SECTION.
FILE-CONTROL.
FILE-CONTROL.
SELECT
TO
SELECT VideoFile
VideoFile ASSIGN
ASSIGN
TO "VIDEO.DAT"
"VIDEO.DAT"
ORGANIZATION
IS
INDEXED
ORGANIZATION
IS
INDEXED
ACCESS
IS
RANDOM
ACCESS MODE
MODE
IS
RANDOM
RECORD
KEY
IS
VideoCode
RECORD
KEY
IS
VideoCode
ALTERNATE
KEY
IS
VideoTitle
ALTERNATE RECORD
RECORD
KEY
IS
VideoTitle
WITH
DUPLICATES
WITH DUPLICATES
FILE
FILE STATUS
STATUS IS
IS VideoStatus.
VideoStatus.
SELECT
SeqVideoFile
ASSIGN
SELECT SeqVideoFile ASSIGN TO
TO "INVIDEO.DAT".
"INVIDEO.DAT".
DATA
DIVISION.
DATA
DIVISION.
FILE
SECTION.
FILE
SECTION.
FD
VideoFile.
FD
VideoFile.
01
01 VideoRecord.
VideoRecord.
02
PIC
02 VideoCode
VideoCode
PIC 9(5).
9(5).
02
VideoTitle
PIC
X(40).
02
VideoTitle
PIC
X(40).
02
PIC
02 VideoSupplierCode
VideoSupplierCode
PIC 99.
99.
FD
SeqVideoFile.
FD SeqVideoRecord.
SeqVideoFile.
01
01 88
SeqVideoRecord.
EndOfFile
VALUE
HIGH-VALUES.
88
EndOfFile
VALUE
HIGH-VALUES.
02
SeqVideoCode
PIC
02 SeqVideoTitle
SeqVideoCode
PIC 9(5).
9(5).
02
PIC
X(40).
02
SeqVideoTitle
PIC
X(40).
02
PIC
02 SeqVideoSupplierCode
SeqVideoSupplierCode
PIC 99.
99.
WORKING-STORAGE
SECTION.
WORKING-STORAGE
SECTION.
01
VideoStatus
PIC
01
VideoStatus
PIC X(2).
X(2).

Creating an Indexed File...


PROCEDURE
DIVISION.
PROCEDURE
DIVISION.
Begin.
Begin.
OPEN
INPUT
SeqVideoFile.
OPEN
INPUT
SeqVideoFile.
OPEN
OUTPUT
OPEN OUTPUT VideoFile.
VideoFile.
READ
SeqVideoFile
READ
SeqVideoFile
AT
END
SET
EndOfFile
TO
TRUE
AT
END
SET
EndOfFile
TO
TRUE
END-READ.
END-READ.
PERFORM
UNTIL
EndOfFile
PERFORM
UNTIL
EndOfFile
WRITE
VideoRecord
FROM
SeqVideoRecord
WRITE
VideoRecord
FROM
SeqVideoRecord
INVALID
KEY
DISPLAY
"VIDEO
STATUS
:",
VideoStatus
INVALID
KEY
DISPLAY
"VIDEO
STATUS
:",
VideoStatus
END-WRITE
END-WRITE
READ
SeqVideoFile
READ
SeqVideoFile
AT
END
SET
EndOfFile
TO
TRUE
AT
END
SET
EndOfFile
TO
TRUE
END-READ
END-READ
END-PERFORM.
END-PERFORM.
CLOSE
VideoFile,
CLOSE
VideoFile, SeqVideoFile.
SeqVideoFile.
STOP
RUN.
STOP RUN.

Reading Indexed File - Sequentially.


IDENTIFICATION
DIVISION.
IDENTIFICATION
DIVISION.
PROGRAM-ID.
RIDXFILE.
RIDXFILE.
*PROGRAM-ID.
* Sequential
Sequential reading
reading of
of an
an indexed
indexed file
file
ENVIRONMENT
ENVIRONMENT DIVISION.
DIVISION.
INPUT-OUTPUT
SECTION.
INPUT-OUTPUT
SECTION.
FILE-CONTROL.
FILE-CONTROL.
SELECT
TO
SELECT VideoFile
VideoFile ASSIGN
ASSIGN
TO "VIDEO.DAT"
"VIDEO.DAT"
ORGANIZATION
IS
INDEXED
ORGANIZATION
IS
INDEXED
ACCESS
IS
DYNAMIC
ACCESS MODE
MODEIS
ISVideoCode
DYNAMIC
RECORD
KEY
RECORD
KEY
IS
VideoCode
ALTERNATE
RECORD
KEY
IS
VideoTitle
ALTERNATE
RECORD
KEY
IS
VideoTitle
WITH
DUPLICATES
WITH DUPLICATES
FILE
FILE STATUS
STATUS IS
IS VideoStatus.
VideoStatus.
DATA
DATA DIVISION.
DIVISION.
FILE
SECTION.
FILE
SECTION.
FD
VideoFile
FD
VideoFile
01
01 VideoRecord.
VideoRecord.
88
EndOfFile
VALUE
HIGH-VALUE.
88
EndOfFile
VALUE
HIGH-VALUE.
02
VideoCode
PIC
02 VideoTitle
VideoCode
PIC 9(5).
9(5).
02
PIC
X(40).
02
VideoTitle
PIC
X(40).
02
PIC
02 SupplierCode
SupplierCode
PIC 99.
99.
WORKING-STORAGE
SECTION.
WORKING-STORAGE
SECTION.
01
VideoStatus
PIC
01 VideoStatus
PIC X(2).
X(2).
01
RequiredSequence
PIC
9.
01 88
RequiredSequence
PIC 9.1.
VideoCodeSequence
VALUE
88
VideoCodeSequence
VALUE 2.
1.
88
VALUE
88 VideoTitleSequence
VideoTitleSequence
VALUE 2.
01
01 PrnVideoRecord.
PrnVideoRecord.
02
PrnVideoCode
PIC
9(5).
02
PrnVideoCode
PIC
9(5).
02
PrnVideoTitle
PIC
BBBBX(40).
02 PrnSupplierCode
PrnVideoTitle
PIC BBBB99.
BBBBX(40).
02
PIC
02 PrnSupplierCode
PIC BBBB99.

Reading Indexed File - Sequentially...


PROCEDURE
PROCEDURE DIVISION.
DIVISION.
Begin.
Begin.
OPEN
OPEN INPUT
INPUT VideoFile.
VideoFile.
DISPLAY
"Enter
key
:: 1=VideoCode,
2=VideoTitle
->"
DISPLAY
"Enter
key
1=VideoCode,
2=VideoTitle
->"
WITH
NO
ADVANCING.
WITH NO ADVANCING.
ACCEPT
ACCEPT RequiredSequence.
RequiredSequence.
IF
IF VideoTitleSequence
VideoTitleSequence
MOVE
TO
MOVE SPACES
SPACES
TO VideoTitle
VideoTitle
START
VideoFile
KEY
IS
GREATER
THAN
VideoTitle
START
VideoFile
KEY
IS
GREATER
THAN
VideoTitle
INVALID
KEY
DISPLAY
"VIDEO
STATUS
INVALID KEY DISPLAY "VIDEO STATUS ::- ",
", VideoStatus
VideoStatus
END-START
END-START
END-IF
END-IF
READ
VideoFile
NEXT
READ
VideoFile
NEXT RECORD
RECORD
AT
END
SET
EndOfFile
TO
TRUE
AT
END
SET
EndOfFile
TO
TRUE
END-READ.
END-READ.
PERFORM
UNTIL
PERFORM
UNTIL EndOfFile
EndOfFile
MOVE
VideoCode
TO
PrnVideoCode
MOVE
VideoCode
TO
PrnVideoCode
MOVE
VideoTitle
TO
PrnVideoTitle
MOVE SupplierCode
VideoTitle TO
PrnVideoTitle
MOVE
TO
PrnSupplierCode
MOVE
SupplierCode
TO
PrnSupplierCode
DISPLAY
PrnVideoRecord
DISPLAY
PrnVideoRecord
READ
VideoFile
NEXT
READ
VideoFile
NEXT RECORD
RECORD
AT
END
SET
EndOfFile
TO
TRUE
AT
END
SET
EndOfFile
TO
TRUE
END-READ
END-READ
END-PERFORM.
END-PERFORM.
CLOSE
VideoFile.
CLOSERUN.
VideoFile.
STOP
STOP RUN.

Reading Indexed File - Sequentially...


RUN OF INDEX-EG2.EXE USING VIDEOCODE KEY
RUN OF INDEX-EG2.EXE USING VIDEOCODE KEY
Enter key : 1=VideoCode, 2=VideoTitle ->1
Enter key : 1=VideoCode, 2=VideoTitle ->1
00121 FLIGHT OF THE CONDOR, THE
03
00121 FLIGHT OF THE CONDOR, THE
03
00333 PREDATOR
02
00333 PREDATOR
02
00444 LIVING EARTH, THE
03
00444 LIVING EARTH, THE
03
01001 COMMANDO
02
01001 COMMANDO
02
01100 ROBOCOP
01
01100 ROBOCOP
01
02001 LEOPARD HUNTS IN DARKNESS, A 03
02001 LEOPARD HUNTS IN DARKNESS, A 03
02121 DIRTY DANCING
04
02121 DIRTY DANCING
04
03031 COMPETENT CREW
05
03031 COMPETENT CREW
05
03032 YACHT MASTER
05
03032 YACHT MASTER
05
04041 OPEN OCEAN SAILING
05
04041 OPEN OCEAN SAILING
05
04042 PRINCESS BRIDE, THE
06
04042 PRINCESS BRIDE, THE
06
04444 LIFE ON EARTH
03
04444 LIFE ON EARTH
03
05051 OVERBOARD
01
05051 OVERBOARD
01
06061 HOPE AND GLORY
07
06061 HOPE AND GLORY
07
07071 AMONG THE WILD CHIMPANZEES
03
07071 AMONG THE WILD CHIMPANZEES
03
08081 WHALE NATION
03
08081 WHALE NATION
03
09091 BESTSELLER
07
09091 BESTSELLER
07
10001 WICKED WALTZING
04
10001 WICKED WALTZING
04
11111 TERMINATOR, THE
02
11111 TERMINATOR, THE
02
13301 MASSACRE AT MASAI MARA
03
13301 MASSACRE AT MASAI MARA
03
14032 KNOTTY PROBLEMS FOR SAILORS
05
14032 KNOTTY PROBLEMS FOR SAILORS
05
17001 ALIEN
07
17001 ALIEN
07
17002 ALIENS
07
17002 ALIENS
07
17041 GARFIELD TAKES A HIKE
06
17041 GARFIELD TAKES A HIKE
06
18001 SURVIVING THE STORM
05
18001 SURVIVING THE STORM
05
19444 PINOCCIO
02
19444 PINOCCIO
02

RUN OF INDEX-EG2 USING VIDEOTITLE KEY


RUN OF INDEX-EG2 USING VIDEOTITLE KEY
Enter key : 1=VideoCode, 2=VideoTitle ->2
Enter key : 1=VideoCode, 2=VideoTitle ->2
17001 ALIEN
07
17001 ALIEN
07
17002 ALIENS
07
17002 ALIENS
07
07071 AMONG THE WILD CHIMPANZEES
03
07071 AMONG THE WILD CHIMPANZEES
03
09091 BESTSELLER
07
09091 BESTSELLER
07
01001 COMMANDO
02
01001 COMMANDO
02
03031 COMPETENT CREW
05
03031 COMPETENT CREW
05
02121 DIRTY DANCING
04
02121 DIRTY DANCING
04
00121 FLIGHT OF THE CONDOR, THE
03
00121 FLIGHT OF THE CONDOR, THE
03
17041 GARFIELD TAKES A HIKE
06
17041 GARFIELD TAKES A HIKE
06
06061 HOPE AND GLORY
07
06061 HOPE AND GLORY
07
14032 KNOTTY PROBLEMS FOR SAILORS
05
14032 KNOTTY PROBLEMS FOR SAILORS
05
02001 LEOPARD HUNTS IN DARKNESS, A 03
02001 LEOPARD HUNTS IN DARKNESS, A 03
04444 LIFE ON EARTH
03
04444 LIFE ON EARTH
03
00444 LIVING EARTH, THE
03
00444 LIVING EARTH, THE
03
13301 MASSACRE AT MASAI MARA
03
13301 MASSACRE AT MASAI MARA
03
04041 OPEN OCEAN SAILING
05
04041 OPEN OCEAN SAILING
05
05051 OVERBOARD
01
05051 OVERBOARD
01
19444 PINOCCIO
02
19444 PINOCCIO
02
00333 PREDATOR
02
00333 PREDATOR
02
04042 PRINCESS BRIDE, THE
06
04042 PRINCESS BRIDE, THE
06
01100 ROBOCOP
01
01100 ROBOCOP
01
18001 SURVIVING THE STORM
05
18001 SURVIVING THE STORM
05
11111 TERMINATOR, THE
02
11111 TERMINATOR, THE
02
08081 WHALE NATION
03
08081 WHALE NATION
03
10001 WICKED WALTZING
04
10001 WICKED WALTZING
04
03032 YACHT MASTER
05
03032 YACHT MASTER
05

Reading Indexed File - Directly.


IDENTIFICATION
DIVISION.
IDENTIFICATION
DIVISION.
PROGRAM-ID.
RIDXFILE.
PROGRAM-ID.
RIDXFILE.
** Illustrates
Illustrates direct
direct read
read on
on an
an indexed
indexed file
file by
by any
any key
key
ENVIRONMENT
DIVISION.
ENVIRONMENT DIVISION.
INPUT-OUTPUT
INPUT-OUTPUT SECTION.
SECTION.
FILE-CONTROL.
FILE-CONTROL.
SELECT
VideoFile
ASSIGN
TO
"VIDEO.DAT"
SELECT
VideoFile
ASSIGN
TO
"VIDEO.DAT"
ORGANIZATION
IS
INDEXED
ORGANIZATION
IS
INDEXED
ACCESS
MODE
IS
DYNAMIC
ACCESS
MODE
IS
DYNAMIC
RECORD
KEY
IS
VideoCode
RECORD
KEY
IS
VideoCode
ALTERNATE
RECORD
KEY
ALTERNATEWITH
RECORD
KEY IS
IS VideoTitle
VideoTitle
DUPLICATES
WITH
DUPLICATES
FILE
FILE STATUS
STATUS IS
IS VideoStatus.
VideoStatus.
DATA
DIVISION.
DATA SECTION.
DIVISION.
FILE
FILE
SECTION.
FD
VideoFile.
FD
VideoFile.
01
01 VideoRecord.
VideoRecord.
02
PIC
02 VideoCode
VideoCode
PIC 9(5).
9(5).
02
VideoTitle
PIC
X(40).
02
VideoTitle
PIC
X(40).
02
PIC
02 SupplierCode
SupplierCode
PIC 99.
99.
WORKING-STORAGE
WORKING-STORAGE SECTION.
SECTION.
01
VideoStatus
PIC
01 88
VideoStatus
PIC X(2).
X(2).
RecordFound
VALUE
88 RecordFound
VALUE "00".
"00".
01
RequiredKey
PIC
9.
01 88
RequiredKey
PIC 9.1.
VideoCodeKey
VALUE
88 VideoTitleKey
VideoCodeKey
VALUE 2.
1.
88
VALUE
88 VideoTitleKey
VALUE 2.
01
01 PrnVideoRecord.
PrnVideoRecord.
02
PIC
02 PrnVideoCode
PrnVideoCode
PIC 9(5).
9(5).
02
PrnVideoTitle
PIC
BBBBX(40).
02
PrnVideoTitle
PIC
BBBBX(40).
02
PrnSupplierCode
PIC
BBBB99.
02 PrnSupplierCode
PIC BBBB99.

Reading Indexed File - Directly...


PROCEDURE
PROCEDURE DIVISION.
DIVISION.
Begin.
Begin.
OPEN
INPUT
VideoFile.
OPEN
INPUT
VideoFile.
DISPLAY
"Chose
VideoCode
== 1,
DISPLAY "Chose key
keyWITH
VideoCode
1, VideoTitle
VideoTitle == 22 ->
-> ""
NO
ADVANCING.
WITH NO ADVANCING.
ACCEPT
ACCEPT RequiredKey.
RequiredKey.
IF
IF VideoCodeKey
VideoCodeKey
DISPLAY
"Enter
DISPLAYVideoCode
"Enter Video
Video Code
Code (5
(5 digits)
digits) ->
-> "" WITH
WITH NO
NO ADVANCING
ADVANCING
ACCEPT
ACCEPT
VideoCode
READ
VideoFile
READ
VideoFile
KEY
IS
KEY
IS VideoCode
VideoCode
INVALID
KEY
DISPLAY
"VIDEO
STATUS
:",
VideoStatus
INVALID
KEY
DISPLAY
"VIDEO
STATUS
:",
VideoStatus
END-READ
END-READ
END-IF
END-IF
IF
IF VideoTitleKey
VideoTitleKey
DISPLAY
"Enter
DISPLAYVideoTitle
"Enter Video
Video Title
Title (40
(40 chars)
chars) ->
-> "" WITH
WITH NO
NO ADVANCING
ADVANCING
ACCEPT
ACCEPT
VideoTitle
READ
VideoFile
READ
VideoFile
KEY
IS
KEY
IS VideoTitle
VideoTitle
INVALID
KEY
DISPLAY
"VIDEO
STATUS
:",
VideoStatus
INVALID
KEY
DISPLAY
"VIDEO
STATUS
:",
VideoStatus
END-READ
END-READ
END-IF
END-IF
IF
IF RecordFound
RecordFound
MOVE
PrnVideoCode
MOVE VideoCode
VideoCode TO
TO
PrnVideoCode
MOVE
VideoTitle
TO
PrnVideoTitle
MOVE
VideoTitle
TO
PrnVideoTitle
MOVE
SupplierCode
TO
PrnSupplierCode
MOVE
SupplierCode
TO
PrnSupplierCode
DISPLAY
PrnVideoRecord
DISPLAY PrnVideoRecord
END-IF.
END-IF.
CLOSE
VideoFile.
CLOSE
VideoFile.
STOP
RUN.
STOP RUN.

Reading an Indexed File - Directly...


RUN
OF
INDEX-EG3.EXE
USING
VIDEOCODE
RUN
OF
INDEX-EG3.EXE
USING
VIDEOCODE = 2 -> 1
Chose
key
VideoCode
=
1,
VideoTitle
Chose Video
key VideoCode
= 1, VideoTitle
= 2 -> 1
Enter
Code
(5
digits)
->
02121
Enter
Video
Code
(5
digits)
->
02121
02121
DIRTY
02121
DIRTY DANCING
DANCING

04
04

RUN
INDEX-EG3.EXE
USING
VIDEOCODE
RUN OF
OF
INDEX-EG3.EXE
USING
VIDEOCODE = 2 -> 1
Chose
key
VideoCode
=
1,
VideoTitle
Chose
key
VideoCode
=
1,
VideoTitle
= 2 -> 1
Enter
Video
Code
(5
digits)
->
05051
Enter Video
Code (5 digits) -> 05051
05051
OVERBOARD
05051
OVERBOARD

01
01

RUN
INDEX-EG3.EXE
USING
VIDEOTITLE
RUN OF
OF
INDEX-EG3.EXE
USING
VIDEOTITLE= 2 -> 2
Chose
key
VideoCode
=
1,
VideoTitle
Chose
key
VideoCode
=
1,
VideoTitle
= 2 -> 2
Enter
Video
Title
(40
chars)
->
OVERBOARD
Enter Video
Title (40 chars) -> OVERBOARD
05051
OVERBOARD
05051
OVERBOARD

01
01

RUN
INDEX-EG3.EXE
USING
VIDEOTITLE
RUN OF
OF
INDEX-EG3.EXE
USING
VIDEOTITLE= 2 -> 2
Chose
key
VideoCode
=
1,
VideoTitle
Chose
key
VideoCode
=
1,
VideoTitle
=DANCING
2 -> 2
Enter
Video
Title
(40
chars)
->
DIRTY
Enter
Video
Title
(40
chars)
->
DIRTY
DANCING
02121
DIRTY
02121
DIRTY DANCING
DANCING

04
04

RUN
OF
INDEX-EG3.EXE
USING
NON
EXISTANT
VIDEOCODE
RUN
OF
INDEX-EG3.EXE
USING
NON
EXISTANT
VIDEOCODE
Chose
key
VideoCode
=
1,
VideoTitle
=
2
Chose Video
key VideoCode
= 1, VideoTitle
= 2 ->
-> 11
Enter
Code
(5
digits)
->
44444
Enter STATUS
Video Code23(5 digits) -> 44444
VIDEO
VIDEO STATUS ::- 23

Relative Files

Select and Assign for Relative Files

09/03/16

ER/CORP/CRS/LA0

18

FDs for Relative Files

09/03/16

ER/CORP/CRS/LA0

19

Relative File Verbs

All the verbs discussed with INDEXED files holds


good in Relative Organization too.

Point to remember is that relative key is not part


of Relative record and is declared as WS variable
and must contain proper values.

09/03/16

ER/CORP/CRS/LA0

20

Creating a Relative File


IDENTIFICATION
IDENTIFICATION DIVISION.
DIVISION.
PROGRAM-ID.
CRELFILE.
PROGRAM-ID. CRELFILE.
** Creates
Creates aa Relative
Relative file
file from
from aa sequential
sequential file.
file.
ENVIRONMENT
ENVIRONMENT DIVISION.
DIVISION.
INPUT-OUTPUT
INPUT-OUTPUT SECTION.
SECTION.
FILE-CONTROL.
FILE-CONTROL.
SELECT
SELECT SupplierFile
SupplierFile ASSIGN
ASSIGN TO
TO "SUPP.DAT"
"SUPP.DAT"
ORGANIZATION
IS
RELATIVE
ORGANIZATION IS RELATIVE
ACCESS
ACCESS MODE
MODE IS
IS RANDOM
RANDOM
RELATIVE
KEY
IS
RELATIVE KEY IS SupplierKey
SupplierKey
FILE
STATUS
IS
SupplierStatus.
FILE STATUS IS SupplierStatus.
SELECT
SupplierFileSeq
SELECT SupplierFileSeq ASSIGN
ASSIGN TO
TO "INSUPP.DAT".
"INSUPP.DAT".
DATA
DATA DIVISION.
DIVISION.
FILE
SECTION.
FILE SECTION.
FD
FD SupplierFile.
SupplierFile.
01
SupplierRecord.
01 SupplierRecord.
02
PIC
02 SupplierCode
SupplierCode
PIC 99.
99.
02
SupplierName
PIC
X(20).
02 SupplierName
PIC X(20).
02
SupplierAddress
PIC
02 SupplierAddress
PIC X(60).
X(60).
FD
FD SupplierFileSeq.
SupplierFileSeq.
01
SupplierRecordSeq.
01 SupplierRecordSeq.
88
VALUE
88 EndOfFile
EndOfFile
VALUE HIGH-VALUES.
HIGH-VALUES.
02
SupplierCodeSeq
PIC
02 SupplierCodeSeq
PIC 99.
99.
02
SupplierNameSeq
PIC
X(20).
02 SupplierNameSeq
PIC X(20).
02
SupplierAddressSeq
PIC
02 SupplierAddressSeq
PIC X(60).
X(60).
WORKING-STORAGE
WORKING-STORAGE SECTION.
SECTION.
01
SupplierStatus
PIC
01 SupplierStatus
PIC X(2).
X(2).
01
SupplierKey
PIC
99.
01 SupplierKey
PIC 99.

Creating a Relative File


IDENTIFICATION
IDENTIFICATION DIVISION.
DIVISION.
PROGRAM-ID.
CRELFILE.
PROGRAM-ID. CRELFILE.
** Creates
Creates aa Relative
Relative file
file from
from aa sequential
sequential file.
file.
ENVIRONMENT
ENVIRONMENT DIVISION.
DIVISION.
INPUT-OUTPUT
INPUT-OUTPUT SECTION.
SECTION.
FILE-CONTROL.
FILE-CONTROL.
SELECT
SELECT SupplierFile
SupplierFile ASSIGN
ASSIGN TO
TO "SUPP.DAT"
"SUPP.DAT"
ORGANIZATION
IS
RELATIVE
ORGANIZATION IS RELATIVE
ACCESS
ACCESS MODE
MODE IS
IS RANDOM
RANDOM
RELATIVE
KEY
IS
RELATIVE KEY IS SupplierKey
SupplierKey
FILE
STATUS
IS
SupplierStatus.
SupplierStatus
FILE STATUS IS SupplierStatus.
SupplierStatus
SELECT
SupplierFileSeq
SELECT SupplierFileSeq ASSIGN
ASSIGN TO
TO "INSUPP.DAT".
"INSUPP.DAT".
DATA
DATA DIVISION.
DIVISION.
FILE
SECTION.
FILE SECTION.
FD
FD SupplierFile.
SupplierFile.
01
SupplierRecord.
01 SupplierRecord.
02
PIC
02 SupplierCode
SupplierCode
PIC 99.
99.
02
SupplierName
PIC
X(20).
02 SupplierName
PIC X(20).
02
SupplierAddress
PIC
02 SupplierAddress
PIC X(60).
X(60).
FD
FD SupplierFileSeq.
SupplierFileSeq.
01
SupplierRecordSeq.
01 SupplierRecordSeq.
88
VALUE
88 EndOfFile
EndOfFile
VALUE HIGH-VALUES.
HIGH-VALUES.
02
PIC
02 SupplierCodeSeq
SupplierCodeSeq
PIC 99.
99.
02
SupplierNameSeq
PIC
X(20).
02 SupplierNameSeq
PIC X(20).
02
SupplierAddressSeq
PIC
02 SupplierAddressSeq
PIC X(60).
X(60).
WORKING-STORAGE
WORKING-STORAGE SECTION.
SECTION.
01
SupplierStatus
PIC
01 SupplierStatus
PIC X(2).
X(2).
01
SupplierKey
PIC
99.
01 SupplierKey
PIC 99.

Creating a Relative File


PROCEDURE
PROCEDURE DIVISION.
DIVISION.
Begin.
Begin.
OPEN
OPEN OUTPUT
OUTPUT SupplierFile.
SupplierFile.
OPEN
INPUT
SupplierFileSeq.
OPEN INPUT SupplierFileSeq.
READ
READ SupplierFileSeq
SupplierFileSeq
AT
END
AT END SET
SET EndOfFile
EndOfFile TO
TO TRUE
TRUE
END-READ
END-READ
PERFORM
PERFORM UNTIL
UNTIL EndOfFile
EndOfFile
MOVE
SupplierCodeSeq
MOVE SupplierCodeSeq TO
TO SupplierKey
SupplierKey
MOVE
SupplierRecordSeq
TO
MOVE SupplierRecordSeq TO SupplierRecord
SupplierRecord
WRITE
SupplierRecord
WRITE SupplierRecord
INVALID
INVALID KEY
KEY DISPLAY
DISPLAY "SUPP
"SUPP STATUS
STATUS :-",
:-", SupplierStatus
SupplierStatus
END-WRITE
END-WRITE
READ
READ SupplierFileSeq
SupplierFileSeq
AT
END
AT END SET
SET EndOfFile
EndOfFile TO
TO TRUE
TRUE
END-READ
END-READ
END-PERFORM.
END-PERFORM.
CLOSE
CLOSE SupplierFile,
SupplierFile, SupplierFileSeq.
SupplierFileSeq.
STOP
RUN.
STOP RUN.

File.
IDENTIFICATION
IDENTIFICATION DIVISION.
DIVISION.
PROGRAM-ID.
RRELFILE.
PROGRAM-ID. RRELFILE.
** Reads
Reads aa Relative
Relative file
file directly
directly or
or in
in sequence
sequence
ENVIRONMENT
ENVIRONMENT DIVISION.
DIVISION.
INPUT-OUTPUT
INPUT-OUTPUT SECTION.
SECTION.
FILE-CONTROL.
FILE-CONTROL.
SELECT
SELECT SupplierFile
SupplierFile ASSIGN
ASSIGN TO
TO "SUPP.DAT"
"SUPP.DAT"
ORGANIZATION
IS
RELATIVE
ORGANIZATION IS RELATIVE
ACCESS
ACCESS MODE
MODE IS
IS DYNAMIC
DYNAMIC
RELATIVE
KEY
IS
RELATIVE KEY IS SupplierKey
SupplierKey
FILE
SupplierStatus
FILE STATUS
STATUS IS
IS SupplierStatus.
SupplierStatus.
SupplierStatus
DATA
DATA DIVISION.
DIVISION.
FILE
SECTION.
FILE SECTION.
FD
FD SupplierFile.
SupplierFile.
01
01 SupplierRecord.
SupplierRecord.
88
88 EndOfFile
EndOfFile VALUE
VALUE HIGH-VALUES.
HIGH-VALUES.
02
PIC
02 SupplierCode
SupplierCode
PIC 99.
99.
02
SupplierName
PIC
X(20).
02 SupplierName
PIC X(20).
02
PIC
02 SupplierAddress
SupplierAddress
PIC X(60).
X(60).
WORKING-STORAGE
WORKING-STORAGE SECTION.
SECTION.
01
SupplierStatus
PIC
01 SupplierStatus
PIC X(2).
X(2).
88
VALUE
88 RecordFound
RecordFound
VALUE "00".
"00".
01
SupplierKey
PIC
99.
01 SupplierKey
PIC 99.
01
PrnSupplierRecord.
01 PrnSupplierRecord.
02
PIC
02 PrnSupplierCode
PrnSupplierCode
PIC BB99.
BB99.
02
PrnSupplierName
PIC
BBX(20).
02 PrnSupplierName
PIC BBX(20).
02
02 PrnSupplierAddress
PrnSupplierAddress PIC
PIC BBX(50).
BBX(50).
01
ReadType
PIC
9.
01 ReadType
PIC 9.
88
VALUE
88 DirectRead
DirectRead
VALUE 1.
1.
88
SequentialRead
VALUE
2.
88 SequentialRead
VALUE 2.

File.
PROCEDURE
DIVISION.
PROCEDURE
DIVISION.
BEGIN.
BEGIN.
OPEN
SupplierFile.
OPEN INPUT
INPUT
SupplierFile.
DISPLAY
"Enter
Read
type
(Direct=1,
Seq=2)->
"" WITH
NO
DISPLAY
"Enter
Read
type
(Direct=1,
Seq=2)->
WITH
NO
ADVANCING.
ADVANCING.
ACCEPT
ACCEPT ReadType.
ReadType.
IF
DirectRead
IF DirectRead
DISPLAY
"Enter
DISPLAYSupplierKey
"Enter supplier
supplier key
key (2
(2 digits)->
digits)-> "" WITH
WITH NO
NO ADVANCING
ADVANCING
ACCEPT
ACCEPT
SupplierKey
READ
SupplierFile
READINVALID
SupplierFile
KEY
INVALID
KEY DISPLAY
DISPLAY "SUPP
"SUPP STATUS
STATUS :-",
:-", SupplierStatus
SupplierStatus
END-READ
END-READDisplayRecord
PERFORM
PERFORM DisplayRecord
END-IF
END-IF
IF
IF SequentialRead
SequentialRead
READ
SupplierFile
NEXT
RECORD
READAT
SupplierFile
NEXT
RECORD
END
SET
EndOfFile
TO
AT
END
SET
EndOfFile
TO TRUE
TRUE
END-READ
END-READ
PERFORM
UNTIL
EndOfFile
PERFORM
UNTIL
EndOfFile
PERFORM
DisplayRecord
PERFORM
DisplayRecord
READ
SupplierFile
NEXT
READAT
SupplierFile
NEXT RECORD
RECORD
END
SET
EndOfFile
TO
TRUE
AT
END
SET
EndOfFile
TO
TRUE
END-READ
END-READ
END-PERFORM
END-PERFORM
END-IF
END-IF
CLOSE
SupplierFile.
CLOSE
SupplierFile.
STOP
STOP RUN.
RUN.
DisplayRecord.
DisplayRecord.
IF
IF RecordFound
RecordFound
MOVE
SupplierCode
TO
PrnSupplierCode
MOVE
SupplierCode
TO
PrnSupplierCode
MOVE
SupplierName
TO
PrnSupplierName
MOVE
SupplierName
TO
PrnSupplierName
MOVE
SupplierAddress
TO
MOVE SupplierAddress
TO PrnSupplierAddress
PrnSupplierAddress
DISPLAY
PrnSupplierRecord
DISPLAY
PrnSupplierRecord
END-IF.

Reading a Relative
File.
RUN
RUN OF
OF REL-EG2.EXE
REL-EG2.EXE USING
USING SEQUENTIAL
SEQUENTIAL READING
READING
Enter
Read
type
(Direct=1,
Seq=2)->
2
Enter Read type (Direct=1, Seq=2)-> 2
01
OVER
01 VESTRON
VESTRON VIDEOS
VIDEOS
OVER THE
THE SEA
SEA SOMEWHERE
SOMEWHERE IN
IN LONDON
LONDON
02
HOLLYWOOD,
02 EMI
EMI STUDIOS
STUDIOS
HOLLYWOOD, CALIFORNIA,
CALIFORNIA, USA
USA
03
BUSH
03 BBC
BBC WILDLIFE
WILDLIFE
BUSH HOUSE,
HOUSE, LONDON,
LONDON, ENGLAND
ENGLAND
04
HOLLYWOOD,
04 CBS
CBS STUDIOS
STUDIOS
HOLLYWOOD, CALIFORNIA,
CALIFORNIA, USA
USA
05
YACHTING
MONTHLY
TREE
HOUSE,
LONDON,
ENGLAND
05 YACHTING MONTHLY
TREE HOUSE, LONDON, ENGLAND
06
VIRGIN
VIDEOS
IS
06 VIRGIN VIDEOS
IS THIS
THIS ONE
ONE ALSO
ALSO LOCATED
LOCATED IN
IN ENGLAND
ENGLAND
07
NEW
07 CIC
CIC VIDEOS
VIDEOS
NEW YORK
YORK PLAZZA,
PLAZZA, NEW
NEW YORK,
YORK, USA
USA
RUN
RUN OF
OF REL-EG2.EXE
REL-EG2.EXE USING
USING DIRECT
DIRECT READ
READ
Enter
Enter Read
Read type
type (Direct=1,
(Direct=1, Seq=2)->
Seq=2)-> 11
Enter
Enter supplier
supplier key
key (2
(2 digits)->
digits)-> 05
05
05
TREE
05 YACHTING
YACHTING MONTHLY
MONTHLY
TREE HOUSE,
HOUSE, LONDON,
LONDON, ENGLAND
ENGLAND

Вам также может понравиться