Key Sequential Dataset
1) A Key Sequenced Data Set
(KSDS) is a type of VSAM data system. Each record in a KSDS data
file is embedded with a unique key. A KSDS consists of two parts, the
data component and a separate index file known as the index component which
allows the system to physically locate the record in the data file by its key
value. Together, the data and index components are called a cluster.
2) Records can be accessed
randomly or in sequence and can be variable-length.
We can’t directly use the KSDS file first we have to create the KSDS
file.
First we will see the program that creates the KSDS file.
// KSDSNEW1 JOB 'AK85427','AVINASH',NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
// SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
// SYSIN DD *
//DEFINE CLUSTER(NAME(SK648K.AVINASH.KSDS1)-
//TRACKS(3,1)-
//KEYS(3,0)-
//CONTROLINTERVALSIZE(4096)-
// FREESPACE(10,10)-
// RECORDSIZE(35,70))
/*
See below Mainframe program i have written in
my PDS member to create the KSDS new file which i am going to use for my data
storing.
Now i will tell you the function of each in brief.
1)//KSDSNEW1 JOB
'AK85427','AVINASH',NOTIFY=&SYSUID
This is my Job card.
Job name=KSDSNEW1
‘AK85427'=Accounting information.
AVINASH=programmer Name
NOTIFY=&sysuid will notify all messages
related to this job to me.
2)STEP1 EXEC
PGM=IDCAMS
Stepname=step1------you can give any stepname but it
should be 8 char.Not started with any digit.
EXEC=it is control card name
PGM=IDCAMS(Integrated Data Control Access Method)
As we are working for Data operation.
It is utility required for the creation of any
VSAM file.
3) SYSPRINT DD
SYSOUT=*
It allocate a printing device for this operation and
gives the result in spool
4)SYSOUT DD
SYSOUT=*
It says that output message of the system is shown in
the spool as sysout=*
If we have written sysout dd dsn=file name then this
will stores the information in respective file.
5)SYSIN DD *
This is the control card which control the operation
of creation of KSDS file.
1) DEFINE
CLUSTER(NAME(SK648K.AVINASH.KSDS1)-
CLUSTER----It is logical name for defining a VSAM
file.It can be a dataset contains both Index and data component.
But this criteria only satisfied by KSDS file only.
NAME(dataset name)
2) Defining the space
TRK/CYL (primary quantity,secondary quantity)
I have given TRK(3,1)
It means that on my volume please give me a primary space
of 3 Track and if it is fulled by my data please add 1 more TRK space as
secondary space.
As many of don’t know the difference in TRK and CYL
space they are just giving it blindly so i would like to explain the terms TRK
and CYL.
TRK-----1 TRK=56,664 bytes
CYL----1 CYL=15 TRK=849,960 Bytes per Cylinder
See more information on http://www.lascon.co.uk/hwd_3390_disks.php
3) Defining the primary key
This is nothing but a unique column value from your
file .
For ex. If your file having employee record which
contain different columns like employee id,employee Name,City here employee
name , city can be same but employee id is always different so we are doffing
Employee id as primary key.
Suppose in my file the employee id is started at
column 1 whose length is 3 digit. Now i want to define keys parameter to tell
the system that it is my unique field and i want to search the records by this
key.
So in INDEX of KSDS file it will store the employee id
with its corresponding address in memory.
So be careful while defining the Key column.
Offset means its position from column 1.
Here my employee id field starts at column 1 so its
offset is 3.
So i defined keys(3,0).
If my field length is 5 and starts at column 10 then
keys will be
Keys(5,10).
4) Defining
Control interval
A Control Interval can contain many records. If
the records are not all of constant length, the number of records in each CI
will also vary. Also, as we will see when we discuss record insertion, all CIs
are created with a moderate amount of free space (to leave room for newly
inserted records).
All of the records in a CI (along with their keys) are
packed at the beginning of the CI. At the end of each CI is a descriptor
(including a record length) for each record in the CI. The area between the
records and their descriptors is free space ... to accommodate new records.
It is just like a fixed length block.
Size of control interval is ranging from 4096 bytes to
32k bytes.
In control interval actual records get inserted.
Frankly speaking a programmer never minds how the data
stores internally.
Suppose i have defined my space =1 trk=56,664 bytes
and my control interval size is 4096 bytes. Then 56,664/4096 = approximately 14
Control interval will be created.
All the control interval are grouped in control area.
Control
Area 1
|
Control
interval A
|
Control
interval B
|
Control
interval C
|
Control
interval D
|
Control
interval E
|
Control Area 2
|
Control
interval F
|
Control
interval G
|
Control
interval H
|
Control
interval I
|
Control
interval J
|
I would like to more highlight on programming of VSAM so for deep information about CI and CA please follow the below links
http://www.mainframes360.com/2009/07/vsam-tutorial-01-introduction-to.html
5) Freespace
FREESPACE(CI CA) – Specifies the percentage of free space to reserve for the control intervals (ci) and control areas (ca) of the data component.
6) Record size
RECORDSIZE/RECSZ(AVG ,MAX) – Specifies the average and maximum record size.
Depends upon the requirement.
It's nothing but the minimum and maximum record size.
The out put of program will creates 3 files as follows.
Let me clear it….
The actual data is stored in cluster file i.e. MYID.avinash.ksds1 . you can’t open .data and .Index file that is for syatem use.
Many sites define the program with data name and index name also included in the program but no need to defines this it will automatically created.
So control interval field also multiple of 4096 bytes.
Now I will show you how to store a data manually.
You can’t edit a VSAM file like a ps file if you try to open the file by typing E against it.shows you an error.
So I am using File aid tool to open a VSAM file and stores date in it.
In KSDS always data stored in ascending order.
Suppose If I am going to insert any word which is not ascending then it will shows you error while saving the content.
Now I am inserting amit after zebra then you can see the error message.
So be careful while inserting a data.
Now if I am going to save a duplicate record it will shows a message like
Now if I am going to save a duplicate record it will shows a message like
If I don’t know my record length?
If you don’t know your record length then no need to write it it will take it as variable length records .
Now if I would like to delete my KSDS file as we are creating the file we have authority to delete also.
You may have doubt can I have to delete cluster file ,data file,index file separately. Just a minute I will clear your all doubts.
Now I want to delete my KSDS file name ‘sk648k.avinash.ksds3’ so below jcl I am going to use in my JCL program.
//TXXXXXJ JOB , ,NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE TXXXXX.VSAM.KSDSFILE
/*
So below program I have written in my JCL.
It runs successful and gives maxcc=0.
So all files with data,Index component got deleted.
No comments:
Post a Comment