You are on page 1of 38

VSAM LAB EXERCISES

1)PROGRAM TO CREATE A KSDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE CLUSTER (NAME(MTPLB22.VSAM.KSDS) -
000007 TRACKS(1 2) -
000008 VOLUME(MTBLR1) -
000009 FREESPACE(10 20) -
000010 RECORDSIZE(20 80) -
000011 KEYS(5 0) -
000012 INDEXED -
000013 CISZ(4096))
000014 //

O/P: MTPLB22.VSAM.KSDS
MTPLB22.VSAM.KSDS.DATA
MTPLB22.VSAM.KSDS.INDEX

THE FIRST IS THE ONE WHICH WE HAVE CREATED. AND THE OTHER TWO ARE CREATED BY
THE SYSTEM.
TO VIEW EACH ONE OF THEM TYPE 'PRINT IDS (/) CHAR' INFRONT OF THAT PARTICULAR
PDS THEN U HAVE VIEW THE RECORDS.SINCE THIS IS A VSAM DATA SET WE NEED TO TYPE
THIS COMMAND IN FRONT OF THIS DATA SET. DIRECTLY WE CAN'T EDIT BY TELLING E.
WE HAVE TYPED PRINT IDS (/) CHAR IN FRONT OF MTPLB22.VSAM.KSDS THE OUTPUT IS AS
FOLLOWS.

IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00015,,,
IEC161I MTPLB22.VSAM.KSDS,MTPLB22.VSAM.KSDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.KSDS
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***

NEXT TYPE 'PRINT IDS (/) CHAR' WE GET

IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00016,,,
IEC161I MTPLB22.VSAM.KSDS,MTPLB22.VSAM.KSDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.KSDS.DATA
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***
NEXT TYPE 'PRINT IDS (/) CHAR' WE GET

IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00017,,,
IEC161I MTPLB22.VSAM.KSDS,MTPLB22.VSAM.KSDS.INDEX,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.KSDS.INDEX
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***
2) LETS TRY TO CREATE A ESDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE CLUSTER (NAME(MTPLB22.VSAM.ESDS) -
000007 TRACKS(1 2) -
000008 VOLUME(MTBLR1) -
000009 RECORDSIZE(20 80) -
000010 NONINDEXED)
000011 //

O/P : MTPLB22.VSAM.ESDS
MTPLB22.VSAM.ESDS.DATA

THE FIRST PDS IS CREATED BY THE USER AND THE SECOND IS CREATED BY THE SYSTEM.
NOTE THAT HERE NO INDEX PDS IS CREATED COZ IT IS ESDS.
TYPE 'PRINT IDS (/) CHAR' IN FRONT OF MTPLB22.VSAM.ESDS.

IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00024,,,
IEC161I MTPLB22.VSAM.ESDS,MTPLB22.VSAM.ESDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.ESDS
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***

NEXT TYPE EDIT INFONT OF MTPLB22.VSAM.DATA

IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00025,,,
IEC161I MTPLB22.VSAM.ESDS,MTPLB22.VSAM.ESDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.ESDS.DATA
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12

3) CREATE AN RRDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE CLUSTER (NAME(MTPLB22.VSAM.RRDS) -
000007 TRACKS(1 2) -
000008 VOLUME(MTBLR1) -
000009 FREESPACE(10 20) -
000010 RECORDSIZE(80 80) -
000011 NUMBERED)
000012 //

O/P : MTPLB22.VSAM.RRDS
MTPLB22.VSAM.RRDS.DATA

TYPE 'PRINT IDS (/) CHAR' INFRONT OF MTPLB22.VSAM.RRDS U GET


IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00030,,,
IEC161I MTPLB22.VSAM.RRDS,MTPLB22.VSAM.RRDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.RRDS
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***

EDIT MTPLB22.VSAM.RRDS.DATA (I.E. 'PRINT IDS (/) CHAR')

IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00031,,,
IEC161I MTPLB22.VSAM.RRDS,MTPLB22.VSAM.RRDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.RRDS.DATA
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12

4) CREATE AN VRRDS

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE CLUSTER (NAME(MTPLB22.VSAM.VRRDS) -
000007 TRACKS(1 2) -
000008 VOLUME(MTBLR1) -
000009 FREESPACE(10 20) -
000010 RECORDSIZE(20 80) -
000011 NUMBERED)
000012 //

O/P : MTPLB22.VSAM.VRRDS
MTPLB22.VSAM.VRRDS.DATA
MTPLB22.VSAM.VRRDS.INDEX

EDIT FIRST MEMBER


IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00039,,,
IEC161I MTPLB22.VSAM.VRRDS,MTPLB22.VSAM.VRRDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.VRRDS
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***
NEXT EDIT SECOND MEM
IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00040,,,
IEC161I MTPLB22.VSAM.VRRDS,MTPLB22.VSAM.VRRDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.VRRDS.DATA
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***
NEXT THIRD MEMBER
IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00041,,,
IEC161I MTPLB22.VSAM.VRRDS,MTPLB22.VSAM.VRRDS.INDEX,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.VRRDS.INDEX
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***

5) CREATE AN LDS

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE CLUSTER (NAME(MTPLB22.VSAM.LDS) -
000007 TRACKS(1 2) -
000008 VOLUME(MTBLR1) -
000009 LINEAR)
000010 //

O/P : MTPLB22.VSAM.LDS
MTPLB22.VSAM.LDS.DATA

EDIT MTPLB22.VSAM.LDS
IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00035,,,
IEC161I MTPLB22.VSAM.LDS,MTPLB22.VSAM.LDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.LDS
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***
EDIT MTPLB22.VSAM.LDS.DATA
IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00035,,,
IEC161I MTPLB22.VSAM.LDS,MTPLB22.VSAM.LDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.LDS
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***
EDIT MTPLB22.VSAM.LDS.INDEX
IEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00036,,,
IEC161I MTPLB22.VSAM.LDS,MTPLB22.VSAM.LDS.DATA,USERCAT.TSOUSER
IDC3300I ERROR OPENING MTPLB22.VSAM.LDS.DATA
IDC3351I ** VSAM OPEN RETURN CODE IS 160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC0014I LASTCC=12
***

6) TO LIST THE CATLOG ENTRIES FOR KSDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 LISTCAT ENTRIES (MTPLB22.VSAM.KSDS) ALL

NOTE : U CAN VIEW THE LISTCAT ENTRIES FOR ANY PDS CREATED IN THE ABOVE
PROGRAM. U JUST HAVE TO GIVE THE PDS NAME.
7) NOW WE SHALL ADD SOME RECORDS TO ALL THE VSAM DATA SETS.FIRST START
FROM KSDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 REPRO INDATASET (MTPLB22.VSAM.OUTSDS) -
000007 OUTDATASET (MTPLB22.VSAM.KSDS)

IN THIS PROGRAM WE ARE COPYING RECORDS WHICH IS THERE IN


MTPLB22.VSAM.OUTSDS, THIS IS AN SEQUENTIAL DATA SET TO A NEWLY CREATED KSDS
WITH KEY AS 0 TO 5 CHARACTERS.
IN MTPLB22.VSAM.OUTSDS WE HAVE FOLLOWING RECORDS.
000100 0E100 RAJAN 22AA
000200 0E200 MAHES 22AA
000300 0E300 PRASA 22AA
000400 0E400 SUVED 22AA

NOW THE OUTFILE MTPLB22.VSAM.KSDS HAVE THE FOLLOWING RECORDS.


KEY OF RECORD - 0E100
0E100 RAJAN 22AA 00000100
KEY OF RECORD - 0E200
0E200 MAHES 22AA 00000200
KEY OF RECORD - 0E300
0E300 PRASA 22AA 00000300
KEY OF RECORD - 0E400
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

NOW WE SHALL TRY TO SEE THE ENTRIES IN .DATA AND .INDEX FILES OF THIS PDS.
RBA OF RECORD - 0
0E100 RAJAN 22AA 0000010
0
RBA OF RECORD - 80
0E200 MAHES 22AA 0000020
0
RBA OF RECORD - 160
0E300 PRASA 22AA 0000030
0
RBA OF RECORD - 240
0E400 SUVED 22AA 0000040
0
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

NOW WE SHALL C THE ENTIRES IN .INDEX PDS.


RBA OF RECORD - 0
.9...................6.6.......................................................
.........................................
.........................................
...............................................................................
.........
IDC0005I NUMBER OF RECORDS PROCESSED WAS 1
***
NOW AGAIN RUN THE ABOVE PROGRAM THEN U WILL GET AN ERROR SAYING MAXCC=12
AND IT SAYS
IDC3302I ACTION ERROR ON MTPLB22.VSAM.KSDS
IDC3308I ** DUPLICATE RECORD - KEY FOLLOWS:
000000 F0C5F1F0 F0

IDC3302I ACTION ERROR ON MTPLB22.VSAM.KSDS


IDC3308I ** DUPLICATE RECORD - KEY FOLLOWS:
000000 F0C5F2F0 F0

IDC3302I ACTION ERROR ON MTPLB22.VSAM.KSDS


IDC3308I ** DUPLICATE RECORD - KEY FOLLOWS:
000000 F0C5F3F0 F0

IDC3302I ACTION ERROR ON MTPLB22.VSAM.KSDS


IDC3308I ** DUPLICATE RECORD - KEY FOLLOWS:
000000 F0C5F4F0 F0

IDC31467I MAXIMUM ERROR LIMIT REACHED.


IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC3003I FUNCTION TERMINATED. CONDITION CODE IS 12

IF U GIVE DIFFERENT DATA LETS SAY U GIVE 00E0500 SSDFAA IN THE OUTSDS. IF U RUN
THE ABOVE PROGRAM WITH THIS SDS THEN THE KSDS WILL BE APPENDED WITH THIS NEW
RECORD.

THE SAME PROGRAM CAN BE DONE IN THIS TYPE ALSO.THE DIFFERENCE IS THERE
WE HAVE GIVEN THE IDS AND ODS. HERE WE ARE GIVING THE INFILE AND
OUTFILE AND ASSIGINING IT TO A DD STATEMENT.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.OUTSDS,DISP=SHR
000006 //DD2 DD DSN=MTPLB22.VSAM.KSDS,DISP=SHR
000006 //SYSPRINT DD SYSOUT=*
000007 //SYSIN DD *
000008 REPRO INFILE (DD1) OUTFILE (DD2)

