//VSSORT JOB (001),'SORT IN VSAM', 00010000 // CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A 00020000 //* 00030000 //********************************************************************* 00040000 //* 00050000 //* STEP 1: DEFINE ESDS CLUSTER (VSSORT.CLUSTER) 00060000 //* 00070000 //********************************************************************* 00080000 //* 00090000 //IDCAMS1 EXEC PGM=IDCAMS,REGION=2048K 00100000 //SYSPRINT DD SYSOUT=A 00110000 //SYSIN DD * 00120000 00130000 /* DELETE ESDS CLUSTER */ 00140000 00150000 DELETE VSSORT.CLUSTER CLUSTER PURGE 00160000 00170000 /* DEFINE ESDS CLUSTER */ 00180000 00190000 DEFINE CLUSTER ( - 00200000 NAME ( VSSORT.CLUSTER ) - 00210000 VOLUMES ( MVS804 ) - 00220000 RECORDSIZE ( 158 158 ) - 00230000 RECORDS( 150000 0 ) - 00240000 NONINDEXED - 00250000 ) - 00260000 DATA ( - 00270000 NAME ( VSSORT.DATA ) - 00280000 ) 00290000 //* 00300000 //********************************************************************* 00310000 //* 00320000 //* STEP 2: BUILD THE LOAD DATA (EXTRACT/ISOLATE KEY FIELDS) 00330000 //* 00340000 //********************************************************************* 00350000 //* 00360000 //IEBDG2 EXEC PGM=IEBDG 00370000 //SEQIN DD DSN=MVS.SORT.TEST.INP,UNIT=(TAPE,,DEFER),DISP=OLD, 00380000 // VOL=SER=200203,LABEL=(,SL) 00390000 //SEQOUT DD DSN=&&SEQOUT,UNIT=SYSDA,DISP=(,PASS), 00400000 // SPACE=(CYL,(10,10)), 00410000 // DCB=(RECFM=FB,LRECL=158,BLKSIZE=15800) 00420000 //SYSPRINT DD SYSOUT=* 00430000 //SYSIN DD * 00440000 DSD OUTPUT=(SEQOUT),INPUT=(SEQIN) 00450000 FD NAME=KEY01,LENGTH=3,FROMLOC=131,INPUT=SEQIN AREA CODE 00460000 FD NAME=KEY02,LENGTH=15,FROMLOC=46,INPUT=SEQIN SORT NAME 00470000 FD NAME=DATA,LENGTH=140,FROMLOC=1,INPUT=SEQIN DATA RECORD 00480000 CREATE NAME=(KEY01,KEY02,DATA),INPUT=SEQIN 00490000 //* 00500000 //********************************************************************* 00510000 //* 00520000 //* STEP 3: LOAD ESDS CLUSTER 00530000 //* 00540000 //********************************************************************* 00550000 //* 00560000 //IDCAMS2 EXEC PGM=IDCAMS,REGION=2048K 00570000 //SEQIN DD DSN=&&SEQOUT,DISP=(OLD,DELETE) 00580000 //VSOUT DD DSN=VSSORT.CLUSTER,DISP=OLD 00590000 //SYSPRINT DD SYSOUT=* 00600000 //SYSIN DD * 00610000 00620000 REPRO INFILE(SEQIN) OUTFILE(VSOUT) 00630000 00640000 //* 00650000 //********************************************************************* 00660000 //* 00670000 //* STEP 4: DEFINE AND BUILD THE INDEX 00680000 //* 00690000 //********************************************************************* 00700000 //* 00710000 //IDCAMS3 EXEC PGM=IDCAMS,REGION=2048K 00720000 //IDCUT1 DD VOL=SER=MVS804,UNIT=3380,DISP=OLD,AMP='AMORG' 00730000 //IDCUT2 DD VOL=SER=MVS804,UNIT=3380,DISP=OLD,AMP='AMORG' 00740000 //SYSPRINT DD SYSOUT=* 00750000 //SYSIN DD * 00760000 00770000 /* DELETE ALTERNATE INDEX */ 00780000 00790000 DELETE VSSORT.AIX ALTERNATEINDEX PURGE 00800000 00810000 /* DEFINE ALTERNATE INDEX WITH NONUNIQUE KEYS -> ESDS */ 00820000 00830000 DEFINE ALTERNATEINDEX ( - 00840000 NAME(VSSORT.AIX) - 00850000 RELATE(VSSORT.CLUSTER) - 00860000 VOLUMES(MVS804) - 00870000 RECORDSIZE(27 103) - 00880000 TRACKS(60 30) - 00890000 KEYS(18 0) - 00900000 NOUPGRADE ) - 00910000 DATA ( - 00920000 NAME(VSSORT.AIX.DATA) ) - 00930000 INDEX ( - 00940000 NAME(VSSORT.AIX.INDEX) ) 00950000 00960000 IF LASTCC = 0 THEN - 00970000 BLDINDEX IDS(VSSORT.CLUSTER) - 00980000 ODS(VSSORT.AIX) 00990000 01000000 IF LASTCC = 0 THEN - 01010000 DEFINE PATH ( - 01020000 NAME(VSSORT.PATH) - 01030000 PATHENTRY (VSSORT.AIX)) 01040000 01050000 //* 01060000 //********************************************************************* 01070000 //* 01080000 //* STEP 5: UNLOAD THE SORTED DATA 01090000 //* 01100000 //********************************************************************* 01110000 //* 01120000 //IDCAMS4 EXEC PGM=IDCAMS,REGION=2048K 01130000 //VSIN DD DSN=VSSORT.PATH,DISP=OLD 01140000 //SEQOUT DD DSN=&&SEQOUT,UNIT=SYSDA,DISP=(,PASS), 01150000 // SPACE=(CYL,(10,10)), 01160000 // DCB=(RECFM=FB,LRECL=158,BLKSIZE=15800) 01170000 //SYSPRINT DD SYSOUT=* 01180000 //SYSIN DD * 01190000 01200000 REPRO INFILE(VSIN) OUTFILE(SEQOUT) 01210000 01220000 //* 01230000 //********************************************************************* 01240000 //* 01250000 //* STEP 6: STRIP THE KEY FIELDS FROM THE DATA RECORDS 01260000 //* 01270000 //********************************************************************* 01280000 //* 01290000 //IEBDG2 EXEC PGM=IEBDG 01300000 //SEQIN DD DSN=&&SEQOUT,DISP=(OLD,DELETE) 01310000 //SEQOUT DD DSN=MVS.SORT.TEST.OUT,UNIT=3350,DISP=(,CATLG), 01320000 // VOL=SER=PUB001,SPACE=(CYL,(10,10),RLSE), 01330000 // DCB=(RECFM=FB,LRECL=140,BLKSIZE=14000) 01340000 //SYSPRINT DD SYSOUT=* 01350000 //SYSIN DD * 01360000 DSD OUTPUT=(SEQOUT),INPUT=(SEQIN) 01370000 FD NAME=DATA,LENGTH=140,FROMLOC=19,INPUT=SEQIN DATA RECORD 01380000 CREATE NAME=(DATA),INPUT=SEQIN 01390000 //* 01400000 //********************************************************************* 01410000 //* 01420000 //* STEP 7: DELETE ESDS CLUSTER (WILL ALSO DELETE ASSOCIATED OBJECTS) 01430000 //* 01440000 //********************************************************************* 01450000 //* 01460000 //IDCAMS5 EXEC PGM=IDCAMS,REGION=2048K 01470000 //SYSPRINT DD SYSOUT=A 01480000 //SYSIN DD * 01490000 01500000 /* DELETE ESDS CLUSTER */ 01510000 01520000 DELETE VSSORT.CLUSTER CLUSTER PURGE 01530000 01540000 // 01550000