//***********************************************************
//SPLITFLS EXEC PGM=SORT
//***********************************************************
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SORTIN DD DSN=FILE1......,DISP=SHR
//SORTOF01 DD DSN=OUTPUTFILE1.......,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,1),RLSE),
// RECFM=FB,LRECL=20
//SORTOF02 DD DSN=OUTPUTFILE2..............,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,1),RLSE),
// RECFM=FB,LRECL=20
//SORTOF03 DD DSN=OUTPUTFILE3..............,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,1),RLSE),
// RECFM=FB,LRECL=20
//SYSIN DD *
SORT FIELDS=COPY
OUTFIL FILES=01,ENDREC=200
OUTFIL FILES=02,STARTREC=201,ENDREC=400
OUTFIL FILES=03,STARTREC=401,ENDREC=700
//*
Tuesday, November 23, 2010
Friday, October 22, 2010
COPY desired columns and no duplicates
//STEP002 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=WESTLAW.PROD@B.SPIS.DAILY.LOGRECS.G7030V00
//SORTOUT DD DISP=(NEW,CATLG,DELETE),DSN=U123557.LOGRECS,
// DCB=WESTLAW.PROD@B.SPIS.DAILY.LOGRECS.G7030V00,
// SPACE=(CYL,(1,10),RLSE),UNIT=SYSDA
//SYSIN DD *
SORT FIELDS=(5,18,CH,A)
SUM FIELDS=NONE
OUTREC FIELDS=(5,18)
/*
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=WESTLAW.PROD@B.SPIS.DAILY.LOGRECS.G7030V00
//SORTOUT DD DISP=(NEW,CATLG,DELETE),DSN=U123557.LOGRECS,
// DCB=WESTLAW.PROD@B.SPIS.DAILY.LOGRECS.G7030V00,
// SPACE=(CYL,(1,10),RLSE),UNIT=SYSDA
//SYSIN DD *
SORT FIELDS=(5,18,CH,A)
SUM FIELDS=NONE
OUTREC FIELDS=(5,18)
/*
Search for 2 strings (String 1 and String 2 in the same member)-not same line
//SEARCH EXEC PGM=ISRSUPC,
// PARM=(SRCHCMP,'ANYC,FINDALL,XREF,NOPRTCC,NOSUMS')
//NEWDD DD DSN=input pds,DISP=SHR
//OUTDD DD SYSOUT=*
//SYSIN DD *
SRCHFOR 'string1'
SRCHFOR 'string2'
// PARM=(SRCHCMP,'ANYC,FINDALL,XREF,NOPRTCC,NOSUMS')
//NEWDD DD DSN=input pds,DISP=SHR
//OUTDD DD SYSOUT=*
//SYSIN DD *
SRCHFOR 'string1'
SRCHFOR 'string2'
Sort - Find Rep 3
//STEP003 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=U123557.PA.D100610.VOL0010.HTML.BK,DISP=SHR
//SORTOUT DD DISP=SHR,DSN=U123557.PA.D100610.VOL0010.HTML.BK
//SYSIN DD *
OPTION COPY
INREC FINDREP=(IN=C'padding-top:6px;> ',
OUT=C'padding-top:6px;"> ')
/*
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=U123557.PA.D100610.VOL0010.HTML.BK,DISP=SHR
//SORTOUT DD DISP=SHR,DSN=U123557.PA.D100610.VOL0010.HTML.BK
//SYSIN DD *
OPTION COPY
INREC FINDREP=(IN=C'padding-top:6px;> ',
OUT=C'padding-top:6px;"> ')
/*
SORT- Find Rep 2
//STEP003 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=U123557.PA.D100610.VOL0010.HTML.BK,DISP=SHR
//SORTOUT DD DISP=SHR,DSN=U123557.PA.D100610.VOL0010.HTML.BK
//SYSIN DD *
OPTION COPY
INREC FINDREP=(IN=C'htm",OUT=C'tes'')
/*
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=U123557.PA.D100610.VOL0010.HTML.BK,DISP=SHR
//SORTOUT DD DISP=SHR,DSN=U123557.PA.D100610.VOL0010.HTML.BK
//SYSIN DD *
OPTION COPY
INREC FINDREP=(IN=C'htm",OUT=C'tes'')
/*
To restore an archived dataset using IEBGENER
//IEBCMP1A EXEC PGM=IEBGENER
//SYSUT1 DD DISP=SHR,DSN=KEYCITE.PROD@B.AUDIT.ADCIANV.ONLYWL.DN
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//SYSUT2 DD DUMMY
//SYSUT1 DD DISP=SHR,DSN=KEYCITE.PROD@B.AUDIT.ADCIANV.ONLYWL.DN
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//SYSUT2 DD DUMMY
GDG create
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE GDG(NAME(WLAWDB.PROD@B.CASE.NEJKAID2) -
LIMIT(10) -
NOEMPTY -
SCRATCH)
/*
The difference between empty and noempty is
EMPTY
specifies that all the generation data sets are to be uncataloged When the maximum is exceeded (each data set's non-VSAM entry is automatically deleted from the catalog).
NOEMPTY
specifies that only the oldest generation data set is to be uncataloged when the maximum is reached.
The difference between scratch and noscratch is
SCRATCH
specifies that the generation data set's DSCB is to be deleted from the volume's VTOC when the generation data set is uncataloged. Direct access device space management (DADSM) removes the data set's DSCB from the VTOC, erases the data set's space on the volume, and makes the space available to other system users. The generation data set ceases to exist. For SMS-managed GDSs, SCRATCH also specifies that the NVR is to be removed from the VVDS when the data set is uncataloged.
NOSCRATCH
specifies that the generation data set's DSCB is not to be removed from the volume's VTOC when the generation data set is uncataloged. The data set's DSCB in the volume's VTOC is left intact and can be used to locate the data set. Your program, however, can process the data set by using a JCL DD statement to describe and allocate the data set.
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
DEFINE GDG(NAME(WLAWDB.PROD@B.CASE.NEJKAID2) -
LIMIT(10) -
NOEMPTY -
SCRATCH)
/*
The difference between empty and noempty is
EMPTY
specifies that all the generation data sets are to be uncataloged When the maximum is exceeded (each data set's non-VSAM entry is automatically deleted from the catalog).
NOEMPTY
specifies that only the oldest generation data set is to be uncataloged when the maximum is reached.
The difference between scratch and noscratch is
SCRATCH
specifies that the generation data set's DSCB is to be deleted from the volume's VTOC when the generation data set is uncataloged. Direct access device space management (DADSM) removes the data set's DSCB from the VTOC, erases the data set's space on the volume, and makes the space available to other system users. The generation data set ceases to exist. For SMS-managed GDSs, SCRATCH also specifies that the NVR is to be removed from the VVDS when the data set is uncataloged.
NOSCRATCH
specifies that the generation data set's DSCB is not to be removed from the volume's VTOC when the generation data set is uncataloged. The data set's DSCB in the volume's VTOC is left intact and can be used to locate the data set. Your program, however, can process the data set by using a JCL DD statement to describe and allocate the data set.
To check for an empty input file
//VERIFY EXEC PGM=IEBCOMPR
//SYSUT1 DD DSN=WDA.TC.PRFLR.RELOAD.SERNUMS(0),DISP=SHR
//SYSUT2 DD DSN=WDA.TC.PRFLR.EMPTY.FILE,DISP=SHR
//SYSIN DD DUMMY
//SYSPRINT DD SYSOUT=*
//*
If full input file, RC=8 is received. If empty, RC=0 as compare condition is satisfied.
Compare has some restrictions with the number of records in the input file.
The following utility is efficient to check for an input file
//VERIFY EXEC PGM=IEBPTPCH
//SYSUT1 DD DSN=U123557.OUTPUT,DISP=SHR
//SYSUT2 DD DUMMY
//SYSIN DD *
PRINT TYPORG=PS
/*
//SYSPRINT DD SYSOUT=*
It gives RC=4 when the file is empty and RC=0 when the file is full.
//SYSUT1 DD DSN=WDA.TC.PRFLR.RELOAD.SERNUMS(0),DISP=SHR
//SYSUT2 DD DSN=WDA.TC.PRFLR.EMPTY.FILE,DISP=SHR
//SYSIN DD DUMMY
//SYSPRINT DD SYSOUT=*
//*
If full input file, RC=8 is received. If empty, RC=0 as compare condition is satisfied.
Compare has some restrictions with the number of records in the input file.
The following utility is efficient to check for an input file
//VERIFY EXEC PGM=IEBPTPCH
//SYSUT1 DD DSN=U123557.OUTPUT,DISP=SHR
//SYSUT2 DD DUMMY
//SYSIN DD *
PRINT TYPORG=PS
/*
//SYSPRINT DD SYSOUT=*
It gives RC=4 when the file is empty and RC=0 when the file is full.
Copy with IEBGENER and SORT
//STEP1 EXEC PGM=IEBGENER
//SYSIN DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DISP=SHR,
// DSN=LEGSERV.PROD.EDC.CA.D100717.T0219.F279892
//SYSUT2 DD DISP=(,CATLG),DSN=U123557.TESTFILE1,
// DCB=LEGSERV.PROD.EDC.CA.D100717.T0219.F279892,
// UNIT=SYSDA,
// SPACE=(CYL,(1,10),RLSE)
//*------------------------------------------------------------------
//
//FIRSTREC EXEC PGM=SORT
//SORTIN DD DSN=LEGSERV.PROD.EDC.CA.D100717.T0219.F279892.Z,DISP=SHR
//SORTOUT DD DISP=(,CATLG),DSN=U123557.TESTFILE,UNIT=SYSDA,
// DCB=(LEGSERV.PROD.EDC.CA.D100717.T0219.F279892.Z),
// SPACE=(CYL,(1,10),RLSE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(COPY)
//SYSIN DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DISP=SHR,
// DSN=LEGSERV.PROD.EDC.CA.D100717.T0219.F279892
//SYSUT2 DD DISP=(,CATLG),DSN=U123557.TESTFILE1,
// DCB=LEGSERV.PROD.EDC.CA.D100717.T0219.F279892,
// UNIT=SYSDA,
// SPACE=(CYL,(1,10),RLSE)
//*------------------------------------------------------------------
//
//FIRSTREC EXEC PGM=SORT
//SORTIN DD DSN=LEGSERV.PROD.EDC.CA.D100717.T0219.F279892.Z,DISP=SHR
//SORTOUT DD DISP=(,CATLG),DSN=U123557.TESTFILE,UNIT=SYSDA,
// DCB=(LEGSERV.PROD.EDC.CA.D100717.T0219.F279892.Z),
// SPACE=(CYL,(1,10),RLSE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(COPY)
A simple Count
//STEP02 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=U123557.ONLYDB.UUID,DISP=SHR
//OUT DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) USING(CTL1)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=OUT,REMOVECC,NODETAIL,
TRAILER1=('FILE1',5X,COUNT)
/*
We get the output in SPOOL
FILE1 537
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=U123557.ONLYDB.UUID,DISP=SHR
//OUT DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) USING(CTL1)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=OUT,REMOVECC,NODETAIL,
TRAILER1=('FILE1',5X,COUNT)
/*
We get the output in SPOOL
FILE1 537
Capturing Duplicates in an output file
I was trying out XSUM to capture the duplicates in a separate output file but it was failing with normal SORT.
With ICETOOL ,it works.
Here is the sample I created.
//DOIT EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=U123557.ONLYDB.UUID,DISP=SHR
//OUT DD DSN=U123557.TEST.OUTPUT,DISP=SHR
//SORTXSUM DD DSN=U123557.TEST.XSUM,DISP=SHR
//TOOLIN DD *
SELECT FROM(IN) TO(OUT) ON(1,6,CH) FIRST DISCARD(SORTXSUM)
/*
Thursday, July 22, 2010
SORT - Findrep
If there is "40" at posistion 10 AND "09" at position 12 i need to replace the "09" to "90" and write the entire record
if the AND condition is not staisfied i need to write the entire record of the file unaltered to the output file.
//S1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
R01 4009
R02 4010
R03 4109
R04 4009
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC IFTHEN=(WHEN=(10,2,CH,EQ,C'40',AND,12,2,CH,EQ,C'09'),
OVERLAY=(12:C'90'))
/*
if the AND condition is not staisfied i need to write the entire record of the file unaltered to the output file.
//S1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
R01 4009
R02 4010
R03 4109
R04 4009
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC IFTHEN=(WHEN=(10,2,CH,EQ,C'40',AND,12,2,CH,EQ,C'09'),
OVERLAY=(12:C'90'))
/*
Subscribe to:
Posts (Atom)