THE ONLY DIFFERENCE IS THERE WE ARE GIVING INDATASET AND OUTDATASET WITHIN
THAT WE ARE GIVING THE PDS NAME. BUT HERE WE ARE GIVING INFILE AND OUTFILE AND
ASSIGNING IT TO DD1 AND DD2 RESPECTIVELY.

8) CREATING ESDS USING SDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.OUTSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.ESDS,DISP=SHR
000006 //SYSPRINT DD SYSOUT=*
000007 //SYSIN DD *
000008 REPRO INFILE (DD1) OUTFILE (DD2)

O/P : EDIT MTPLB22.VSAM.ESDS.THEN U GET THE FOLLOWING MESSAGES.


RBA OF RECORD - 0
0E100 RAJAN 22AA 00000100
RBA OF RECORD - 80
0E200 MAHES 22AA 00000200
RBA OF RECORD - 160
0E300 PRASA 22AA 00000300
RBA OF RECORD - 240
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

EDIT MTPLB22.VSAM.ESDS.DATA
RBA OF RECORD - 0
0E100 RAJAN 22AA 00000100
RBA OF RECORD - 80
0E200 MAHES 22AA 00000200
RBA OF RECORD - 160
0E300 PRASA 22AA 00000300
RBA OF RECORD - 240
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

IF U SUB THE ABOVE PROGRAM ONCE AGAIN U WILL NOT GET ANY ERROR. THE
RECORDS WILL BE AGAIN ADDED AND NOW THE TOTAL RECORDS WOULD BE 8.
COZ IT HAS NOT KEY. THE OUTPUT WOULD BE AS FOLLOWS.

O/P
RBA OF RECORD - 0
0E100 RAJAN 22AA 00000100
RBA OF RECORD - 80
0E200 MAHES 22AA 00000200
RBA OF RECORD - 160
0E300 PRASA 22AA 00000300
RBA OF RECORD - 240
0E400 SUVED 22AA 00000400
RBA OF RECORD - 320
0E100 RAJAN 22AA 00000100
RBA OF RECORD - 400
0E200 MAHES 22AA 00000200
RBA OF RECORD - 480
0E300 PRASA 22AA 00000300
RBA OF RECORD - 560
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 8

9) NOW WE SHALL TRY TO MOVE SDS TO RRDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.OUTSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.RRDS,DISP=SHR
000006 //SYSPRINT DD SYSOUT=*
000007 //SYSIN DD *
000008 REPRO INFILE (DD1) OUTFILE (DD2)

O/P
RELATIVE RECORD NUMBER - 1
0E100 RAJAN 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E200 MAHES 22AA 00000200
RELATIVE RECORD NUMBER - 3
0E300 PRASA 22AA 00000300
RELATIVE RECORD NUMBER - 4
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4

IF U EDIT .DATA THEN


U GET THE SAME OUTPUT AS ABOVE.

IF U AGAIN SUBMIT THE ABOVE PROGRAM THEN THE OUTPUT WOULD BE

INCOMPATABLE DATA.THIS IS COZ THE RRN FROM 1 TO 4 IS ALREADY THERE AND IF U


AGAIN SUBMIT THEN THE RRN FROM 1 TO 4 IS AGAIN COPYING. WHICH IS A DUPLICATE
DATA. IF U WANT TO COPY TWO RRDS WITH SAME RELATIVE RECORD NUMBER THEN U CAN
USE REPLACE COMMAND.BUT THE OLD RECORDS WILL BE OVERWRITTEN.

10) NOW MOVING SDS TO VRRDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.OUTSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.VRRDS,DISP=SHR
000006 //SYSPRINT DD SYSOUT=*
000007 //SYSIN DD *
000008 REPRO INFILE (DD1) OUTFILE (DD2)

O/P EDIT MTPLB22.VSAM.VRRDS.


RELATIVE RECORD NUMBER - 1
0E100 RAJAN 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E200 MAHES 22AA 00000200
RELATIVE RECORD NUMBER - 3
0E300 PRASA 22AA 00000300
RELATIVE RECORD NUMBER - 4
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

EDIT MTPLB22.VSAM.VRRDS.DATA
RBA OF RECORD - 0
....0E100 RAJAN 22AA 00000100
RBA OF RECORD - 84
....0E200 MAHES 22AA 00000200
RBA OF RECORD - 168
....0E300 PRASA 22AA 00000300
RBA OF RECORD - 252
....0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

EDIT MTPLB22.VSAM.VRRDS.INDEX
RBA OF RECORD - 0
.9...................6.6.......................................................
.........................................
.........................................
.........................
IDC0005I NUMBER OF RECORDS PROCESSED WAS 1
***

NOW WE SHALL TRY TO RUN THE SAME PROGRAM AGAIN AND WE SHALL C WAT
HAPPENES.
U GET THIS MAXCC=12
IDCAMS SYSTEM SERVICES TIME:

REPRO INFILE (DD1) OUTFILE (DD2)


IDC3582I INPUT DATA SET ORGANIZATION INCOMPATIBLE WITH OUTPUT DATA SET
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC3003I FUNCTION TERMINATED. CONDITION CODE IS 12

IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 12

11)PROGRAM TO CREATE VSAM DATASETS(KSDS,RRDS,ESDS,LDS) USING JCL DD


STATEMENTS.

000001 //MTPLB22J JOB 234,'CREATE VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=&SYSUID
000003 //ST1 EXEC PGM=IDCAMS
000004 //KSDS DD DSN=MTPLB22.KSDS,
000005 // DISP=(,CATLG),
000006 // SPACE=(400,(5,5)),
000007 // AVGREC=K,RECORG=KS,KEYLEN=5,KEYOFF=0,LRECL=80
000008 //ESDS DD DSN=MTPLB22.ESDS,
000009 // DISP=(,CATLG),
000010 // SPACE=(400,(5,5)),
000011 // AVGREC=K,RECORG=ES,LRECL=80
000012 //RRDS DD DSN=MTPLB22.RRDS,
000013 // DISP=(,CATLG),
000014 // SPACE=(400,(5,5)),
000015 // AVGREC=K,RECORG=RR,LRECL=80
000016 //LDS DD DSN=MTPLB22.LDS,
000017 // DISP=(,CATLG),
000018 // SPACE=(400,(5)),
000019 // AVGREC=K,RECORG=LS,LRECL=80
000020 //SYSPRINT DD SYSOUT=*
000021 //SYSIN DD DUMMY

O/P
MTPLB22.ESDS
MTPLB22.ESDS.DATA
MTPLB22.KSDS
MTPLB22.KSDS.DATA
MTPLB22.KSDS.INDEX
MTPLB22.LDS
MTPLB22.LDS.DATA
MTPLB22.RRDS
MTPLB22.RRDS.DATA

NOTE: 1.MOVING AND SDS TO KSDS,ESDS,RRDS,VRRDS IS POSSIBLE


2. MOVING SDS TO LSD IS NOT POSSIBLE IT GAVE SOME ERROR. WE NEED TO CLARIFY
THIS.
3. WE CAN UPDATE KSDS WITH REPRO COMMAND. PROVIDED THE KEY IS DIFFERENT.
4. WE CAN UPDATE ESDS WITH REPRO COMMAND. THERE IS NO KEY CONCEPT HERE. SO
WE CAN UPDATE THE SAME RECORDS AGAIN.
5. WE CAN'T UPDATE RRDS,VRRDS USING REPRO COMMAND. NEED TO CLARIFY.
12) COPYING AN SDS TO LDS.

WE HAVE TO DO THE FOLLOWING TASKS.


FIRST WE HAVE TO CREATE AN SDS WITH LRECL=4096 AND BLKSIZE AS A MULTIPLE OF
THIS.
THEN HAVE SOME RECORDS IN THAT.
NOW GIVE THIS JCL PROGRAM.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.SAMPLE.SDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.LDS,DISP=SHR
000006 //SYSPRINT DD SYSOUT=*
000007 //SYSIN DD *
000008 REPRO INFILE (DD1) OUTFILE (DD2)
I/P
UR MTPLB22.SAMPLE.SDS. HAS THESE RECORDS.
ASM;OEL ASDFASDFSDFSDF

THEN IN THE LDS. IT WILL BE ADDED LIKE THIS


O/P
RBA OF RECORD - 0
ASM;OEL ASDFASDFSDFSDF

NOW LETS SAY U ADD ONE MORE RECORD IN SAMPLE.SDS.


ASM;OEL ASDFASDFSDFSDF
SECOND RECORD. DON'T WORRY FIRST RECORD IS LIKE THAT :)).

THEN IF U AGAIN RUN THE ABOVE CODE. THEN THE LDS WILL BE UPDATED.

O/P
RBA OF RECORD - 0
ASM;OEL ASDFASDFSDFSDF
-------(SPACES OF NUMBER OF LINES)
00000100
RBA OF RECORD - 4096
ASM;OEL ASDFASDFSDFSDF
-------(SPACES OF NUMBER OF LINES)----
00000100
RBA OF RECORD - 8192
SECOND RECORD. DON'T WORRY FIRST RECORD IS LIKE THAT.
-------(SPACES OF NUMBER OF LINES)
00000200
IDC0005I NUMBER OF RECORDS PROCESSED WAS 3
***
13 ) COPYING FROM A KSDS TO ANOTHER KSDS

IF U R CREATING ANOTHER KSDS WITH SOME OTHER KEY ALSO IT WILL COPY THE
RECORDS FROM THE FIRST KSDS.PROVIDED IF THE NEW KEY U R SPECIFYING IS IN THE
SEQUENTIAL ORDER THEN IT WILL BE COPIED. IF THE RECORDS WHICH U HAVE SPECIFIED
AS KEY IS REPEATED THEN IT WILL NOT BE COPIED.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.KSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS2,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2)

