Vsam Lab Pgm

47
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,,,

Transcript of Vsam Lab Pgm

Page 1: Vsam Lab Pgm

VSAM LAB EXERCISES1)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.TSOUSERIDC3300I 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.TSOUSERIDC3300I 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.TSOUSERIDC3300I 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.

Page 2: Vsam Lab Pgm

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.TSOUSERIDC3300I ERROR OPENING MTPLB22.VSAM.ESDS IDC3351I ** VSAM OPEN RETURN CODE IS 160 IDC0005I NUMBER OF RECORDS PROCESSED WAS 0IDC0014I 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.TSOUSERIDC3300I 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.TSOUSERIDC3300I ERROR OPENING MTPLB22.VSAM.RRDS IDC3351I ** VSAM OPEN RETURN CODE IS 160 IDC0005I NUMBER OF RECORDS PROCESSED WAS 0

Page 3: Vsam Lab Pgm

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.TSOUSERIDC3300I ERROR OPENING MTPLB22.VSAM.RRDS.DATA IDC3351I ** VSAM OPEN RETURN CODE IS 160 IDC0005I NUMBER OF RECORDS PROCESSED WAS 0IDC0014I 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 MEMBERIEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00039,,, IEC161I MTPLB22.VSAM.VRRDS,MTPLB22.VSAM.VRRDS.DATA,USERCAT.TSOUSERIDC3300I 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 MEMIEC161I 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 0IDC0014I LASTCC=12 *** NEXT THIRD MEMBERIEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00041,,, IEC161I MTPLB22.VSAM.VRRDS,MTPLB22.VSAM.VRRDS.INDEX,USERCAT.TSOUSERIDC3300I 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

Page 4: Vsam Lab Pgm

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.LDSIEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00035,,, IEC161I MTPLB22.VSAM.LDS,MTPLB22.VSAM.LDS.DATA,USERCAT.TSOUSERIDC3300I 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.DATAIEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00035,,, IEC161I MTPLB22.VSAM.LDS,MTPLB22.VSAM.LDS.DATA,USERCAT.TSOUSERIDC3300I 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.INDEXIEC161I 072-053,MTPLB22,ISPFPROCISPFPROC,SYS00036,,, IEC161I MTPLB22.VSAM.LDS,MTPLB22.VSAM.LDS.DATA,USERCAT.TSOUSERIDC3300I ERROR OPENING MTPLB22.VSAM.LDS.DATA IDC3351I ** VSAM OPEN RETURN CODE IS 160 IDC0005I NUMBER OF RECORDS PROCESSED WAS 0IDC0014I 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)

Page 5: Vsam Lab Pgm

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 22AA000200 0E200 MAHES 22AA000300 0E300 PRASA 22AA000400 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 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 ***

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=12AND IT SAYSIDC3302I 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

Page 6: Vsam Lab Pgm

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=SHR000006 //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

Page 7: Vsam Lab Pgm

***

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 THENU 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

Page 8: Vsam Lab Pgm

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=12IDCAMS 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)),

Page 9: Vsam Lab Pgm

000007 // AVGREC=K,RECORG=KS,KEYLEN=5,KEYOFF=0,LRECL=80000008 //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/PMTPLB22.ESDS MTPLB22.ESDS.DATAMTPLB22.KSDSMTPLB22.KSDS.DATA MTPLB22.KSDS.INDEXMTPLB22.LDS MTPLB22.LDS.DATAMTPLB22.RRDS MTPLB22.RRDS.DATA

NOTE: 1.MOVING AND SDS TO KSDS,ESDS,RRDS,VRRDS IS POSSIBLE2. 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/PUR MTPLB22.SAMPLE.SDS. HAS THESE RECORDS.ASM;OEL ASDFASDFSDFSDF

THEN IN THE LDS. IT WILL BE ADDED LIKE THISO/PRBA OF RECORD - 0 ASM;OEL ASDFASDFSDFSDF

NOW LETS SAY U ADD ONE MORE RECORD IN SAMPLE.SDS.ASM;OEL ASDFASDFSDFSDF

Page 10: Vsam Lab Pgm

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/PRBA 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)

KSDSKEY OF RECORD - 0E100 0E100 RAJAN 22AA 0000010 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

Page 11: Vsam Lab Pgm

