You are on page 1of 9

*CICS with Files:

VSAM files - VIRTUAL STORAGE ACCESS METHODS


VSAM is used to organize and access data, and maintain information about this data Records are
arranged by an index key or by relative byte addressing.
VSAM uses direct or sequential processing of fixed and variable length records on DASD.

- Key-sequenced data set (KSDS)


- Entry-sequenced data set (ESDS)
- Relative record data set (RRDS)
- Linear data set (LDS)

Advantages of VSAM
• One method to support all types of data retrieval (SEQ,RANDOM,DYNAMIC)
• One utility, IDCAMS, to manage everything
• Supports alternate index
 Duplicate data cannot be stored
 Dat a is sorted automatically
• Portable across systems (between cics and tso)

Disadvantages of VSAM
• Require lot of DASD space
• Only resides on DISK

Tape will not work VSAM files

Key-sequenced data set (KSDS)


Insurance policy data
Polnum -- key
Name
Addr
Amt
Date

How to create VSAM files:


1. Using JCL IDCAMS utility
2. Using tool like File-Aid, File-Manager, Ditto etc.,
//IBMUSERA JOB NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(IBMUSER.SIVA.KSDS) -
RECORDSIZE(44,44) -
CYLINDERS(3,2) -
VOL(S7SYS1) -
FREESPACE(10,20) -
KEYS(4,0) -
CISZ(4096) -
REUSE -
INDEXED) -
INDEX(NAME(IBMUSER.SIVA.KSDS.INDEX)) -
DATA(NAME(IBMUSER.SIVA.KSDS.DATA))
/*
//

HOW TO EDIT DATA IN VSAM FILE


Normal E mode will not workie 3.4 option, solution is use Tools

Enter 13 as File Manager tool in primary menu


Enter 2
ENTER DATASET NAME

DIFFERENCE BETWEEN SEQ AND KSDS


DUPLICATE DATA CAN BE ENTERED IN SEQ FILE
DUPLICATE DATA CANNOT BE ENTERED IN KSDS FILE

Data will not be sorted in seq file


Data will sort by default in KSDS file

HOW TO BROWSE THE DATA


OPTION 13 from main menu
Option 1 for view
Enter the file name
ESDS file creation jcl
//IBMUSERA JOB NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(IBMUSER.SIVA.ESDS)-
RECORDSIZE(44,44)-
CYLINDERS(3,2)-
VOL(S7SYS1) -
CISZ(4096)-
REUSE -
NONINDEXED) -
DATA(NAME(IBMUSER.SIVA.ESDS.DATA))
/*
//

ESDS Very similar to seq file – why do we need this? Cross system ex: CICS
ESDS file stores duplicate data and data not in sorted order

RRDS file creation JCL


//IBMUSERA JOB NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(IBMUSER.SIVA.RRDS) -
RECORDSIZE(44,44) -
VOL(S7SYS1) -
CYLINDERS(3,2) -
NUMBERED) -
DATA(NAME(IBMUSER.SIVA.RRDS.DATA))
/*
//

TO ACCESS DATA FROM ALL THE THREE FILE

KEY -- KSDS
RBA -- ESDS
RRN -- RRDS

RBA – RELATIVE BYTE ADDRESS


RRN – RELATIVE RECORD NUMBER

HOW TO ACCESS THE DATA USING COBOL


1. SEQUENTIAL
2. RANDOM
3. DYNAMIC

Data 8 recs
*************************
1001NAME1ADDR110000
1002NAME1ADDR110000
1003NAME2ADDR211000
1004NAME2ADDR211000
1005NAME2ADDR211000
1006NAME2ADDR211000
1007NAME2ADDR211000
1008NAME2ADDR211000

READING DATA FROM 1001 to 1008 sequentially – SEQUENTIAL ACCESS


Read a data only 1005 – RANDOM ACCESS
READ DATA from 1005 to 1008 – dynamic access
COBOL – VSAM programming

Types of organization of files


Sequential -- ps file or ESDS
Indexed -- KSDS
Relative -- RRDS

Access the files


Sequential -- read the data sequential from 1 st to last ( read from record 1,2,3,4)
Random -- read the data somewhere in between ( read only record 3)
Dynamic -- read the data somewhere in between and sequential from there on
( read record 3 and 4)

SELECT STU-FILE ASSIGN TO STUDD sequential file


ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.

SELECT STU-FILE ASSIGN TO AS-STUDD vsamesds file


ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.

SELECT STU-FILE ASSIGN TO STUDD VSAM KSDS


ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS STU-NO

SELECT STU-FILE ASSIGN TO STUDD VSAM RRDS


ORGANIZATION IS RELATIVE
ACCESS MODE IS SEQUENTIAL

SELECT STU-FILE ASSIGN TO STUDD


ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS STU-NO

SELECT STU-FILE ASSIGN TO STUDD


ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS STU-NO
INDEXED -- KSDS
SEQUENTIAL -- ESDS
RELATIVE -- RRDS
ACCESS: SEQ RANDOM DYNAMIC

Commands in IDCAMS for VSAM files


DEFINE -- CREATE VSAM FILE, GDG
REPRO -- COPY FROM VSAM TO VSAM,VSAM TO NON-VSAM,NONVSAM(PS) TO VSAM
PRINT -- TO DISPLAY FILE DATA IN SDSF
LISTCAT -- DISPLAy the attributes of file
Export -- backup - admin
Import -- recovery - admin
ALTER -- TO MODIFY ATTRIBUTES OF FILE (EG: RENAME VSAM FILE)
RENAME FILES, GDG LIMIT, FREESPACE, VOLUMES

//STEP1 EXEC PGM=IDCAMS


//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(IND220.SHIVA.STUDENT.CLUSTER) -
RECORDSIZE(44,44) -
CYLINDERS(3,2) -
FREESPACE(10,20) -
KEYS(4,0) -
CISZ(4096) -
INDEXED) -
INDEX(NAME(IND220.SHIVA.STUDENT.INDEX)) -
DATA(NAME(IND220.SHIVA.STUDENT.DATA))
/*
//

//STEP2 EXEC PGM=IDCAMS


//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
REPRO -
INDATASET(KC02195.KSDSC) -
OUTDATASET(KC02195.KSDSD)
/*

//KC02194A JOB NOTIFY=KC02194


//STEP2 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
REPRO -
INDATASET(KC02194.KSDS1) -
OUTDATASET(KC02194.PS)
/*
//STEP2 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
REPRO -
INDATASET(KC02194.KSDS1) -
OUTDATASET(KC02194.KSDS2) -
SKIP(3) -
COUNT(3)
/*

*****DATA COPIED BETWEEN Student numbers 1001 AND 2001


//STEP4 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//DD1 DD DSN=IND220.SHIVA.SUTDENT.KSDS.CLUSTER,DISP=SHR
//DD2 DD DSN=IND220.SHIVA.SUTDENT.PSFILE.TST1,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(TRK,(1,1),RLSE),
// UNIT=SYSDA,
// DCB=(DSORG=PS,RECFM=FB,LRECL=44,BLKSIZE=440)
//SYSIN DD *
REPRO -
INFILE(DD1) -
OUTFILE(DD2) -
FROMKEY(1001) -
TOKEY(2001)
/*
//

//STEP5 EXEC PGM=IDCAMS


//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
PRINT -
INDATASET(KC02194.KSDS1) -
CHAR
/*
//

//STEP5 EXEC PGM=IDCAMS


//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
PRINT -
INDATASET(KC02194.KSDS1) -
hex
/*
//

//STEP10 EXEC PGM=IDCAMS


//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSIN DD *
ALTERKC02194.KSDS1 -
NEWNAME(KC02194.KSDS1.NEW)
/*
//

 Taking backups by SYS admin


//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//DD1 DD DSN=SSS013.PARA2.KSDS.BACKUP,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,
// DCB=(BLKSIZE=8000)
//SYSIN DD *
EXPORT -
SSS013.PARA2.KSDS.CLUSTER -
OUTFILE(DD1) -
TEMPORARY -
INHIBITSOURCE -
INHIBITTARGET
/*

 Recovery process by SYS admin if any disaster


//STEP1 DD DSN=IDCAMS
//SYSPRINT DD SYSOUT=*
//DD1 DD DSN=SSS013.STU.KSDS.BACKUP,
// DISP=SHR
//SYSIN DD *
IMPORT -
INFILE(DD1) -
OUTDATASET(SSS013.STU.KSDS.CLUSTER)
/*
//

VSAM -> CREATE -> JCL OR TOOL (FILE-AID, FILE MANAGER, DITTO)
COBOL + VSAM
COBOL + VSAM + CICS

You might also like