KSDS
KEY OF RECORD - 0E100
0E100 RAJAN 22AA 0000010
KEY OF RECORD - 0E200
0E200 MAHES 22AA 0000020
0
KEY OF RECORD - 0E300
0E300 PRASA 22AA 0000030
0
KEY OF RECORD - 0E400
0E400 SUVED 22AA 0000040
0
KEY OF RECORD - 0E500
0E500 RAJAN 22AA 0000010
0
KEY OF RECORD - 0E600
0E600 MAHES 22AA 0000020
0
KEY OF RECORD - 0E700
0E700 PRASA 22AA 0000030
0
KEY OF RECORD - 0E800
0E800 SUVED 22AA 0000040
0
IDC0005I NUMBER OF RECORDS PROCESSED WAS 8

KSDS2 WE HAVE CREATED WITH KEYS(5 1) BUT THEN ALSO IT IS COPYING SINCE THE
DATA IS IN THE SEQUENTIAL ORDER.
O/P
KSDS2
0E100 RAJAN 22AA 0000010
0
KEY OF RECORD - E200
0E200 MAHES 22AA 0000020
0
KEY OF RECORD - E300
0E300 PRASA 22AA 0000030
0
KEY OF RECORD - E400
0E400 SUVED 22AA 0000040
0
KEY OF RECORD - E500
0E500 RAJAN 22AA 0000010
0
KEY OF RECORD - E600
0E600 MAHES 22AA 0000020
0
KEY OF RECORD - E700
0E700 PRASA 22AA 0000030
0
KEY OF RECORD - E800
0E800 SUVED 22AA 0000040
0
IDC0005I NUMBER OF RECORDS PROCESSED WAS 8

14)COPYING KSDS TO KSDS,ESDS AND RRDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.KSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS2,DISP=SHR
000006 //DD3 DD DSN=MTPLB22.VSAM.ESDS1,DISP=SHR
000007 //DD4 DD DSN=MTPLB22.VSAM.RRDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2)
000011 REPRO INFILE (DD1) OUTFILE (DD3)
000012 REPRO INFILE (DD1) OUTFILE (DD4)

HERE THE RECORDS FROM KSDS WILL BE COPIED TO KSDS2,ESDS1 AND RRDS1. IF U R
COPYING AN KSDS TO RRDS WHICH ALREADY HAS SOME RECORDS THEN IT IS NOT
POSSIBLE (HERE U R APPENDING UR KSDS RECORDS TO RRDS).

O/P
TYPE 'PRINT IDS (/) CHAR ' INFRONT OF EACH CLUSTER NAME U WILL HAVE RECORDS
ADDED INTO IT.

15)COPYING ESDS TO KSDS,ESDS AND RRDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.ESDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS1,DISP=SHR
000006 //DD3 DD DSN=MTPLB22.VSAM.ESDS1,DISP=SHR
000007 //DD4 DD DSN=MTPLB22.VSAM.RRDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2)
000011 REPRO INFILE (DD1) OUTFILE (DD3)
000012 REPRO INFILE (DD1) OUTFILE (DD4)

O/P
IT WILL BE COPIED PROVIDED IN THE INPUT FILE 'ESDS' WHILE COPYING TO KSDS THE
KEYS SHOULD NOT BE UNIQUE.WITH REPRO COMMAND U CAN'T APPEND AN ESDS TO RRDS.
USING REUSE WE CAN APPEND.

16)COPYING RRDS TO KSDS, ESDS AND RRDS.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.RRDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS1,DISP=SHR
000006 //DD3 DD DSN=MTPLB22.VSAM.ESDS1,DISP=SHR
000007 //DD4 DD DSN=MTPLB22.VSAM.RRDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2)
000011 REPRO INFILE (DD1) OUTFILE (DD3)
000012 REPRO INFILE (DD1) OUTFILE (DD4)

O/P :ALL THE THREE VSAM DATA SET WILL BE CREATED. IF U R COPYING AN RRDS TO
ANOTHER RRDS THEN WE HAVE TO NOTE THAT THE RRN SHOULD NOT BE SAME IF NOT U
WILL GET ERROR.IF U WANT TO COPY THE SAME RRN RRDS DATA SETS THERE ARE TWO
WAYS.

17)WE SHALL NOW COPY AND RRDS TO ANOTHER RRDS WITH SAME
RRN(RELATIVE RECORD NUMBER).WE CAN DO THIS USING FROMNUMBER()
TONUMBER().

IN FILE :MTPLB22.VSAM.RRDS
RELATIVE RECORD NUMBER - 1
0E100 RAJAN 22AA 0000100
RELATIVE RECORD NUMBER - 2
0E200 MAHES 22AA 00000200
RELATIVE RECORD NUMBER - 3
0E300 PRASA 22AA 00000300
RELATIVE RECORD NUMBER - 4
0E400 SUVED 22AA 00000400

OUT FILE: MTPLB22.VSAM.RRDS1


IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
RELATIVE RECORD NUMBER - 1
0E100 RAJAN 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E200 MAHES 22AA 00000200
RELATIVE RECORD NUMBER - 3
0E300 PRASA 22AA 00000300
RELATIVE RECORD NUMBER - 4
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4

PROGRAM IS AS FOLLOWS.
NEED TO CLARIFY.

18)COPYING RRDS TO RRDS1 USING REPLACE COMMAND.

MTPLB22.VSAM.RRDS
RELATIVE RECORD NUMBER - 1
0E100 RAJAN 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E200 MAHES 22AA 00000200
RELATIVE RECORD NUMBER - 3
0E300 PRASA 22AA 00000300
RELATIVE RECORD NUMBER - 4
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4

MTPLB22.VSAM.RRDS1
RELATIVE RECORD NUMBER - 1
0E500 RAJAN 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E600 MAHES 22AA 00000200
RELATIVE RECORD NUMBER - 3
0E700 PRASA 22AA 00000300
RELATIVE RECORD NUMBER - 4
0E800 SUVED 22AA 00000400
RELATIVE RECORD NUMBER - 5
0E900 WAQTD 22AA 00000500
RELATIVE RECORD NUMBER - 6
0E110 RAMED 22AA 00000600
IDC0005I NUMBER OF RECORDS PROCESSED WAS 6

PROGRAM TO COPY RRDS TO RRDS1 WHICH HAS RRN SAME USING REPLACE COMMAND.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.RRDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.RRDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2) -
000011 REPLACE
000012 //

O/P : MTPLB22.VSAM.RRDS1
RELATIVE RECORD NUMBER - 1
0E100 RAJAN 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E200 MAHES 22AA 00000200
RELATIVE RECORD NUMBER - 3
0E300 PRASA 22AA 00000300
RELATIVE RECORD NUMBER - 4
0E400 SUVED 22AA 00000400
RELATIVE RECORD NUMBER - 5
0E900 WAQTD 22AA 00000500
RELATIVE RECORD NUMBER - 6
0E110 RAMED 22AA 00000600
IDC0005I NUMBER OF RECORDS PROCESSED WAS 6

19)COPYING KSDS TO KSDS1 HAVING SAME KEY NUMBER. WATCH THE INPUT AND
OUTPUT FILE CAREFULLY WITH THE OUTPUT.

IN FILE : MTPLB22.VSAM.KSDS
KEY OF RECORD - 0E100
0E100 RAJAN 22AA 00000100
KEY OF RECORD - 0E200
0E200 MAHES 22AA 00000200
KEY OF RECORD - 0E300
0E300 PRASA 22AA 00000300
KEY OF RECORD - 0E400
0E400 SUVED 22AA 00000400
KEY OF RECORD - 0E500
0E500 RAJAN 22AA 00000100
KEY OF RECORD - 0E600
0E600 MAHES 22AA 00000200
KEY OF RECORD - 0E700
0E700 PRASA 22AA 00000300
KEY OF RECORD - 0E800
0E800 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 8

OUT FILE : MTPLB22.VSAM.KSDS1.


KEY OF RECORD - E100
0E100 RAJ 22AA 00000100
KEY OF RECORD - E200
0E200 SIMRAN22AA 00000200
KEY OF RECORD - E300
0E300 RAHUL 22AA 00000300
KEY OF RECORD - E400
0E400 NAVYA 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***
ACTUAL PROGRAM
000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,
000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.KSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2) -
000011 REPLACE
000012 //

O/P : MTPLB22.VSAM.KSDS1.
KEY OF RECORD - E100
0E100 RAJAN 22AA 00000100
KEY OF RECORD - E200
0E200 MAHES 22AA 00000200
KEY OF RECORD - E300
0E300 PRASA 22AA 00000300
KEY OF RECORD - E400
0E400 SUVED 22AA 00000400
KEY OF RECORD - E500
0E500 RAJAN 22AA 00000100
KEY OF RECORD - E600
0E600 MAHES 22AA 00000200
KEY OF RECORD - E700
0E700 PRASA 22AA 00000300
KEY OF RECORD - E800
0E800 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 8
***

20)COPYING KSDS TO KSDS1 USING FROMKEY() TOKEY().

INPUT FILE : MTPLB22.VSAM.KSDS


KEY OF RECORD - E100
0E100 RAJ 22AA 00000100
KEY OF RECORD - E200
0E200 SIMRAN22AA 00000200
KEY OF RECORD - E300
0E300 RAHUL 22AA 00000300
KEY OF RECORD - E400
0E400 NAVYA 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
OUTPUTFILE: MTPLB22.VSAM.KSDS1
KEY OF RECORD - E100
0E100 RAMYA 22AA 00000100
KEY OF RECORD - E500
0E500 RAGNU 22AA 00000110
KEY OF RECORD - E600
0E600 PRASAD22AA 00000120
KEY OF RECORD - E700
0E700 SACHN 22AA 00000130
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4

PROGRAM IS AS FOLLOWS
000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,
000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.KSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2) -
000011 FROMKEY(E200) TOKEY(E400)
000012 //

