Vsam presentation PPT
-
Upload
anil-polsani -
Category
Education
-
view
4.206 -
download
18
description
Transcript of Vsam presentation PPT
VSAM
Overview
VSAM (Virtual Storage Access Method )
VSAM is an integral part of MVS. At the end of this course, you, the user, will know VSAM in detail.
know the different types of VSAM data sets
be able to create, delete and alter VSAM data sets, with indexes and alternate indexes
know the organization of VSAM data sets
Access Methods
An access method defines the technique by which data is stored and retrieved. The different types of dataset organizations in MVS are:
Physical Sequential
Partitioned
Indexed Sequential
Direct
VSAM
What is VSAM?
VSAM is Virtual Storage Access Method
It is a method used to move data between Disk and Main Storage
VSAM operates in Virtual Environment
Application Operating System
VSAM
Request Reply
VSAM
VSAM acts as interface between
Operating System and Application Program
Main Storage Disk
VSAM
DATA DATA
VSAM
Interface between Main Storage and Disk
File access methods
Data (Records) is retrieved
Sequential (Reading from beginning to end)
Random (Records are read by the value in the key)
Direct (Records are read based on their physical location/address on disk)
VSAM provides all these methods
One access method supporting all types of data retrieval
Traditional access methods
QSAM (Queried Sequential Access Method)
BSAM (Basic Sequential Access Method)
for ‘flat’ files
ISAM (Index Sequential Access Method)
for Index files
BDAM (Basic Direct Access Method)
for direct access files
VSAM Dataset Types
Entry Sequenced Dataset (ESDS)
ESDS contains records in the order in which they are entered. Records are added to the end of the data set, and can be accessed sequentially.
Key Sequenced Dataset (KSDS)
KSDS contains records in ascending collating sequence. Records can be accessed by a field called a key, or by a relative byte address (RBA - relative position of the record from the beginning of the dataset), or sequentially.
Linear Dataset (LDS)
LDS contains data that has no record boundaries. The manipulation of the data is completely controlled by the user.
Relative Record Dataset (RRDS)
RRDS contains records in the order of relative record number. These records can be accessed only by this number.
CLUSTERINDEX
DATA
VSAM data set organization
VSAM Data Set can contain three major components
CLUSTER (Catalog entry)
INDEX
DATA (Actual data)
Data Set is referred by cluster name in JCL
CI
Record Record .......
VSAM internals
CONTROL INTERVAL (CI)
VSAM stores Data and Index in Control Intervals (CI)
CI is similar to ‘Block’
DASD I/O Buffer
R1 R2 R3
CI
CONTROL INTERVAL
CI is the unit of retrieval between DASD and I/O Buffer (Virtual Storage)
R1 R2 R3
Control Interval
CI contains
Records (or DATA)
Free space (Optional)
Control Information Definition Field (CIDF)
Record Definition field (RDF)
Building blocks of a VSAM Dataset
Logical Record
Logical records of VSAM data sets are stored in a different manner from logical records in non-VSAM data sets. VSAM stores records in control intervals.
Control Interval (CI)
A control interval consists of the following:
Logical records (LR)
Free space (FS)
Control information fields
LR LR LR LR..FS....FS...RDF CIDF
Free Space is the space reserved within the CI for inserting new records in a KSDS or for lengthening the existing records.
3 bytes, Length of RecordHow many successive records have same length 4 bytes long, One per CI
Indicates Free space, where and how much
R1 R2 R3 FreeSpace
RDF
RDF
CI DF
CONTROL INTERVAL
CIDF & RDF are VSAM control functions
Used by VSAM to access data
CONTROL AREA
Control Area
CIs are grouped into CA
The control intervals in a VSAM data set are grouped together into Control Areas.
A VSAM data set is actually composed of one or more control areas. The maximum size of a control area is a cylinder, and the minimum size is one track.
Control Area (CA)
LR LR LR LR.. FS....FS... RDF CIDFLR LR LR LR.. FS....FS... RDF CIDFLR LR LR LR.. FS....FS... RDF CIDF
Cluster
VSAM datasets are defined as Clusters.
A Cluster is a combination of the data component and the index component.
The Index component is applicable only in the case of a KSDS.
The data component holds data records.
The index component holds the index records to access the required information from the data component
Highest Index Set
1300 1305 1310 1350 FS
1400 1410 1415 1600 FS
FS FS FS FS FS1001 1002 1005 1010 FS
1020 1022 1030 1055 FS
FS FS FS FS FS
1055
1600 FS 5000 FS FS
1010 1055 FS 1350 1600 FS
2210
5000
Index Set
Sequence Set
DATA COMPONENT (CA1)
Data Component (CA2)
Control Interval Split
When a data set is first loaded, the key sequence of records and their physical order are the same.
However, when records are inserted, control interval split can occur, causing the data control intervals to have a physical order that is different from the key sequence.
For example, try to insert '1004' in CI-1 shown below :
A Control Interval Split occurs and CI-1 is split exactly into two half CI's. CI-3, which is a free control interval is used, and some logical records of CI-1 are moved into CI-3. CI-3 is placed after CI-2 and it is not inserted in between CI-1 and CI-2.
1001 1002 1005 1010 FS
1020 1022 1030 1055 FS
FS FS FS FS
CA-1 (CI-1 to CI-3) - After split
1001 1002 1004 FS
1020 1022 1030 1055 FS
1005 1010 FS FS
CA-1 (CI-1 to CI-3) - Before split
Control Area Split
Now, if record ‘1025’ is inserted, there is no free control interval for a CI split to occur. Hence, a CA (control area) split occurs. The CA-1 is split into two half control areas; some of the Control intervals of CA-1 are moved into the newly created CA (CA-2).
CA-1 (CI-1 to CI-3) - After split
1001 1002 1004 FS
1020 1022 FS FS FS
FS FS FS FS
CA-2 (CI-1 to CI-3)
1025 1030 1055 FS
1005 1010 FS FS
FS FS FS FS
Types of VSAM data sets
ESDS Entry Sequenced Data Set
KSDS Key Sequenced Data Set
RRDS Relative Record Data Set
LDS Linear Data Set
ORGANIZATION
SEQUENTIAL => ESDSINDEXED => KSDSRELATIVE => RRDS
ACCESS MODE OPTIONS
ESDS : SEQUENTIAL KSDS : SEQUENTIAL or RANDOM or DYNAMICRRDS: SEQUENTIAL or RANDOM or DYNAMIC
Access Method Services (AMS)
Access Method Services is a service program that helps you to allocate and maintain VSAM data sets and catalogs.
IDCAMS is the name of the utility program used to perform the following operations on VSAM data sets.
Creating a Data set
Loading a VSAM data set.
Printing a Data set
Deleting a Data set
Error Detection for KSDS Data set
Creating Generation Data Groups (GDG) etc.
INVOKING ACCESS METHOD
IDCAMS UTLITY
Defining a VSAM Cluster
The Define Cluster command is used to allocate VSAM data sets. The basic information required for defining a VSAM data set is:
Name of the cluster.
Volume(s) on which the data set will be allocated.
Type of data set (KSDS, ESDS, RRDS or LDS).
Space needed for the data set.
For a KSDS, the length of the key and its offset from the beginning of the record.
Record size, and whether it is fixed or variable in length.
Control interval size.
CI and CA Free Space.
The following keywords have to be used to define the different types of VSAM data sets:
NONINDEXED for ESDS.
INDEXED for KSDS.
NUMBERED for RRDS.
LINEAR for LDS.
Sample JCL to create an ESDS cluster
Freespace(PCT1,PCT2)
PCT1=> PCT FREE SPACE IN each CI
PCT2=> PCT Of unused CI in CA
RECORDSIZE(N1,N2)
N1=> AVG RECL
N2=> MAX RECL
//LEM0UXXA JOB MSGCLASS=Q,CLASS=Q,NOTIFY=&SYSUID
//DEFKSDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(LEM0UXX.TEST.ESDS) -
VOLUMES(LEM001) -
NONINDEXED -
TRACKS(2,1) -
RECORDSIZE(50,50) -
CONTROLINTERVALSIZE(4096) -
FREESPACE(10,20)) -
DATA(NAME(LEM0UXX.TEST.ESDS.DATA))
/*
NONINDEXED - ESDS
COBOL AND ESDS
OVERVIEW
ESDS
Similar to Sequential File
Sequenced by the order in which data is entered/loaded
New Records are added at the end only (chronological order)
Supports both Fixed and Variable formats
Contains only CLUSTER & DATA components
Only sequential access in Batch Cobol Programs
Random access is supported in on-line applications (CICS) using Relative Byte Address (RBA)
Alternate Index is supported in on-line applications (CICS)
NO primary index
ESDS (Contd...)
CI
RBA of R1 is 80
RBA
Record location relative to the beginning of the file(Relative Byte Address)
R1 R2 R380 40 60
FILE-CONTROL Paragraph
Format:
SELECT [OPTIONAL] File-name-1 ASSIGN TO AS-Assignment-name-1
SEQUENTIAL
[ ORGANIZATION IS INDEXED
RELATIVE
SEQUENTIAL
[ACCESS MODE IS RANDOM
DYNAMIC
[FILE STATUS IS Data-name-1]
ESDS
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
INPUT OUTPUT INPUT-OUTPUT
EXTEND
READ YES - YES -
WRITE - YES YES
DELETE
REWRITE YES
VSAM === ESDS
ORGANIZATION IS SEQUENTIAL.ACCESS MODE = SEQUENTIAL
OVERVIEW
CREATING ESDS
Writing Data in ESDS
Writing Data in ESDS
Writing Data in ESDS
RUNNING A PROGRAM
View the data from ESDS
REPRO COMMAND
PRINT ESDS EXAMPLE
Overview
PRINT ESDS
PRINT ESDS
PRINT ESDS
KSDS (KEY SEQUENTIAL DATA SET )
Sample JCL to create a KSDS cluster
//LEM0UXXA JOB MSGCLASS=Q,CLASS=Q,NOTIFY=&SYSUID
//DEFKSDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(LEM0UXX.TEST.KSDS) -
VOLUMES(LEM001) -
TRACKS(2,1) -
INDEXED -
KEYS(9,0) -
RECORDSIZE(50,50) -
CONTROLINTERVALSIZE(4096) -
FREESPACE(10,20)) -
DATA(NAME(LEM0UXX.TEST.KSDS.DATA)) -
INDEX((NAME(LEM0UXX.TEST.KSDS.INDEX))
/*
KEYS(N1,N2)
N1=> length of the Key(Bytes)
N2=> is starting byte position
of Key in Record
RECORDSIZE(N1,N2)
N1=> AVG RECL
N2=> MAX RECL
Freespace(PCT1,PCT2)
PCT1=> PCT FREE SPACE IN each CI
PCT2=> PCT Of unused CI in CA
INDEXED - KSDS
SELECT & ASSIGN Syntax
us FileStatIS STATUS FILE
DUPLICATESWITH AltKey IS KEY RECORDALTERNATE
cKey UniqueReIS KEYRECORD
SEQUENTIAL
IS MODEACCESS
INDEXED IS ONORGANIZATI
FileSpecTO ASSIGN
FileName]OPTIONAL[ SELECT
.CONTROL-FILE
.SECTION OUTPUT-INPUT
.DIVISION
DYNAMIC
RANDOM
TENVIRONMEN
READ statement
READ
END READ
READ
END READ
FileName RECORD INTO DestItem
KEY IS KeyName
INVALID KEY StatementBlock
FileName NEXT RECORD INTO DestItem
AT END StatementBlock
WRITE & REWRITE statement
WRITE
END WRITE
RecName FROM SourceItem
INVALID KEY StatementBlock
REWRITE
END REWRITE
RecName FROM SourceItem
INVALID KEY StatementBlock
KSDS
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
INPUT OUTPUT INPUT-OUTPUT
READ YES - YES
WRITE - YES
DELETE YES
REWRITE YES
START YES YES
INDEX FILE
ORGANIZATION IS INDEXED.ACCESS MODE = SEQUENTIAL
OVERVIEW
CREATING KSDS
WRITING A KSDS
WRITING A KSDS
WRITING KSDS
RUNNING A KSDS
Running a KSDS
READING INDEX FILE-KSDS
ORGANIZATION IS INDEXED.ACCESS MODE = SEQUENTIAL
OVERVIEW
READING A KSDS
READING A KSDS FILE
EXECUTE A PROGRAM FOR READING DATA FROM KSDS
SPOOL OUTPUT
SPOOL OUTPUT
START & DELETE statement
DELETE
END DELETE
FileName RECORD
INVALID KEY StatementBlock
START
END START
FileName KEY
IS EQUAL TO
IS =
IS GREATER THAN
IS >
IS NOT LESS THAN
IS NOT <
KeyName
INVALID KEY StatementBlock
START :Position a Record
START COMMAND
START COMMAND
DELETE COMMAND
DELETE COMMAND
EXECUTE A PROGRAM AFTER COMPILE
PRINT THE KSDS DATASET
PRINT THE KSDS
KSDS ORGANIZATION IS INDEXEDACCESS MODE IS RANDOM
KSDS
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
INPUT OUTPUT INPUT-OUTPUT
READ YES - YES
WRITE - YES YES
DELETE YES
REWRITE YES
START
KSDS – RANDOM- WRITE
KSDS – Random -WRITE
KSDS –RANDOM MODEREAD Operation
Overview
KSDS – RANDOM -READ
KSDS – RANDOM -READ
KSDS ORGANIZATION IS INDEXEDACCESS MODE IS DYNAMIC
KSDS
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
INPUT OUTPUT INPUT-OUTPUT
READ YES - YES
WRITE - YES YES
DELETE YES
REWRITE YES
START YES YES
KSDS- DYNAMIC MODE WRITE OPERATION
Overview
KSDS –DYNAMIC- WRITE
KSDS –DYNAMIC-WRITE
KSDS –DYNAMIC-READ
KSDS-DYNAMIC-READ
RRDS
Overview
Sample JCL to create an RRDS cluster
//LEM0UXXA JOB MSGCLASS=Q,CLASS=Q,NOTIFY=&SYSUID
//DEFRRDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(LEM0UXX.TEST.RRDS) -
VOLUMES(LEM001) -
NUMBERED -
TRACKS(2,1) -
RECORDSIZE(50,50) -
CONTROLINTERVALSIZE(4096) -
FREESPACE(10,20)) -
DATA(NAME(LEM0UXX.TEST.RRDS.DATA))
/*
RECORDSIZE(N1,N2)
N1=> AVG RECL
N2=> MAX RECL
Freespace(PCT1,PCT2)
PCT1=> PCT FREE SPACE IN each CI
PCT2=> PCT Of unused CI in CA
NUMBERED - RRDS
RELATIVE-RANDOM-WRITE
RELATIVE-RANDOM-WRITE
RELATIVE-RANDOM-READ
RELATIVE-RANDOM-READ
RANDOM READ JCL
SPOOL OUTPUT
RELATIVE-DYNAMIC-READ
RELATIVE-DYNAMIC-READ
RELATIVE-DYNAMIC-READ
ALTERNATE INDEX
Overview
ALTERNATE INDEXES
Used whenever the data is required to be retrieved on the basis of more than one field
EMPNO ENAME SALARY
101 RAJESH 5000
102 RAMESH 6000
103 RANDY 7000
104 SURESH 8000
e.g., Can be defined for both KSDS & ESDS
EMPNO ISBASE KEY
ENAME ISALTERNATE KEY
Reduce data redundancy Can have duplicates Easy to define using IDCAMS Allow datasets to be accessed sequentially or
randomly Can be updated automatically
ALTERNATE INDEXES
Disadvantages
Performance degradation
Complex update logic
Steps for Creating Alternate Index
Define AIX using IDCAMS DEFINE AIX
Specify Alternate Index Path using IDCAMS DEFINE PATH
Build AIX & populate it using IDCAMS BLDINDEX
Sample JCL to create an AIX cluster
Freespace(PCT1,PCT2)
PCT1=> PCT FREE SPACE IN each CI
PCT2=> PCT Of unused CI in CA
RECORDSIZE(N1,N2)
N1=> AVG RECL
N2=> MAX RECL
//LEM0UXXA JOB MSGCLASS=Q,CLASS=Q,NOTIFY=&SYSUID
//DEFKSDS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE AIX (NAME(LEM0UXX.TEST.AIX.CLUSTER) –
RELATE (LEM0UXX.INFILE.KSDS) -
VOLUMES(LEM001) -
KEY (10, 35) -
TRACKS(2,1) -
NONUNIQUEKEY -
RECORDSIZE(49,49) -
UPGRADE
CONTROLINTERVALSIZE(4096) -
FREESPACE(10,20)) -
DATA(NAME(LEM0UXX.TEST.AIX.DATA))
INDEX(NAME(LEM0UXX.TEST.AIX.INDEX))
/*
UNIQUE /NONUNIQUE
UPGRADE-> VSAM AUTOMATIC
Updates the AIX for all
ADD,UPDT,DEL of Base cluster
KEY ( N1,N2)
N1-> LENGTH OF AIX key
N2-> KEYS start Loc in BASE CLUSTER
• Syntax : UPGRADE/NOUPGRADE
• UPGRADE specifies that records in AIX are to be updated• automatically whenever the base cluster is updated
UPGRADE/NOUPGRADEUPGRADE/NOUPGRADE
BUILDING AN INDEX
Overview
BUILD INDEX
//JOB CARD
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
BLDINDEX -
INDATASET(LEM0UXX.KSDS.CLUSTER') -
OUTDATASET('LEM0UXX.KSDS.AIX.CLUSTER') -
/*
BUILD INDEX is used
To load records in
AIX after it has been def
PATH AND ALTERNATE INDEX
Overview
DEFINE PATH
//JOB CARD
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE PATH -
( NAME ( LEM0UXX.KSDS.PATH) –
PATHENTRY(LEM0UXX.KSDS.AIX.CLUSTER) –
UPDATE )
/*
//
Path Establishes
A Bridge Between
BASE CLUSTER & AIX
ALTERNATE Index Example
Define BASE CLUSTER
LOADING DATA INTO BASE CLUSTER
LOADING DATA INTO BASE CLUSTER
LOADING DATA INTO BASE CLUSTER
EXECUTING A PROGRAM TO LOAD DATA
EXECUTING A PROGRAM TO LOAD DATA
DEFINING AIX
RECORDSIZE(N1,N2)
N1= LENGTH OF BASE CLUSTER KEY(3)
+ LENGTH OF AIX KEY(5) + 5 for CI
Build index
Create path for Bridge
READING RECORDS BY ALTERNATE INDEX
READING RECORD BY ALTERNATE KEY
READING RECORD BY ALTERNATE KEY
EXECUTE A READ PROGRAM BY ALTERNATE KEY
DD1-> BASE CLUSTER
DD11-> PATH NAME
DDNAME SHOULD BE IN ORDER
SPOOL OUTPUT
IDCAMS REPRO
IDCAMS REPRO KEY BASED
IDCAMS REPRO RELATIVE
IDCAMS LISTCAT
SPOOL OUTPUT
IDCAMS DELETE