VSAM CODEs
1. VSAM KSDS FILE DECLARATION AND
PROCESSING
- Define
VSAM KSDS Cluster:
//***************************************************
//* TO DEFINE THE KEY SEQUENCED DATA SET (KSDS)
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(G1BYXXT.INDUS.STUDENT.CLUSTER) -
RECORDSIZE(44,44) -
CYLINDERS(3,2) -
FREESPACE(10,20) -
KEYS(4,0) -
CISZ(4096) -
INDEXED) -
INDEX(NAME(G1BYXXT.INDUS.STUDENT.INDEX)) -
DATA(NAME(G1BYXXT.INDUS.STUDENT.DATA))
/*
//
·
Program to load the records into the KSDS
file ...
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STU-FILE ASSIGN TO STUDD
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS STU-NO
FILE STATUS IS WS-STAT.
DATA DIVISION.
FILE SECTION.
FD STU-FILE.
01 STU-REC.
05 STU-NO PIC 9999.
05 STU-NAME PIC X(20).
05 STU-ADDR PIC X(20).
WORKING-STORAGE SECTION.
77 OPTION PIC X(3) VALUE 'YES'.
77 WS-STAT PIC X(2) VALUE SPACES.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM OPEN-PARA.
PERFORM WRITE-PARA UNTIL OPTION = 'NO'.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN OUTPUT STU-FILE.
WRITE-PARA.
ACCEPT STU-NO.
ACCEPT STU-NAME.
ACCEPT STU-ADDR.
WRITE STU-REC INVALID KEY DISPLAY 'ERROR IN WRITE'.
*************************************************************
* HOW TO USE THE STATUS CODE AND RETURN-CODE REGISTERS *
*************************************************************
IF WS-STAT = '00'
DISPLAY 'RECORD INSERTED SUCCESSFULLY'
ELSE
DISPLAY 'FILE STATUS CODE IS :' WS-STAT
MOVE '3002' TO RETURN-CODE
DISPLAY RETURN-CODE UPON SYSOUT
END-IF.
ACCEPT OPTION.
CLOSE-PARA.
CLOSE STU-FILE.
·
Execution JCL for the KSDS write program..
Execution JCL for the KSDS write program..
//STEP1 EXEC PGM=KSDSWRI
//STEPLIB DD DSN=G1BYXXT.INDUS.LOADLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//STUDD DD DSN=G1BYXXT.INDUS.STUDENT.CLUSTER,DISP=SHR
//SYSIN DD *
1111
VIJAYA
TANUKU
YES
2222
BHASKAR
TANUKU
YES
3333
ANDUKURI
TANUKU
NO
/*
//
·
Program to read the records from KSDS
sequentially ...
ENVIRONMENT
DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STU-FILE ASSIGN TO STUDD
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS STU-NO
FILE STATUS IS WS-STAT.
DATA DIVISION.
FILE SECTION.
FD STU-FILE.
01 STU-REC.
05 STU-NO PIC 9999.
05 STU-NAME PIC X(20).
05 STU-ADDR PIC X(20).
WORKING-STORAGE SECTION.
77 OPTION PIC X(3) VALUE 'YES'.
77 WS-STAT PIC X(2) VALUE SPACES.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM OPEN-PARA.
PERFORM READ-PARA UNTIL OPTION = 'NO'.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN INPUT STU-FILE.
READ-PARA.
READ STU-FILE
AT END
MOVE 'NO' TO OPTION
NOT AT END
PERFORM DISPLAY-PARA
END-READ.
IF WS-STAT = '00'
DISPLAY 'RECORD READ SUCCESSFUL'
ELSE
DISPLAY 'FILE STATUS CODE IS :' WS-STAT
MOVE '3001' TO RETURN-CODE
DISPLAY RETURN-CODE UPON SYSOUT
END-IF.
DISPLAY-PARA.
DISPLAY STU-REC.
CLOSE-PARA.
CLOSE STU-FILE.
·
Execution JCL for the KSDS read program
//STEP1 EXEC PGM=KSDSSER
//STEPLIB DD DSN=G1BYXXT.INDUS.LOADLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//STUDD DD DSN=G1BYXXT.INDUS.STUDENT.CLUSTER,DISP=SHR
//
//
·
KSDS FILE READING DYNAMICALLY....
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STU-FILE ASSIGN TO STUDD
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS STU-NO
FILE STATUS IS WS-STAT.
DATA DIVISION.
FILE SECTION.
FD STU-FILE.
01 STU-REC.
05 STU-NO PIC 9999.
05 STU-NAME PIC X(20).
05 STU-ADDR PIC X(20).
WORKING-STORAGE SECTION.
77 OPTION PIC X(3) VALUE 'YES'.
77 WS-STAT PIC X(2) VALUE SPACES.
77 WS-STU-NO PIC 9(4) VALUE ZEROS.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM OPEN-PARA.
DISPLAY 'ENTER THE STUDENT NUMBER TO READ'.
ACCEPT WS-STU-NO.
MOVE WS-STU-NO TO STU-NO.
START STU-FILE INVALID KEY DISPLAY 'ERROR'.
PERFORM READ-PARA UNTIL OPTION = 'NO'.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN INPUT STU-FILE.
READ-PARA.
READ STU-FILE NEXT RECORD
AT END
MOVE 'NO' TO OPTION
NOT AT END
PERFORM DISPLAY-PARA
END-READ.
IF WS-STAT = '00'
DISPLAY 'RECORD READ SUCCESSFUL'
ELSE
DISPLAY 'FILE STATUS CODE IS :' WS-STAT
MOVE '3001' TO RETURN-CODE
DISPLAY RETURN-CODE UPON SYSOUT
END-IF.
DISPLAY-PARA.
DISPLAY STU-REC.
CLOSE-PARA.
CLOSE STU-FILE.
·
Execution JCL
//STEP1 EXEC PGM=KSDSDYR
//STEPLIB DD DSN=G1BYXXT.INDUS.LOADLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//STUDD DD DSN=G1BYXXT.INDUS.STUDENT.CLUSTER,DISP=SHR
//SYSIN DD *
1111
/*
//
2. VSAM ESDS FILE DECLARATION AND PROCESSING
·
Define VSAM ESDS Cluster:
//***************************************************
//* SAMPLE JCL TO CREATE ENTRY SEQUENCED DATA SET(ESDS)
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(G1BYXXT.INDUS.STUDENT.ESDS.CLUSTER)-
RECORDSIZE(44,44)-
CYLINDERS(3,2)-
CISZ(4096)-
NONINDEXED) -
DATA(NAME(G1BYXXT.INDUS.STUDENT.ESDS.DATA))
/*
//
·
Program to load the records into the ESDS
file ...
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STU-FILE ASSIGN TO AS-STUDD
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD STU-FILE.
01 STU-REC.
05 STU-NO PIC 9999.
05 STU-NAME PIC X(20).
05 STU-ADDR PIC X(20).
WORKING-STORAGE SECTION.
77 OPTION PIC X(3) VALUE 'YES'.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM OPEN-PARA.
PERFORM WRITE-PARA UNTIL OPTION = 'NO'.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN OUTPUT STU-FILE.
WRITE-PARA.
ACCEPT STU-NO.
ACCEPT STU-NAME.
ACCEPT STU-ADDR.
WRITE STU-REC.
ACCEPT OPTION.
CLOSE-PARA.
CLOSE STU-FILE.
·
Execution JCL for the ESDS write program
//STEP1 EXEC PGM=ESDSWRI
//STEPLIB DD DSN=G1BYXXT.INDUS.LOADLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//STUDD DD DSN=G1BYXXT.INDUS.STUDENT.ESDS.CLUSTER,DISP=SHR
//SYSIN DD *
1111
VIJAYA
TANUKU
YES
2222
BHASKAR
TANUKU
YES
3333
ANDUKURI
TANUKU
NO
/*
//
3. VSAM RRDS FILE DECLARATION AND PROCESSING
·
Define VSAM RRDS Cluster:
//***************************************************
//*SAMPLE JCL TO CREATE RRDS
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(G1BYXXT.INDUS.RRDS.CLUSTER) -
RECORDSIZE(44,44) -
CYLINDERS(3,2) -
NUMBERED) -
DATA(NAME(G1BYXXT.INDUS.RRDS.DATA))
/*
//
·
Program to load the records into the RRDS file ...
ENVIRONMENT
DIVISION.
Program to load the records into the RRDS file ...
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STU-FILE ASSIGN TO STUDD
ORGANIZATION IS RELATIVE
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-STAT.
DATA DIVISION.
FILE SECTION.
FD STU-FILE.
01 STU-REC.
05 STU-NO PIC 9999.
05 STU-NAME PIC X(20).
05 STU-ADDR PIC X(20).
WORKING-STORAGE SECTION.
77 OPTION PIC X(3) VALUE 'YES'.
77 WS-STAT PIC X(2) VALUE SPACES.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM OPEN-PARA.
PERFORM WRITE-PARA UNTIL OPTION = 'NO'.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN OUTPUT STU-FILE.
WRITE-PARA.
ACCEPT STU-NO.
ACCEPT STU-NAME.
ACCEPT STU-ADDR.
WRITE STU-REC INVALID KEY DISPLAY 'ERROR IN WRITE'.
*************************************************************
* HOW TO USE THE STATUS CODE AND RETURN-CODE REGISTERS *
*************************************************************
IF WS-STAT = '00'
DISPLAY 'RECORD INSERTED SUCCESSFULLY'
ELSE
DISPLAY 'FILE STATUS CODE IS :' WS-STAT
MOVE '3002' TO RETURN-CODE
DISPLAY RETURN-CODE UPON SYSOUT
END-IF.
ACCEPT OPTION.
CLOSE-PARA.
CLOSE STU-FILE.
·
Execution JCL for the RRDS write program
//STEP1 EXEC PGM=RRDSWRI
//STEPLIB DD DSN=G1BYXXT.INDUS.LOADLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//STUDD DD DSN=G1BYXXT.INDUS.RRDS.CLUSTER,DISP=SHR
//SYSIN DD *
1111
VIJAYA
TANUKU
YES
2222
BHASKAR
TANUKU
YES
3333
ANDUKURI
TANUKU
NO
/*
//
4. ALTERNATE INDEX
·
Define Alternate index
Define Alternate index
//***************************************************
//*SAMPLE JCL TO CREATE ALTERNATE INDEX
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE AIX -
(NAME(G1BYXXT.INDUS.STUDENT.CLUSTER.ALX) -
RELATE(G1BYXXT.INDUS.STUDENT.CLUSTER) -
CISZ(4096) -
KEYS(20,4) -
NONUNIQUEKEY -
UPGRADE-
RECORDSIZE(29,29)-
CYLINDERS(3,2)-
FREESPACE(10,20)-
)
/*
//
·
Define path
//***************************************************
//*SAMPLE JCL TO DEFINE PATH
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE PATH (NAME(G1BYXXT.INDUS.STUDENT.CLUSTER.PATH) -
PATHENTRY(G1BYXXT.INDUS.STUDENT.CLUSTER.ALX) UPDATE
/*
//
·
Build index command
//***************************************************
//*SAMPLE JCL TO BUILD ALTERNATE INDEX
//***************************************************
//STEP EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
BLDINDEX -
INDATASET(G1BYXXT.INDUS.STUDENT.CLUSTER) -
OUTDATASET(G1BYXXT.INDUS.STUDENT.CLUSTER.ALX)
/*
//
·
Reading KSDS file using alternate KEY ....
ENVIRONMENT
DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STU-FILE ASSIGN TO STUDMAST
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS STU-NO
ALTERNATE KEY IS STU-NAME WITH DUPLICATES
FILE STATUS IS WS-STATUS.
DATA DIVISION.
FILE SECTION.
FD STU-FILE.
01 STU-REC.
05 STU-NO PIC 9(4).
05 STU-NAME PIC X(20).
05 STU-ADDR PIC X(20).
WORKING-STORAGE SECTION.
77 OPTION PIC X(3) VALUE 'YES'.
77 WS-NAME PIC X(20).
77 WS-STATUS PIC XX VALUE SPACES.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM OPEN-PARA.
PERFORM READ-PARA UNTIL OPTION = 'NO'.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN INPUT STU-FILE.
READ-PARA.
DISPLAY 'ENTER THE NAME TO READ:'.
ACCEPT WS-NAME.
MOVE WS-NAME TO STU-NAME.
READ STU-FILE KEY IS STU-NAME
INVALID KEY DISPLAY 'RECORD NOT FOUND'
NOT INVALID
PERFORM DISPLAY-PARA
END-READ.
IF WS-STATUS = '00'
DISPLAY 'SUCCESS'
ELSE
DISPLAY 'WS-STATUS:' WS-STATUS
END-IF.
ACCEPT OPTION.
DISPLAY-PARA.
DISPLAY STU-REC.
CLOSE-PARA.
CLOSE STU-FILE.
·
Execution JCL to read from the Alternate
index Cluster.
Note: With the cluster we need to mention the path instead of
Mentioning the alternate index cluster.
Care should be taken while giving the ddname to path.
//***************************************************
//STEPOZA EXEC PGM=AIXREAD
//STEPLIB DD DSN=G1BYXXT.INDUS.LOADLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//STUDMAST DD DSN=G1BYXXT.INDUS.STUDENT.CLUSTER,DISP=SHR
//STUDMAS1 DD DSN=G1BYXXT.INDUS.STUDENT.CLUSTER.PATH,DISP=SHR
//SYSIN DD *
BHASKAR
YES
ANDUKURI
NO
/*
//
5. IDCAMS COMMANDS:
·
IDCAMS PRINT command
//***************************************************
//* SAMPLE JCL TO PRINT/DISPLAY VSAM DATA
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//DDIN DD DSN=G1BYXXT.INDUS.SUTDENT.KSDS.CLUSTER,DISP=SHR
//SYSIN DD *
PRINT -
INFILE(DDIN) -
CHAR
/*
//
//***************************************************
//* SAMPLE JCL TO PRINT/DISPLAY VSAM DATA
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
PRINT -
INDATASET(G1BYXXT.INDUS.SUTDENT.KSDS.CLUSTER) -
FROMKEY(4444) -
TOKEY(5555) -
HEX
/*
//
·
IDCAMS ALTER command
//*******************************************************
//*DEMO JCL TO SHOW THE IDCAMS UTILTITY WITH ALTER OPTION
//*******************************************************
//STEP10 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSIN DD *
ALTER G1BYXXT.INDUS.CUSTOMER.INDEX -
NEWNAME(G1BYXXT.INDUS.VIJAY.INDEX)
/*
//
//*******************************************************
//*DEMO JCL TO SHOW THE IDCAMS UTILTITY WITH ALTER OPTION
//*******************************************************
//STEP10 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSIN DD *
ALTER G1BYXXT.INDUS.VIJAY.DATA -
ADDVOLUMES(OZAV05) -
REMOVEVOLUMES(OZAV11)
/*
//
//**************************************************************
//* ALTER THE FREESPACE PARAMETERS USING THE IDCAMS UTILITY
//**************************************************************
//STEP10 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSIN DD *
ALTER G1BYXXT.INDUS.VIJAY.DATA -
FREESPACE(30 30)
/*
//
·
IDCAMS REPRO COMMAND:
//***************************************************
//*SAMPLE JCL REPRO/COPY DATA FROM PS TO VSAM KSDS
//* USING REPOR WE CAN COPY ANY FILE TO ANY FILE
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
REPRO -
INDATASET(G1BYXXT.INDUS.SUTDENT.PSFILE) -
OUTDATASET(G1BYXXT.INDUS.SUTDENT.KSDS.CLUSTER) -
SKIP(3) -
COUNT(3)
/*
//
//***************************************************
//* SAMPLE JCL REPRO/COPY DATA FROM VSAM KSDS TO PS
//* USING REPRO WE CAN COPY ANY FILE TO ANY FILE
//***************************************************
//STEPOZA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//DD1 DD DSN=G1BYXXT.INDUS.SUTDENT.KSDS.CLUSTER,DISP=SHR
//DD2 DD DSN=G1BYXXT.INDUS.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(4444) -
TOKEY(5555)
/*
//
·
IDCAMS LISTCAT COMMAND:
//***************************************************
//*DEMO JCL TO SHOW THE IEBGENR UTILTITY
//***************************************************
//STEP10 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSIN DD *
LISTCAT ENTRIES(G1BYXXT.INDUS.CUSTOMER.CLUSTER) -
VOLUME
/*
//
·
EXPORT COMMAND
//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
/*
·
IMPORT COMMAND
//*THIS IMPORT AND EXPORT COMMAND USED ONLY FOR VSAMFILE.
//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)
/*
//
Comments
Post a Comment