O/P MTPLB22.VSAM.KSDS1
KEY OF RECORD - E100
0E100 RAMYA 22AA 00000100
KEY OF RECORD - E200
0E200 SIMRAN22AA 00000200
KEY OF RECORD - E300
0E300 RAHUL 22AA 00000300
KEY OF RECORD - E400
0E400 NAVYA 22AA 00000400
KEY OF RECORD - E500
0E500 RAGNU 22AA 00000110
KEY OF RECORD - E600
0E600 PRASAD22AA 00000120
KEY OF RECORD - E700
0E700 SACHN 22AA 00000130
IDC0005I NUMBER OF RECORDS PROCESSED WAS 7

THE SAME PROGRAM CAN BE DONE USING SKIP() COUNT()

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.KSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2) -
000011 SKIP(1) COUNT(3)
000012 //

O/P : WILL BE SAME AS THE ABOVE PROGRAM.

21)PROGRAM TO COPY ESDS1 TO KSDS1 USING FROMADDRESS() TOADDRESS()


MTPLB22.VSAM.ESDS1
RBA OF RECORD - 0
0E100 RAJAN 22AA 00000100
RBA OF RECORD - 80
0E200 MAHES 22AA 00000200
RBA OF RECORD - 160
0E300 PRASA 22AA 00000300
RBA OF RECORD - 240
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

MTPLB22.VSAM.KSDS1
KEY OF RECORD - E100
0E100 AAAAA 22AA 00000100
KEY OF RECORD - E200
0E200 BBBBB 22AA 00000110
IDC0005I NUMBER OF RECORDS PROCESSED WAS 2
***

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.ESDS1,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2) -
000011 FROMADDRESS(160) TOADDRESS(240)
000012 //

O/P MTPLB22.VSAM.KSDS1
KEY OF RECORD - E100
0E100 AAAAA 22AA 00000100
KEY OF RECORD - E200
0E200 BBBBB 22AA 00000110
KEY OF RECORD - E300
0E300 PRASA 22AA 00000300
KEY OF RECORD - E400
0E400 SUVED 22AA 00000400
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

22)PROGRAM TO KNOW THE USAGE OF REUSE.

MTPLB22.VSAM.KSDS
KEY OF RECORD - E100
0E100 AAAAA 22AA 00000100
KEY OF RECORD - E200
0E200 BBBBB 22AA 00000110
KEY OF RECORD - E300
0E300 CCCCC 22AA 00000120
KEY OF RECORD - E400
0E400 DDDDD 22AA 00000130
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***
MTPLB22.VSAM.KSDS1
KEY OF RECORD - E500
0E500 EEEEE 22AA 00000100
KEY OF RECORD - E600
0E600 FFFFF 22AA 00000110
KEY OF RECORD - E700
0E700 GGGGG 22AA 00000120
KEY OF RECORD - E800
0E800 HHHHH 22AA 00000130
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***
THIS IS PROGRAM. WE ARE TRYING TO REUSE KSDS1.WE CAN NOTE IN THE OUTPUT THAT
KSDS1 IS COMPLETELY OVERWRITTEN WITH KSDS FILE.
NOTE: BEFORE WE CAN USE KSDS1 IN THIS PROGRAM. FIRST WE HAVE TO CREATE KSDS1
USING REUSE PARAMATER.THEN ONLY WE CAN REUSE IN THIS PROGRAM.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.KSDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.KSDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2) REUSE
000012 //

O/P MTPLB22.VSAM.KSDS1
KEY OF RECORD - E100
0E100 AAAAA 22AA 00000100
KEY OF RECORD - E200
0E200 BBBBB 22AA 00000110
KEY OF RECORD - E300
0E300 CCCCC 22AA 00000120
KEY OF RECORD - E400
0E400 DDDDD 22AA 00000130
IDC0005I NUMBER OF RECORDS PROCESSED WAS 4
***

23)COPYING TWO RRDS FILES WITH REPLACE AND FROMNUMBER()


TONUMBER().HERE IN THE FIRST FILE WE HAVE 7 RECORDS. IN THE SECOND FILE
WE HAVE 7 RECORDS. WE ARE COPYING FIRST RRDS RECORDS FROM 1 TO 4 TO
THE SECOND RRDS RECORDS REPLACING THE RECORDS.WATCH THE O/P.

MTPLB22.VSAM.RRDS
RELATIVE RECORD NUMBER -1
0E100 RAMYA 22AA 00000100
RELATIVE RECORD NUMBER -1
0E100 RAMYA 22AA 00000100
RELATIVE RECORD NUMBER -2
0E200 RAGNU 22AA 00000110
RELATIVE RECORD NUMBER -3
0E300 PRASAD22AA 00000120
RELATIVE RECORD NUMBER -4
0E400 SACHN 22AA 00000130
RELATIVE RECORD NUMBER -5
0E500 SEWAG 22AA 00000140
RELATIVE RECORD NUMBER -6
0E600 LAXMA 22AA 00000150
RELATIVE RECORD NUMBER - 7
0E700 ASDF 22AA 00000160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 7

MTPLB22.VSAM.RRDS1
RELATIVE RECORD NUMBER - 1
0E100 EEEEE 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E200 FFFFF 22AA 00000110
RELATIVE RECORD NUMBER - 3
0E300 GGGGG 22AA 00000120
RELATIVE RECORD NUMBER - 4
0E400 HHHHH 22AA 00000130
RELATIVE RECORD NUMBER - 5
0E500 IIIII 22AA 00000140
RELATIVE RECORD NUMBER - 6
0E600 JJJJJ 22AA 00000150
RELATIVE RECORD NUMBER - 7
0E700 KKKKK 22AA 00000160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 7
***
PROGRAM
000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,
000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.RRDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.RRDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2) -
000011 REPLACE -
000012 FROMNUMBER(1) TONUMBER(4)
000013 //

NOTE: WE CAN USE REPLACE WITH SKIP() COUNT() ALSO

O/P :MTPLB22.VSAM.RRDS1

RELATIVE RECORD NUMBER - 1


0E100 RAMYA 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E200 RAGNU 22AA 00000110
RELATIVE RECORD NUMBER - 3
0E300 PRASAD22AA 00000120
RELATIVE RECORD NUMBER - 4
0E400 SACHN 22AA 00000130
RELATIVE RECORD NUMBER - 5
0E500 IIIII 22AA 00000140
RELATIVE RECORD NUMBER - 6
0E600 JJJJJ 22AA 00000150
RELATIVE RECORD NUMBER - 7
0E700 KKKKK 22AA 00000160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 7
***

23) IF WE WANT TO COPY RECORDS FROM RRN=2 TO RRN=4 AND FROM RRN=6 TO
RRN=7.THE PROGRAM IS AS FOLLOWS.
000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,
000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //DD1 DD DSN=MTPLB22.VSAM.RRDS,DISP=SHR
000005 //DD2 DD DSN=MTPLB22.VSAM.RRDS1,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD *
000010 REPRO INFILE (DD1) OUTFILE (DD2) -
000011 FROMNUMBER(2) TONUMBER(4)
000012 REPRO INFILE (DD1) OUTFILE (DD2) -
000013 SKIP(5) COUNT(2)
000014 //

I/P:
RELATIVE RECORD NUMBER - 1
0E100 RAMYA 22AA 00000100
RELATIVE RECORD NUMBER - 2
0E200 RAGNU 22AA 00000110
RELATIVE RECORD NUMBER - 3
0E300 PRASAD22AA 00000120
RELATIVE RECORD NUMBER - 4
0E400 SACHN 22AA 00000130
RELATIVE RECORD NUMBER - 5
0E500 SEWAG 22AA 00000140
RELATIVE RECORD NUMBER - 6
0E600 LAXMA 22AA 00000150
RELATIVE RECORD NUMBER - 7
0E700 ASDF 22AA 00000160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 7
***

O/P
RELATIVE RECORD NUMBER - 2
0E200 RAGNU 22AA 00000110
RELATIVE RECORD NUMBER - 3
0E300 PRASAD22AA 00000120
RELATIVE RECORD NUMBER - 4
0E400 SACHN 22AA 00000130
RELATIVE RECORD NUMBER - 6
0E600 LAXMA 22AA 00000150
RELATIVE RECORD NUMBER - 7
0E700 ASDF 22AA 00000160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 5
***

24)TAKING THE BACKUP OF UR VSAM DATA SETS USING EXPORT AND IMPORT
COMMAND.

000001 //MTPLB22J JOB 123,PRAS,


000002 // NOTIFY=&SYSUID
000003 //STEP EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 EXPORT MTPLB22.VSAM.KSDS ODS(MTPLB22.VSAM.SDSUP)-
000007 TEMPORARY
000008 //
BEFORE U RUN THIS PROGRAM U SHOULD HAVE AN SDS FILE WITH THE NAME
MTPLB22.VSAM.SDSUP. NOW UR TRYING TO TAKE THE BACKUP OF VSAM DATA SET. NOTE
THAT WHILE TAKING THE BACKUP BOTH THE DATASET CAN'T BE A VSAM DATA SET. HERE
TEMPORARY MEANS THE ORIGINAL FILE WILL NOT BE DELETED AND A BACKUP FILE WILL BE
CREATED.NOTE THAT THE SDSUP U HAVE CREATED AFTER U EXPORT WILL BECOME AN
VSAM DATA SET. SO IF U WANT TO C THE CONTENT THEN U HAVE TO TYPE 'PRINT IDS (/)
CHAR'.

IF U SAY TEMPORARY WITH INHIBITSOURCE OPTION THEN THE ORIGINAL DATA SET
BECOMES READ-ONLY. U CAN USE THIS INHIBITSOURCE OPTION ONLY WITH
TEMPORARY OPTION. IF U TRY TO ADD OR UPDATE TO THIS KSDS THEN U WILL GET THE
ERROR AS

IDC3300I ERROR OPENING MTPLB22.VSAM.KSDS


IDC3351I ** VSAM OPEN RETURN CODE IS 168
IDC0005I NUMBER OF RECORDS PROCESSED WAS 0
IDC3003I FUNCTION TERMINATED. CONDITION CODE IS 12
IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 12

25) LETS ASSUME THAT WE HAVE EXPORTED A KSDS FILE USING THE BELOW
PROGRAM.
HERE ERASE MEANS THE DELETED KSDS FILE WILL BE REPLACED WITH BINARY
ZERO.

