Vsamtrainingclass 111108225459 Phpapp02
Vsamtrainingclass 111108225459 Phpapp02
Overview
VSAM (Virtual Storage Access Method )
V
Request S Reply Operating
Application
A System
M
VSAM
V
S
Main Storage DATA A DATA Disk
M
File access methods
INDEX
CLUSTER
DATA
VSAM internals
CI
CI
R1 R2 R3 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.
CONTROL INTERVAL
R R C
R1 R2 Free D I
R3 D
Space F D
F
F
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 CIDF
LR LR LR LR.. FS....FS... RDF CIDF
LR LR LR LR.. FS....FS... RDF CIDF
Cluster
ESDS : SEQUENTIAL
KSDS : SEQUENTIAL or RANDOM or DYNAMIC
RRDS: SEQUENTIAL or RANDOM or DYNAMIC
Access Method Services (AMS)
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
//LEM0UXXA JOB
MSGCLASS=Q,CLASS=Q,NOTIFY=&SYSUID
//DEFKSDS EXEC PGM=IDCAMS NONINDEXED - ESDS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(LEM0UXX.TEST.ESDS) -
VOLUMES(LEM001) -
RECORDSIZE(N1,N2)
NONINDEXED -
TRACKS(2,1) - N1=> AVG RECL
RECORDSIZE(50,50) - N2=> MAX RECL
CONTROLINTERVALSIZE(4096) -
FREESPACE(10,20)) -
DATA(NAME(LEM0UXX.TEST.ESDS.DATA))
/*
Freespace(PCT1,PCT2)
OVERVIEW
ESDS
CI
R1 R2 R3
80 40 60
RBA of R1 is 80
FILE-CONTROL Paragraph
Format:
SEQUENTIAL
[ACCESS MODE IS RANDOM
DYNAMIC
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
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
KEYS(N1,N2)
//SYSIN DD *
KEYS(9,0) -
INDEXED - KSDS
RECORDSIZE(50,50) -
CONTROLINTERVALSIZE(4096) -
Freespace(PCT1,PCT2)
FREESPACE(10,20)) -
PCT1=> PCT FREE SPACE IN each CI
DATA(NAME(LEM0UXX.TEST.KSDS.DATA)) -
PCT2=> PCT Of unused CI in CA
INDEX((NAME(LEM0UXX.TEST.KSDS.INDEX))
SELECT & ASSIGN Syntax
ENVIRONMENT DIVISION.
INP UT- OUT P UTSECT ION.
FILE - CONT ROL.
SELECT [OP T IONAL] FileName
ASSIGN T O FileSpec
ORGANIZAT ION IS INDEXED
SEQUENT IAL
ACCESS MODE IS RANDOM
DYNAMIC
RECORD KEY IS UniqueRecKey
ALT ERNAT ERECORD KEY IS AltKey WIT HDUP LICAT ES
FILE ST AT US IS FileStatus
READ statement
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
WRITE - YES
DELETE YES
REWRITE YES
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
IS EQUAL TO
IS =
IS GREATER THAN
START FileName KEY KeyName
IS >
IS NOT LESS THAN
IS NOT <
INVALID KEY StatementBlock
END START
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
DELETE YES
REWRITE YES
START
KSDS – RANDOM- WRITE
KSDS – Random -WRITE
KSDS –RANDOM MODE
READ Operation
Overview
KSDS – RANDOM -READ
KSDS – RANDOM -READ
KSDS
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
KSDS
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
DELETE YES
REWRITE YES
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
//SYSIN DD *
DEFINE CLUSTER(NAME(LEM0UXX.TEST.RRDS) -
RECORDSIZE(N1,N2)
VOLUMES(LEM001) -
N1=> AVG RECL
NUMBERED -
N2=> MAX RECL
TRACKS(2,1) -
RECORDSIZE(50,50) -
CONTROLINTERVALSIZE(4096) -
Freespace(PCT1,PCT2)
FREESPACE(10,20)) -
PCT1=> PCT FREE SPACE IN each CI
DATA(NAME(LEM0UXX.TEST.RRDS.DATA))
PCT2=> PCT Of unused CI in CA
/*
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
EMPNO IS ENAME IS
BASE KEY ALTERNATE KEY
ALTERNATE INDEXES
Performance degradation
Complex update logic
Steps for Creating Alternate Index
• Syntax : UPGRADE/NOUPGRADE
Overview
BUILD INDEX
//JOB CARD
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
BUILD INDEX is used
//SYSIN DD *
To load records in
BLDINDEX -
INDATASET(LEM0UXX.KSDS.CLUSTER') - AIX after it has been def
OUTDATASET('LEM0UXX.KSDS.AIX.CLUSTER') -
/*
PATH AND ALTERNATE
INDEX
Overview
DEFINE PATH
//JOB CARD
//STEP1 EXEC PGM = IDCAMS Path Establishes
//SYSPRINT DD SYSOUT=* A Bridge Between
DEFINE PATH -
( NAME ( LEM0UXX.KSDS.PATH) –
PATHENTRY(LEM0UXX.KSDS.AIX.CLUSTER) –
UPDATE )
/*
//
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)