Dfsort Tutorial: Input File
Dfsort Tutorial: Input File
ASSUMPTIONS
INPUT FILE
MOHANK 23423423434534344 KIRAN
MOHANK 13342345345345345 RAJEEV
ARAMES 34535345325354324 SURESH
SURESH 98347385385933987 PULI
RAMESH 67575789769876785 MADHU
KRISHN 50830948530859340 OIIED
KRISHN 30495849572938495 MADHU
SURESH 98347385385933987 PULI
//SYSIN DD *
SORT FIELDS=(1,3,CH,A,9,3,CH,A)
/*
OUTPUT FILE
ARAMES 34535345325354324 SURESH
KRISHN 30495849572938495 MADHU
KRISHN 50830948530859340 OIIED
MOHANK 13342345345345345 RAJEEV
MOHANK 23423423434534344 KIRAN
RAMESH 67575789769876785 MADHU
SURESH 98347385385933987 PULI
SURESH 98347385385933987 PULI
EXPLANATION
SECOND KEY
9,3,CH,A - second key started at col 9, its length is 3
//SYSIN DD *
SORT FIELDS=(1,3,CH,A)
SUM FIELDS=NONE
/*
//** copyright www.mainframegurukul.com
OUTFILE
ARAMES 34535345325354324 SURESH
KRISHN 50830948530859340 OIIED
MOHANK 23423423434534344 KIRAN
RAMESH 67575789769876785 MADHU
SURESH 98347385385933987 PULI
EXPLANATION
.
.
.
//SORTOF01 DD DSN=dataset1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,4),RLSE),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SORTOF02 DD DSN=dataset2,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,4),RLSE),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SORTOF03 DD DSN=dataset3,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,4),RLSE),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
.
.
.
//SYSIN DD *
SORT FIELDS=COPY
OUTFIL FILES=01,INCLUDE=(1,6,CH,EQ,C'MOHANK')
OUTFIL FILES=02,INCLUDE=(1,6,CH,EQ,C'SURESH')
OUTFIL FILES=03,INCLUDE=(1,6,CH,EQ,C'KRISHN')
/*
SORTOF01
MOHANK 23423423434534344 KIRAN
MOHANK 13342345345345345 RAJEEV
SORTOF02
SURESH 98347385385933987 PULI
SURESH 98347385385933987 PULI
SORTOF03
KRISHN 50830948530859340 OIIED
KRISHN 30495849572938495 MADHU
EXPLANATION
2. OUTFIL FILES=01,INCLUDE=(1,6,CH,EQ,C'MOHANK')
OUTFIL FILES=02,INCLUDE=(1,6,CH,EQ,C'SURESH')
OUTFIL FILES=03,INCLUDE=(1,6,CH,EQ,C'KRISHN')
- SYNCSORT will take data from 1st positioon to 6th position of input
file and it will compare that data with MOHANK or SURESH or KRISHN
- If data equals to MOHANK then that recorrd will copies to dataset defined
in SORTOF01 step. ( because we defined FILES=01 in second condition )
- If data equals to SURESH then that recorrd will pass to dataset defined
in SORTOF02 step. ( because we defined FILES=02 in second condition )
- If data equals to KRISHN then that recorrd will copied to dataset difned
in SORTOF03 step. ( because we defined FILES=03 in third condition )
SORTOUT
ARAMES 34535345325354324 SURESH
KRISHN 50830948530859340 OIIED
MOHANK 23423423434534344 KIRAN
RAMESH 67575789769876785 MADHU
SURESH 98347385385933987 PULI
SORTXSUM
KRISHN 30495849572938495 MADHU
MOHANK 13342345345345345 RAJEEV
SURESH 98347385385933987 PULI
EXPLANATION
1. SORT FIELDS=(1,3,CH,A)
Input file will be sorted depending up on the key specified above
1,3,CH,A - key starting position is 1 and length 3, comparing type
character, sorting is don in ascending order
2. SUM FIELDS=NONE,XSUM
//SYSIN DD *
SORT FIELDS=COPY
INCLUDE COND=(1,6,CH,EQ,C'SURESH')
/*
//* copyright www.mainframegurukul.com
OUTPUTFILE
SURESH 98347385385933987 PULI
SURESH 98347385385933987 PULI
EXPLANATION
//SYSIN DD *
SORT FIELDS=COPY
INREC FIELDS=(7:2,5,20:10,3)
/*
//* copyright www.mainframegurukul.com
OUTPUT FILE
OHANK 342a
OHANK 334
RAMES 453
URESH 834
AMESH 757
RISHN 083
RISHN 049
URESH 834
EXPLANATION
1. SORT FIELDS=COPY
SKIPREC=n
causes sort to skip over 'n' records in the input file before
starting a sorting or copying operation.
STOPAFT=n
causes sort to stop after 'n' records in the input file have
been sorted or copied.
COBOL DB2 COMPILE JCL
//SYSLMOD DD DISP=SHR,
// DSN=DEV.SURESH.LOADLIB(DB2PROG)
<------------ (5)
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSUT1 DD SPACE=(1024,(50,50)),
// UNIT=SYSDA
//*
//*********************************************************
***********
//* BIND - BIND THE DB2 PACKAGE
*
//*********************************************************
***********
//BIND EXEC PGM=IKJEFT01,
// COND=(4,LT),
// REGION=4096K
//STEPLIB DD DISP=SHR,
// DSN=XXX4.DB2.XXXX.XXXXLOAD
//DBRMLIB DD DISP=SHR,
// DSN=DEV.SURESH.DBRM(DB2PROG)
<--------------- (6)
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM (DEVDB )
BIND MEMBER (DB2PROG) -
PACKAGE (PACKG11) -
LIBRARY ('DEV.SURESH.DBRM') -
<---------------- (7)
ACTION (REP) -
ISOLATION (CS) -
VALIDATE (BIND)-
RELEASE (COMMIT) -
OWNER (SURESH) -
QUALIFIER (DEVQUALI)
END
/*
**************************** Bottom of Data
****************************
2) Using IKJEFT01 utility for DB2 BIND Sample JCL to DB2 BIND
DB2
COBOL DB2 PROGRAMMING - 1
EMPLYEE
EMPID EMPNAME DEPARTMENT SALARY
DESIGNATION
1000 XXXXXXX XX 10000 SE
1001 YYYYYYY YY 9000 SE
1002 ZZZZZZZ ZZ 20000 MA
EXEC SQL
DECLARE DSNXXX.EMPLOYEE
( EMPID CHAR(10)
NOT NULL,
EMPNAME CHAR(30)
NOT NULL,
DEPARTMENT CHAR(2)
NOT NULL,
SALARY
DECIMAL(10,2) NOT NULL,
DESIGNATION CHAR(4)
NOT NULL )
END-EXEC.
EXEC SQL
INCLUDE < copybookname >
END-EXEC.
01 EMPOYEE-RECORD.
05 HV-EMPID PIC X(10).
05 HV-EMPNAME PIC X(30).
05 HV-DEPARTMENT PIC X(2).
05 HV-SALARY PIC
S9(8)V99 COMP-3.
05 HV-DESIGNATION PIC
CHAR(4).
EXEC SQL
INCLUDE SQLCA
END-EXEC.
What is SQLCA?
.........
EXEC SQL
SELECT SALARY
INTO :HV-SALARY
FROM EMPLOYEE
WHERE EMPNAME = 'XXXXXXX'
END-EXEC.
IF SQLCODE = 0
ELSE
END-IF.
....
....