000001 //MTPLB22J JOB 123,PRAS,


000002 // NOTIFY=&SYSUID
000003 //STEP EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 EXPORT MTPLB22.VSAM.KSDS ODS(MTPLB22.VSAM.SDSUP)-
000007 PERMANENT-
000008 INHIBITTARGET-
000009 ERASE
000010 //

O/P : AFTER THE EXECUTION THE KSDS FILE U HAVE MENTIONED HERE WILL BE DELETED.
WHEN U TRY TO VIEW THIS IT WILL NOT BE THERE.BUT U CAN C THE RECORDS ARE COPIED
FROM KSDS TO SDSUP FILE.

26)TO IMPORT THE ABOVE MENTIONED EXPORTED FILE.

000001 //MTPLB22J JOB 123,PRAS,


000002 // NOTIFY=&SYSUID
000003 //STEP EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 IMPORT IDS(MTPLB22.VSAM.SDSUP) ODS(MTPLB22.VSAM.KSDS)
000007 //

O/P :NOW U CAN AGAIN C THE KSDS FILE WHICH WAS DELETED. U CAN EDIT AND C THAT
VSAMDATA SET.
IF U WANT TO CHANGE THE ATTRIBUTES OF THE FILE WHICH U R TRYING TO IMPORT THEN
U CAN DO THAT USING THE BELOW SYSIN DD * STATEMENTS.
000005 //SYSIN DD *
000006 IMPORT IDS(MTPLB22.VSAM.SDSUP) -
000007 ODS(MTPLB22.VSAM.KSDS) -
000008 OBJECTS ((MTPLB22.VSAM.KSDS -
000009 NEWNAME(MTPLB22.VSAM.IMPKSDS) -
000010 VOLUME(USER01))) -
HERE WE ARE CHANGING THE NAME OF THE BASE CLUSTER AND STORING IT IN A
DIFFERENT VOLUME SERIAL. EARLIER THE DATA SET IS STORED IN MTBLR1 NOW WE ARE
CHANGIN IT TO USER01.
NOTE: IF U DELETE THE MTPLB22.VSAM.KSDS WHICH U HAVE JUST IMPORTED. AND AGAIN
TRY TO IMPORT THE FILE AGAIN THEN U HAVE TO USE INTOEMPTY OPTION.

000001 //MTPLB22J JOB 123,PRAS,CLASS=A,


000002 // NOTIFY=&SYSUID
000003 //STEP EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 IMPORT IDS(MTPLB22.VSAM.SDSUP) -
000007 ODS(MTPLB22.VSAM.KSDS) -
000011 INTOEMPTY
000012 //

THEN AGAIN THE KSDS FILE WILL BE CREATED AND THE DATA IS RETRIVED BACK. WE CAN
IMPORT A PARTICULAR DATA SET ANY NUMBER OF TIMES USING INTOEMPTY. BUT BEFORE
THIS THE BASE CLUSTER SHOULD BE DELETED.

27)LETS ASSUME U HAVE CREATED A KSDS WITH FREESPACE (10 20). NOW U
WANT TO CHANGE THE PERCENTAGE.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE CLUSTER (NAME(MTPLB22.VSAM.KSDS1) -
000007 TRACKS(1 2) -
000008 VOLUME(MTBLR1) -
000009 FREESPACE(10 20) -
000010 RECORDSIZE(20 80) -
000011 KEYS(5 1) -
000012 INDEXED -
000013 CISZ(4096) -
000014 REUSE)
000015 //

IF U C THE LISTCAT ENTRIES THE FREESPACE WILL BE 49152.


HERE IS A PART OF THE LISTCAT ENTIRES.

REC-TOTAL--------------0 SPLITS-CI--------------0 EXCPS--------


---------0 INDEX:
REC-DELETED------------0 SPLITS-CA--------------0 EXTENTS------
---------1 LEVELS-----------------0
REC-INSERTED-----------0 FREESPACE-%CI----------10 SYSTEM-TIMEST
MP: ENTRIES/SECT-----------3
REC-UPDATED------------0 FREESPACE-%CA----------20 X'000000
000000000' SEQ-SET-RBA------------0
REC-RETRIEVED----------0 FREESPC------------49152
HI-LEVEL-RBA-----------0
ALLOCATION
SPACE-TYPE---------TRACK HI-A-RBA-----------49152
SPACE-PRI--------------1 HI-U-RBA---------------0
SPACE-SEC--------------1
VOLUME
VOLSER------------MTBLR1 PHYREC-SIZE---------4096 HI-A-RBA-----
-----49152 EXTENT-NUMBER----------1
DEVTYPE------X'3010200F' PHYRECS/TRK-----------12 HI-U-RBA-----
---------0 EXTENT-TYPE--------X'40'
VOLFLAG------------PRIME TRACKS/CA--------------1
EXTENTS:
LOW-CCHH-----X'014B000B' LOW-RBA----------------0 TRACKS-------

THIS PROGRAM WE ARE CHANGING THE FREESPACE. NOTE THAT HERE WE ARE USING THE
DATA NAME WITH THE ALTER COMMAND AND NOT THE BASE CLUSTER NAME.

000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,


000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 ALTER MTPLB22.VSAM.KSDS1.DATA -
000007 FREESPACE(60 30)
000008 //

O/P
RKP--------------------1 MAXLRECL--------------80 EXCPEXIT------
----(NULL) CI/CA-----------------12
SHROPTNS(1,3) RECOVERY UNIQUE NOERASE INDEXED
NOWRITECHK NOIMBED NOREPLICAT
UNORDERED REUSE NONSPANNED
STATISTICS
REC-TOTAL--------------0 SPLITS-CI--------------0 EXCPS---------
---------0
REC-DELETED------------0 SPLITS-CA--------------0 EXTENTS-------
---------1
REC-INSERTED-----------0 FREESPACE-%CI---------60 SYSTEM-TIMESTA
MP:
REC-UPDATED------------0 FREESPACE-%CA---------30 X'0000000
000000000'
REC-RETRIEVED----------0 FREESPC------------49152
ALLOCATION
SPACE-TYPE---------TRACK HI-A-RBA-----------49152
SPACE-PRI--------------1 HI-U-RBA---------------0
SPACE-SEC--------------1
VOLUME
VOLSER------------MTBLR1 PHYREC-SIZE---------4096 HI-A-RBA------
-----49152 EXTENT-NUMBER----------1
DEVTYPE------X'3010200F' PHYRECS/TRK-----------12 HI-U-RBA------
***
IN THE SAME WAY WE CAN CHANGE THE PASSWORDS, BUFFERSPACE, CLUSTER
NAMES,CHANGE THE VOLUME ETC. USING ALTER COMMAND.

28)IF U WANT TO TAKE BACKUP USING REPRO COMMAND.


BEFORE U EXECUTE THIS PROGRAM U NEED TO HAVE BACKUP AS A VSAM DATA SET WHICH
HAS REUSE WHILE CREATING. IT IS A MUST. IF NOT U CAN'T GIVE REUSE HERE INTHIS
PROGRAM FOR BACKUP.

000001 //MTPLB22B JOB ,,NOTIFY=&SYSUID