KSDS2 WE HAVE CREATED WITH KEYS(5 1) BUT THEN ALSO IT IS COPYING SINCE THE DATA IS IN THE SEQUENTIAL ORDER.O/PKSDS2 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

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/PTYPE '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

Page 12: Vsam Lab Pgm

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/PIT 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.RRDSRELATIVE 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.

Page 13: Vsam Lab Pgm

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.

Page 14: Vsam Lab Pgm

IN FILE : MTPLB22.VSAM.KSDSKEY 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

Page 15: Vsam Lab Pgm

***

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 FOLLOWS000001 //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

Page 16: Vsam Lab Pgm

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

Page 17: Vsam Lab Pgm

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

Page 18: Vsam Lab Pgm

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 *** PROGRAM000001 //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 ***

Page 19: Vsam Lab Pgm

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 //

Page 20: Vsam Lab Pgm

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.

Page 21: Vsam Lab Pgm

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-TIMESTMP: ENTRIES/SECT-----------3 REC-UPDATED------------0 FREESPACE-%CA----------20 X'000000000000000' 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-------

Page 22: Vsam Lab Pgm

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-TIMESTAMP: REC-UPDATED------------0 FREESPACE-%CA---------30 X'0000000000000000' 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

Page 23: Vsam Lab Pgm

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 PROGRAM000001 //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 PROGRAM000100 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 DD2000800 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.

Page 24: Vsam Lab Pgm

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 DD2000900 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).

Page 25: Vsam Lab Pgm

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 DD2000900 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).

Page 26: Vsam Lab Pgm

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 E4001IIIIIDEP9000110 E5001KKKKDEP9000200 E8000JJJJJDE10000300 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 locatiE4001IIIIIDEP9 00000100IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locatiE5001KKKKKDEP9 00000110IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locatiE8000JJJJJDE10 00000200

Page 27: Vsam Lab Pgm

IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locatiE9000LLLLLDE10 00000300IGZ0003W A logic error occurred for file DD2 in program ADDRC at relative locatiE9000LLLLLDE10 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/P000100 E9001MM DEP3000110 E9002NN DEP3000120 E9003OO DEP2000130 E9004PP DEP1O/P KEY OF RECORD - E1000 E1000AAAAADEP1 00000100 KEY OF RECORD - E1001 E1001HHHHHDEP8 00000100 KEY OF RECORD - E2000 E2000BBBBBDEP2 00000110 KEY OF RECORD - E3000

Page 28: Vsam Lab Pgm

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 DD1000900 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.

Page 29: Vsam Lab Pgm

003320 003320 READ KSDSFL KEY IS KEMPNO.003330 003330 DISPLAY KSDSREC. 003500 003500 CLOSE KSDSFL. 003600 003600 STOP RUN.

O/PE3000CCCCCDEP3 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 00000120KSDS FILE KEY OF RECORD - E1000 E1000AAAAADEP1 00000100 KEY OF RECORD - E1001

Page 30: Vsam Lab Pgm

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 DD2000900 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.

Page 31: Vsam Lab Pgm

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/P000110 E9001UP1 DEP1 000120 E9002UP2 DEP2 000130 E9003UP3 DEP3 000140 E9004UP4 DEP4

O/P TSO SDSF ST000110 E9001UP1 DEP1000120 E9002UP2 DEP2000130 E9003UP3 DEP3000140 E9004UP4 DEP4O/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

Page 32: Vsam Lab Pgm

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

Page 33: Vsam Lab Pgm

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 DD1000900 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.

Page 34: Vsam Lab Pgm

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 00000130E4001IIIIIDEP9 00000100E5000EEEEEDEP5 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 INDEXWHILE CREATING AN ALTERNATE INDEX THESE ARE THE STEPS TO BE FOLLOWED AND MUST.1 DEFINE AIX BASE CLUSTER2 DEFINE A PATH3 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

Page 35: Vsam Lab Pgm

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 THISKEY 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 KDEPT000730 000730 WITH DUPLICATES 000800 000800 ACCESS MODE IS DYNAMIC 001100 001100 FILE STATUS IS STAT. 001200 001200 DATA DIVISION.

Page 36: Vsam Lab Pgm

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 EOF003600 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/PE2000BBBBBDEP2 00000110E5000EEEEEDEP2 00000140