000002 //BACKUP EXEC PGM=IDCAMS
000003 //SYSPRINT DD SYSOUT=*
000004 //SYSIN DD *
000005 REPRO IDS(MTPLB22.VSAM.KSDS) -
000006 ODS(MTPLB22.VSAM.BACKUP) REUSE
000007 IF LASTCC = 0 THEN -
000008 DO
000009 DELETE (MTPLB22.VSAM.KSDS)
000010 DEFINE CLUSTER (NAME (MTPLB22.VSAM.KSDS) -
000011 INDEXED -
000012 KEYS(5 1))
000013 REPRO IDS(MTPLB22.VSAM.BACKUP) -
000014 ODS(MTPLB22.VSAM.KSDS)
000015 END
000016 /*
000017 //

IF U RUN THIS PROGRAM THEN U MIGHT GET THE ERROR SAYING MAXCC=12. COZ THE
BACKUP DATASET IS NOT HAVING ANY RECORD AND U R CREATING FOR THE FIRST TIME.

29)PROGRAM TO COPY AN SDS TO KSDS USING COBOL PROGRAM. THE KSDS IS A


NEW FILE AND HAS NO RECORDS.

TO CREATE KSDS THIS IS THE PROGRAM


000001 //MTPLB22J JOB 234,'VSAM',CLASS=A,MSGCLASS=A,
000002 // MSGLEVEL=(1,1),NOTIFY=MTPLB22
000003 //ST1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE CLUSTER (NAME(MTPLB22.VSAM.KSDS) -
000007 TRACKS(1 2) -
000008 VOLUME(MTBLR1) -
000009 FREESPACE(10 20) -
000010 RECORDSIZE(80 80) -
000011 KEYS(5 0) -
000012 INDEXED -
000013 CISZ(4096) -
000014 REUSE)
000015 //

COBOL PROGRAM
000100 000100 ID DIVISION.
000200 000200 PROGRAM-ID. CPYKSDS.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000600 000600 SELECT INFL ASSIGN TO DD1
000610 000610 ORGANIZATION IS SEQUENTIAL
000620 000620 ACCESS MODE IS SEQUENTIAL.
000700 000700 SELECT KSDSFL ASSIGN TO DD2
000800 000800 ORGANIZATION IS INDEXED
000900 000900 ACCESS MODE IS SEQUENTIAL
001000 001000 RECORD KEY IS KEMPNO
001100 001100 FILE STATUS IS STAT.
001200 001200 DATA DIVISION.
001300 001300 FILE SECTION.
001400 001400 FD INFL.
001500 001500 01 INREC.
001600 001600 02 EMPNO PIC X(5).
001700 001700* 02 EMP-REST.
001800 001800 02 EMPNM PIC X(5).
001900 001900 02 DEPT PIC X(4).
002000 002000 02 FILLER PIC X(66).
002100 002100 FD KSDSFL.
002200 002200 01 KSDSREC.
002300 002300 02 KEMPNO PIC X(5).
002400 002400* 02 FILLER PIC X(75) VALUE SPACES.
002410 002410 02 KEMPNM PIC X(5).
002420 002420 02 KDEPT PIC X(4).
002430 002430 02 FILLER PIC X(66).
002500 002500 WORKING-STORAGE SECTION.
002600 002600 77 EOF PIC X.
002610 002610 77 STAT PIC 99.
002700 002700 PROCEDURE DIVISION.
002800 002800 MP.
002900 002900 OPEN INPUT INFL
003000 003000 OUTPUT KSDSFL.
003010 003010 DISPLAY STAT.
003100 003100* READ INFL INTO KSDSREC AT END MOVE 'Y' TO EOF.
003200 003200 PERFORM MOVPARA UNTIL EOF = 'Y'.
003300 003300 CLOSE INFL KSDSFL.
003400 003400 STOP RUN.
003500 003500 MOVPARA.
003510 003510 READ INFL INTO KSDSREC AT END MOVE 'Y' TO EOF.
003600 003600 WRITE KSDSREC.
003610 003610 DISPLAY KSDSREC.
003800 003800 DISPLAY 'STATUS IS ' STAT.

O/P MTPLB22.VSAM.KSDS
KEY OF RECORD - E1000
E1000AAAAADEP1 00000100
KEY OF RECORD - E2000
E2000BBBBBDEP2 00000110
KEY OF RECORD - E3000
E3000CCCCCDEP3 00000120
KEY OF RECORD - E4000
E4000DDDDDDEP4 00000130
KEY OF RECORD - E5000
E5000EEEEEDEP5 00000140
KEY OF RECORD - E6000
E6000FFFFFDEP6 00000150
KEY OF RECORD - E7000
E7000GGGGGDEP7 00000160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 7
***

30) IN THIS PROGRAM WE ARE TRYING TO ADD ON RECORDS WHICH IS THERE IN


SEQUENTIAL FILE TO AND KSDS FILE WHICH WE HAVE CREATED ABOVE. IT
ALREADY HAS 7 RECORDS AND WE ARE INSERTING ONE RECORDS FROM AN SDS.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000600 000600 SELECT INFL ASSIGN TO DD1
000700 000700 ORGANIZATION IS SEQUENTIAL.
000800 000800 SELECT KSDSFL ASSIGN TO DD2
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS RANDOM
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001500 001500 FD INFL.
001600 001600 01 INREC.
001700 001700 02 EMPNO PIC X(5).
001800 001800 02 EMPNM PIC X(5).
001900 001900 02 DEPT PIC X(4).
002000 002000 02 PIC X(66).
002001 002001 FD KSDSFL.
002002 002002 01 KSDSREC.
002003 002003 02 KEMPNO PIC X(5).
002004 002004 02 KEMPNM PIC X(5).
002005 002005 02 KDEPT PIC X(4).
002006 002006 02 PIC X(66).
002007 002007 WORKING-STORAGE SECTION.
002008 002008 77 EOF PIC X.
002009 002009 77 STAT PIC 99.
002010 002010 PROCEDURE DIVISION.
002011 002011 MP.
002020 002020 OPEN INPUT INFL
002030 002030 I-O KSDSFL.
002040 002040 READ INFL INTO KSDSREC.
002050 002050 WRITE KSDSREC.
002060 002060 DISPLAY KSDSREC.
002070 002070 CLOSE INFL KSDSFL.
002080 002080 STOP RUN.

I/P : 000100 E1001HHHHHDEP8

O/P
KEY OF RECORD - E1000
E1000AAAAADEP1 00000100
KEY OF RECORD - E1001
E1001HHHHHDEP8 00000100
KEY OF RECORD - E2000
E2000BBBBBDEP2 00000110
KEY OF RECORD - E3000
E3000CCCCCDEP3 00000120
KEY OF RECORD - E4000
E4000DDDDDDEP4 00000130
KEY OF RECORD - E5000
E5000EEEEEDEP5 00000140
KEY OF RECORD - E6000
E6000FFFFFDEP6 00000150
KEY OF RECORD - E7000
E7000GGGGGDEP7 00000160
IDC0005I NUMBER OF RECORDS PROCESSED WAS 8

31) PROGRAM TO INSERT AND ADD TWO RECORDS FROM A SDS TO KSDS.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000600 000600 SELECT INFL ASSIGN TO DD1
000700 000700 ORGANIZATION IS SEQUENTIAL.
000800 000800 SELECT KSDSFL ASSIGN TO DD2
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS DYNAMIC
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001500 001500 FD INFL.
001600 001600 01 INREC.
001700 001700 02 EMPNO PIC X(5).
001800 001800 02 EMPNM PIC X(5).
001900 001900 02 DEPT PIC X(4).
002000 002000 02 PIC X(66).
002001 002001 FD KSDSFL.
002002 002002 01 KSDSREC.
002003 002003 02 KEMPNO PIC X(5).
002004 002004 02 KEMPNM PIC X(5).
002005 002005 02 KDEPT PIC X(4).
002006 002006 02 PIC X(66).
002007 002007 WORKING-STORAGE SECTION.
002008 002008 77 EOF PIC X.
002009 002009 77 STAT PIC 99.
002010 002010 PROCEDURE DIVISION.
002011 002011 MP.
002020 002020 OPEN INPUT INFL
002030 002030 I-O KSDSFL.
002031 002031 PERFORM MOVPARA UNTIL EOF = 'Y'.
002032 002032 CLOSE INFL KSDSFL.
002033 002033 STOP RUN.
002041 002041 MOVPARA.
002042 002042 READ INFL INTO KSDSREC AT END MOVE 'Y' TO EOF.
002050 002050 WRITE KSDSREC.
002060 002060 DISPLAY KSDSREC.

I/P
000100 E4001IIIIIDEP9
000110 E5001KKKKDEP9
000200 E8000JJJJJDE10
000300 E9000LLLLDE10

O/P
KEY OF RECORD - E1000
E1000AAAAADEP1 00000100
KEY OF RECORD - E1001
E1001HHHHHDEP8 00000100
KEY OF RECORD - E2000
E2000BBBBBDEP2 00000110
KEY OF RECORD - E3000
E3000CCCCCDEP3 00000120
KEY OF RECORD - E4000
E4000DDDDDDEP4 00000130
KEY OF RECORD - E4001
E4001IIIIIDEP9 00000100
KEY OF RECORD - E5000
E5000EEEEEDEP5 00000140
KEY OF RECORD - E5001
E5001KKKKKDEP9 0000011 0
KEY OF RECORD - E6000
E6000FFFFFDEP6 00000150
KEY OF RECORD - E7000
E7000GGGGGDEP7 00000160
KEY OF RECORD - E8000
E8000JJJJJDE10 00000200
KEY OF RECORD - E9000
E9000LLLLLDE10 00000300
IDC0005I NUMBER OF RECORDS PROCESSED WAS 12

NOTE: HERE WE ARE INSERTING TWO RECORDS AND ADDING TWO RECORDS AT THE END.
IF U GIVE ACCESS MODE IS SEQUENTIAL , THEN U WILL GET THIS ERROR. IT HAS TO BE
DYNAMIC.U CAN ACCESS IN RANDOM MODE ALSO AND OPEN IN I-O MODE ONLY. THEN
ALSO U CAN INSERT AND ADD RECORDS.

IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locati
E4001IIIIIDEP9 00000100
IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locati
E5001KKKKKDEP9 00000110
IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locati
E8000JJJJJDE10 00000200
IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locati
E9000LLLLLDE10 00000300
IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locati
E9000LLLLLDE10 00000300

32)PROGRAM TO ADD TWO RECORDS FROM SDS TO KSDS.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000600 000600 SELECT INFL ASSIGN TO DD1
000700 000700 ORGANIZATION IS SEQUENTIAL.
000800 000800 SELECT KSDSFL ASSIGN TO DD2
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS SEQUENTIAL
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001500 001500 FD INFL.
001600 001600 01 INREC.
001700 001700 02 EMPNO PIC X(5).
001800 001800 02 EMPNM PIC X(5).
001900 001900 02 DEPT PIC X(4).
002000 002000 02 PIC X(66).
002001 002001 FD KSDSFL.
002002 002002 01 KSDSREC.
002003 002003 02 KEMPNO PIC X(5).
002004 002004 02 KEMPNM PIC X(5).
002005 002005 02 KDEPT PIC X(4).
002006 002006 02 PIC X(66).
002007 002007 WORKING-STORAGE SECTION.
002008 002008 77 EOF PIC X.
002009 002009 77 STAT PIC 99.
002010 002010 PROCEDURE DIVISION.
002011 002011 MP.
002020 002020 OPEN INPUT INFL
002030 002030 EXTEND KSDSFL.
002031 002031 PERFORM MOVPARA UNTIL EOF = 'Y'.
002032 002032 CLOSE INFL KSDSFL.
002033 002033 STOP RUN.
002041 002041 MOVPARA.
002042 002042 READ INFL INTO KSDSREC AT END MOVE 'Y' TO EOF.
002050 002050 WRITE KSDSREC.
002060 002060 DISPLAY KSDSREC.

I/P
000100 E9001MM DEP3
000110 E9002NN DEP3
000120 E9003OO DEP2
000130 E9004PP DEP1
O/P
KEY OF RECORD - E1000
E1000AAAAADEP1 00000100
KEY OF RECORD - E1001
E1001HHHHHDEP8 00000100
KEY OF RECORD - E2000
E2000BBBBBDEP2 00000110
KEY OF RECORD - E3000
E3000CCCCCDEP3 00000120
KEY OF RECORD - E4000
E4000DDDDDDEP4 00000130
KEY OF RECORD - E4001
E4001IIIIIDEP9 00000100
KEY OF RECORD - E5000
E5000EEEEEDEP5 00000140
KEY OF RECORD - E5001
E5001KKKKKDEP9 00000110
KEY OF RECORD - E6000
E6000FFFFFDEP6 00000150
KEY OF RECORD - E7000
E7000GGGGGDEP7 00000160
KEY OF RECORD - E8000
E8000JJJJJDE10 00000200
KEY OF RECORD - E9000
E9000LLLLLDE10 00000300
KEY OF RECORD - E9001
E9001MM DEP3 00000100
KEY OF RECORD - E9002
E9002NN DEP3 00000110
KEY OF RECORD - E9003
E9003OO DEP2 00000120
KEY OF RECORD - E9004
E9004PP DEP1 00000130
IDC0005I NUMBER OF RECORDS PROCESSED WAS 16

NOTE: IF U HAVE ACCESS MODE AS SEQUENTIAL AND OPEN IN I-O MODE APPEND IS NOT
POSSIBLE. IT WILL BE LOGIC ERROR.IF U SAY ACCESS MODE IS RANDOM AND OPEN IN I-O
MODE THEN IT WILL BE APPENDED.
33) PROGRAM TO DISPLAY A SINGLE RECORD USING ITS KEY NUMBER FROM A
KSDS FILE.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000800 000800 SELECT KSDSFL ASSIGN TO DD1
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS RANDOM
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001500 001500 FD KSDSFL.
001600 001600 01 KSDSREC.
001700 001700 02 KEMPNO PIC X(5).
001800 001800 02 KEMPNM PIC X(5).
001900 001900 02 KDEPT PIC X(4).
002000 002000 02 PIC X(66).
002100 002100 WORKING-STORAGE SECTION.
002100 002100 WORKING-STORAGE SECTION.
002800 002800 77 EOF PIC X.
002900 002900 77 STAT PIC 99.
003000 003000 PROCEDURE DIVISION.
003100 003100 MP.
003300 003300 OPEN INPUT KSDSFL.
003310 003310 MOVE 'E3000' TO KEMPNO.
003320 003320 READ KSDSFL KEY IS KEMPNO.
003330 003330 DISPLAY KSDSREC.
003500 003500 CLOSE KSDSFL.
003600 003600 STOP RUN.

O/P
E3000CCCCCDEP3 00000120

NOTE: 1) IF U GIVE ACCESS MODE IS DYNAMIC AND OPEN IN I-O MODE OR INPUT MODE ,
THEN ALSO U GET THE OUTPUT.
2) IF U GIVE ACCESS MODE IS SEQUENTIAL AND OPEN IN INPUT MODE THEN WHILE
COMPLING U GET ERROR AS
==000026==> IGYPA3040-E A "KEY" phrase was found for "SEQUENTIAL ACCESS" file
"KSDSFL". The
"KEY" phrase was discarded.

34)PROGRAM TO UPDATE A SINGLE RECORD OF A KSDS FILE.WE ARE UPDTING


E3000 RECORD , NAME AND DEPT.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000800 000800 SELECT KSDSFL ASSIGN TO DD1
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS RANDOM
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001500 001500 FD KSDSFL.
001600 001600 01 KSDSREC.
001700 001700 02 KEMPNO PIC X(5).
001800 001800 02 KEMPNM PIC X(5).
001900 001900 02 KDEPT PIC X(4).
002000 002000 02 PIC X(66).
002100 002100 WORKING-STORAGE SECTION.
002900 002900 77 STAT PIC 99.
003000 003000 PROCEDURE DIVISION.
003100 003100 MP.
003300 003300 OPEN I-O KSDSFL.
003301 003301 DISPLAY STAT.
003310 003310 MOVE 'E3000' TO KEMPNO.
003320 003320 READ KSDSFL KEY IS KEMPNO.
003321 003321 MOVE 'PRAS' TO KDEPT.
003322 003322 MOVE 'ZZUPD' TO KEMPNM.
003323 003323 REWRITE KSDSREC.
003324 003324 DISPLAY STAT.
003330 003330 DISPLAY KSDSREC.
003500 003500 CLOSE KSDSFL.
003600 003600 STOP RUN.

O/P TSO SDSF ST:


00
00
E3000ZZUPDPRAS 00000120
KSDS FILE
KEY OF RECORD - E1000
E1000AAAAADEP1 00000100
KEY OF RECORD - E1001
E1001HHHHHDEP8 00000100
KEY OF RECORD - E2000
E2000BBBBBDEP2 00000110
KEY OF RECORD - E3000
E3000ZZUPDPRAS 00000120
KEY OF RECORD - E4000
E4000DDDDDDEP4 00000130
KEY OF RECORD - E4001
E4001IIIIIDEP9 00000100
KEY OF RECORD - E5000
E5000EEEEEDEP5 00000140
KEY OF RECORD - E5001
E5001KKKKKDEP9 00000110
KEY OF RECORD - E6000
E6000FFFFFDEP6 00000150
KEY OF RECORD - E7000
E7000GGGGGDEP7 00000160
KEY OF RECORD - E8000
E8000JJJJJDE10 00000200
KEY OF RECORD - E9000
E9000LLLLLDE10 00000300
KEY OF RECORD - E9001
E9001MM DEP3 00000100
KEY OF RECORD - E9002
E9002NN DEP3 00000110
KEY OF RECORD - E9003
E9003OO DEP2 00000120
KEY OF RECORD - E9004
E9004PP DEP1 00000130
IDC0005I NUMBER OF RECORDS PROCESSED WAS 16

35) PROGRAM TO UPDATE A SET OF RECORDS OF A KSDS FILE. THE UPDATING


VALUE ARE KEPT IN A SDS FILE.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000600 000600 SELECT INFL ASSIGN TO DD1
000700 000700 ORGANIZATION IS SEQUENTIAL.
000800 000800 SELECT KSDSFL ASSIGN TO DD2
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS RANDOM
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001410 001410 FD INFL.
001420 001420 01 INREC.
001430 001430 02 EMPNO PIC X(5).
001440 001440 02 EMPNM PIC X(5).
001450 001450 02 DEPT PIC X(4).
001460 001460 02 PIC X(66).
001500 001500 FD KSDSFL.
001600 001600 01 KSDSREC.
001700 001700 02 KEMPNO PIC X(5).
001800 001800 02 KEMPNM PIC X(5).
001900 001900 02 KDEPT PIC X(4).
002000 002000 02 PIC X(66).
002100 002100 WORKING-STORAGE SECTION.
002900 002900 77 STAT PIC 99.
002910 002910 77 EOF PIC X.
003000 003000 PROCEDURE DIVISION.
003100 003100 MP.
003300 003300 OPEN INPUT INFL I-O KSDSFL.
003320 003320 PERFORM UPPARA UNTIL EOF = 'Y'
003321 003321 CLOSE KSDSFL.
003322 003322 STOP RUN.
003323 003323 UPPARA.
003324 003324 READ INFL AT END MOVE 'Y' TO EOF.
003325 003325 MOVE INREC TO KSDSREC.
003326 003326 REWRITE KSDSREC.
003330 003330 DISPLAY KSDSREC.

I/P
000110 E9001UP1 DEP1
000120 E9002UP2 DEP2
000130 E9003UP3 DEP3
000140 E9004UP4 DEP4

O/P TSO SDSF ST


000110 E9001UP1 DEP1
000120 E9002UP2 DEP2
000130 E9003UP3 DEP3
000140 E9004UP4 DEP4
O/P KSDS FILE
KEY OF RECORD - E1000
E1000AAAAADEP1 00000100
KEY OF RECORD - E1001
E1001HHHHHDEP8 00000100
KEY OF RECORD - E2000
E2000BBBBBDEP2 00000110
KEY OF RECORD - E3000
E3000ZZUPDPRAS 00000120
KEY OF RECORD - E4000
E4000DDDDDDEP4 00000130
KEY OF RECORD - E4001
E4001IIIIIDEP9 00000100
KEY OF RECORD - E5000
E5000EEEEEDEP5 00000140
KEY OF RECORD - E5001
E5001KKKKKDEP9 00000110
KEY OF RECORD - E6000
E6000FFFFFDEP6 00000150
KEY OF RECORD - E7000
E7000GGGGGDEP7 00000160
KEY OF RECORD - E8000
E8000JJJJJDE10 00000200
KEY OF RECORD - E9000
E9000LLLLLDE10 00000300
KEY OF RECORD - E9001
E9001UP1 DEP1 00000110
KEY OF RECORD - E9002
E9002UP2 DEP2 00000120
KEY OF RECORD - E9003
E9003UP3 DEP3 00000130
KEY OF RECORD - E9004
E9004UP4 DEP4 00000140
IDC0005I NUMBER OF RECORDS PROCESSED WAS 16

36)PROGRAM TO DELETE A SET OF RECORDS OF KSDS FILE , WHICH ARE THERE IN


AN SDS FILE.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000600 000600 SELECT INFL ASSIGN TO DD1
000700 000700 ORGANIZATION IS SEQUENTIAL.
000800 000800 SELECT KSDSFL ASSIGN TO DD2
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS RANDOM
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001410 001410 FD INFL.
001420 001420 01 INREC.
001430 001430 02 EMPNO PIC X(5).
001440 001440 02 EMPNM PIC X(5).
001450 001450 02 DEPT PIC X(4).
001460 001460 02 PIC X(66).
001500 001500 FD KSDSFL.
001600 001600 01 KSDSREC.
001700 001700 02 KEMPNO PIC X(5).
001800 001800 02 KEMPNM PIC X(5).
001900 001900 02 KDEPT PIC X(4).
002000 002000 02 PIC X(66).
002100 002100 WORKING-STORAGE SECTION.
002900 002900 77 STAT PIC 99.
002910 002910 77 EOF PIC X.
003000 003000 PROCEDURE DIVISION.
003100 003100 MP.
003300 003300 OPEN INPUT INFL I-O KSDSFL.
003320 003320 PERFORM UPPARA UNTIL EOF = 'Y'
003321 003321 CLOSE KSDSFL.
003322 003322 STOP RUN.
003323 003323 UPPARA.
003324 003324 READ INFL AT END MOVE 'Y' TO EOF.
003325 003325 MOVE INREC TO KSDSREC.
003326 003326 DELETE KSDSFL.
003330 003330 DISPLAY KSDSREC.

O/P KSDS FILE


KEY OF RECORD - E1000
E1000AAAAADEP1 00000100
KEY OF RECORD - E1001
E1001HHHHHDEP8 00000100
KEY OF RECORD - E2000
E2000BBBBBDEP2 00000110
KEY OF RECORD - E3000
E3000ZZUPDPRAS 00000120
KEY OF RECORD - E4000
E4000DDDDDDEP4 00000130
KEY OF RECORD - E4001
E4001IIIIIDEP9 00000100
KEY OF RECORD - E5000
E5000EEEEEDEP5 00000140
KEY OF RECORD - E5001
E5001KKKKKDEP9 00000110
KEY OF RECORD - E6000
E6000FFFFFDEP6 00000150
KEY OF RECORD - E7000
E7000GGGGGDEP7 00000160
KEY OF RECORD - E8000
E8000JJJJJDE10 00000200
KEY OF RECORD - E9000
E9000LLLLLDE10 00000300
IDC0005I NUMBER OF RECORDS PROCESSED WAS 12
***

37)PROGRAM TO DELETE A SINGLE RECORD FROM A KSDS FILE.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000800 000800 SELECT KSDSFL ASSIGN TO DD1
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS DYNAMIC
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001500 001500 FD KSDSFL.
001600 001600 01 KSDSREC.
001700 001700 02 KEMPNO PIC X(5).
001800 001800 02 KEMPNM PIC X(5).
001900 001900 02 KDEPT PIC X(4).
002000 002000 02 PIC X(66).
002100 002100 WORKING-STORAGE SECTION.
002900 002900 77 STAT PIC 99.
003000 003000 PROCEDURE DIVISION.
003100 003100 MP.
003300 003300 OPEN I-O KSDSFL.
003310 003310 MOVE 'E3000' TO KEMPNO.
003320 003320 READ KSDSFL KEY IS KEMPNO.
003330 003330 DISPLAY KSDSREC.
003340 003340 DELETE KSDSFL.
003500 003500 CLOSE KSDSFL.
003600 003600 STOP RUN.

O/P : E3000 WILL BE DELETED. WE HAVE NOT DONE THIS DELETE OPERATION ON THE
ABOVE FILE. SO DON'T GET CONFUSED IF E3000 IS THERE IN FURTHER TRANSACTION.

38)PROGRAM TO READ AN KSDS FILE FROM A SPECIFIED RECORDS NUMBER AND


GO ON FOR 3 RECORDS.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. ADDRC.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000800 000800 SELECT KSDSFL ASSIGN TO DD1
000900 000900 ORGANIZATION IS INDEXED
001000 001000 ACCESS MODE IS DYNAMIC
001100 001100 RECORD KEY IS KEMPNO
001200 001200 FILE STATUS IS STAT.
001300 001300 DATA DIVISION.
001400 001400 FILE SECTION.
001500 001500 FD KSDSFL.
001600 001600 01 KSDSREC.
001700 001700 02 KEMPNO PIC X(5).
001800 001800 02 KEMPNM PIC X(5).
001900 001900 02 KDEPT PIC X(4).
002000 002000 02 PIC X(66).
002100 002100 WORKING-STORAGE SECTION.
002800 002800 77 EOF PIC X.
002900 002900 77 STAT PIC 99.
002910 002910 77 CNT PIC 9.
003000 003000 PROCEDURE DIVISION.
003100 003100 MP.
003300 003300 OPEN INPUT KSDSFL.
003310 003310 MOVE 'E4000' TO KEMPNO.
003311 003311 START KSDSFL KEY IS EQUAL TO KEMPNO.
003312 003312 PERFORM RDPARA UNTIL EOF = 'Y' OR CNT = 3.
003313 003313 CLOSE KSDSFL.
003314 003314 STOP RUN.
003315 003315 RDPARA.
003316 003316 READ KSDSFL NEXT AT END MOVE 'Y' TO EOF.
003330 003330 DISPLAY KSDSREC.
003340 003340 COMPUTE CNT = CNT + 1.

O/P :
E4000DDDDDDEP4 00000130
E4001IIIIIDEP9 00000100
E5000EEEEEDEP5 00000140

38)PROGRAM TO CREATE AN ALTERNATE INDEX.

000001 //MTPLB22J JOB 234,AIX,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),


000002 // NOTIFY=&SYSUID
000003 //STEP1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE AIX (NAME(MTPLB22.VSAM.DEPT) -
000007 RELATE(MTPLB22.VSAM.KSDS) -
000008 KEYS(4 10) -
000009 VOLUME(MTBLR1) -
000010 TRACK(1 2)-
000011 RECORDSIZE(80 80) -
000012 UPGRADE)
000013 /*

NOTE:IF U R CREATING A ALTERNATE INDEX NOTE THAT THE BASE INDEX SHOULD NOT BE
CREATED WITH THE REUSE OPTION. IF U HAVE CREATED IT WITH THE REUSE OPTION AND
TRYING TO CREATE AN ALTERNATE INDEX TO IT IT WILL GIVE THE ERROR AS 'INVALID
RELATED OBJECT'. IF U EDIT THIS NEWLY CREATED ALTERNATE INDEX THERE WILL BE
NOTHING.UNTIL U BUILD THE INDEX THERE WILL BE NO DATA INSIDE. NOW WE SHALL TRY
TO BUILD AN INDEX
WHILE CREATING AN ALTERNATE INDEX THESE ARE THE STEPS TO BE FOLLOWED AND
MUST.
1 DEFINE AIX BASE CLUSTER
2 DEFINE A PATH
3 BUILD INDEX

39)PROGRAM TO CREATE A PATH FOR THE ABOVE CREATED ALTERNATE INDEX.

000001 //MTPLB22J JOB 234,AIX,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),


000002 // NOTIFY=&SYSUID
000003 //STEP1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 DEFINE PATH(NAME(MTPLB22.VSAM.PATH) -
000007 PATHENTRY(MTPLB22.VSAM.DEPT) -
000008 UPDATE)

40)PROGRAM TO BUILD AN INDEX TO THE ABOVE MENTIONED PATH AND INDEX.

000001 //MTPLB22J JOB 234,AIX,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),


000002 // NOTIFY=&SYSUID
000003 //STEP1 EXEC PGM=IDCAMS
000004 //SYSPRINT DD SYSOUT=*
000005 //SYSIN DD *
000006 BLDINDEX IDS(MTPLB22.VSAM.KSDS) -
000007 ODS(MTPLB22.VSAM.DEPT)
000008 /*

AFTER THE BUILD INDEX IS THROUGH, EDIT BOTH INDEX AND PATH.
THE INDEX (HERE DEPT) LOOKS LIKE THIS
KEY OF RECORD - DEP1
.....DEP1E1000E3000E7000
KEY OF RECORD - DEP2
.....DEP2E2000E5000
KEY OF RECORD - DEP3
.....DEP3E4000E6000
IDC0005I NUMBER OF RECORDS PROCESSED WAS 3
***
THE PATH LOOKS LIKE THIS (HERE PATH)
KEY OF RECORD - DEP1
E1000AAAAADEP1 00000100
KEY OF RECORD - DEP1
E3000CCCCCDEP1 00000120
KEY OF RECORD - DEP1
E7000GGGGGDEP1 00000160
KEY OF RECORD - DEP2
E2000BBBBBDEP2 00000110
KEY OF RECORD - DEP2
E5000EEEEEDEP2 00000140
KEY OF RECORD - DEP3
E4000DDDDDDEP3 00000130
KEY OF RECORD - DEP3
E6000FFFFFDEP3 00000150
IDC0005I NUMBER OF RECORDS PROCESSED WAS 7
***

41)PROGRAM TO RETRIVE THE DATA USING ALTERNATE INDEX.

000100 000100 ID DIVISION.


000200 000200 PROGRAM-ID. AIXCOB.
000300 000300 ENVIRONMENT DIVISION.
000400 000400 INPUT-OUTPUT SECTION.
000500 000500 FILE-CONTROL.
000600 000600 SELECT KSDSFL ASSIGN TO DD1
000700 000700 ORGANIZATION IS INDEXED
000710 000710 RECORD KEY IS KEMPNO
000720 000720 ALTERNATE RECORD KEY IS KDEPT
000730 000730 WITH DUPLICATES
000800 000800 ACCESS MODE IS DYNAMIC
001100 001100 FILE STATUS IS STAT.
001200 001200 DATA DIVISION.
001300 001300 FILE SECTION.
001400 001400 FD KSDSFL.
001500 001500 01 KSDSREC.
001600 001600 02 KEMPNO PIC X(5).
001700 001700 02 KEMPNM PIC X(5).
001800 001800 02 KDEPT PIC X(4).
001900 001900 02 FILLER PIC X(66).
002000 002000 WORKING-STORAGE SECTION.
002100 002100 77 EOF PIC 9 VALUE 0.
002110 002110 77 STAT PIC 99.
002200 002200 PROCEDURE DIVISION.
002300 000168 MAINPARA.
002400 000172 OPEN INPUT KSDSFL.
002500 000180 MOVE 'DEP2' TO KDEPT.
002600 000190 READ KSDSFL KEY IS KDEPT.
002700 000194 PERFORM PARA1 UNTIL EOF = 1.
002800 000195 CLOSE KSDSFL.
002900 000197 STOP RUN.
003000 000198 PARA1.
003100 000199 IF KDEPT IS NOT EQUAL TO 'DEP2'
003200 000200 COMPUTE EOF = 1
003300 000201 ELSE
003400 000210 DISPLAY KSDSREC
003500 000220 READ KSDSFL NEXT AT END MOVE 1 TO EOF
003600 000230 END-IF.

COBRUN.
000100 //MTPLB22S JOB ,,
000200 // CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),
000300 // NOTIFY=MTPLB22
000400 //RUN EXEC PGM=INITIAL
000500 //STEPLIB DD DSN=MTPLB22.COBOL.LOADLIB,DISP=SHR
000510 //DD1 DD DSN=MTPLB22.VSAM.KSDS,DISP=SHR
000512 //DD11 DD DSN=MTPLB22.VSAM.PATH,DISP=SHR
000700 //SYSPRINT DD SYSOUT=*
001400 //SYSIN DD DUMMY
001600 //

O/P
E2000BBBBBDEP2 00000110
E5000EEEEEDEP2 00000140

You might also like