SORT Examples
//* to sort
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
* sort by name
SORT FIELDS=(10,9,CH,A),DYNALLOC=(SYSDA,6),FILSZ=E2000
/*
//* END OF JOB
//* sort and do totals
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
* sort by state
* sum phone number
SORT FIELDS=(19,2,CH,A),DYNALLOC=(SYSDA,6),FILSZ=E2000
SUM FIELDS=(1,7,ZD)
* ZD is zoned decimal. signed or unsigned
* PD packed decimal. BI Binary
/*
//* END OF JOB
//* to sort and shift fields
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD * number in column 1, name in 10, state in 19
* sort by name (name is now in 1)
SORT FIELDS=(01,09,CH,A),DYNALLOC=(SYSDA,6),FILSZ=E2000
INREC FIELDS=(01:10,09, move name from 10 to 1
10:01,07) move number from 1 to 10
* inrec moves data before sorting starts
/*
//* END OF JOB
//* to sort and shift fields
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
* sort by name
SORT FIELDS=(10,09,CH,A),DYNALLOC=(SYSDA,6),FILSZ=E2000
OUTREC FIELDS=(01:10,09, move name from 10 to 1
10:01,07) move number from 1 to 10
* outrec moves data after sorting ends
/*
//* END OF JOB
//* PLAIN COPY
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
/*
//* END OF JOB
//* COPY BUT SKIP 3 RECORDS
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY,SKIPREC=3
/*
//* COPY. START WITH 4TH RECORD. STOP AFTER PRINTING 2 RECORDS
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY,SKIPREC=3,STOPAFT=2 STOP AFTER PRINTING 2
/*
//* COPY BUT ONLY IF LITERAL CT IS IN COLUMN 19 OF DATA
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY COPY BUT
INCLUDE COND=(19,2,CH,EQ,C'CT') ONLY IF CT IN COL 19
/*
//* COPY BUT NOT IF LITERAL CT IS IN COLUMN 19 OF INPUT
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY COPY BUT
OMIT COND=(19,2,CH,EQ,C'CT') NOT IF CT IN COL 19
/*
//* COPY. INCLUDE RECORDS WITH LITERAL CT IN COLUMN 19,
//* OR LITERAL J IN COLUMN 10
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY USING AN OR
* COPY IF CT IN COL 19
* OR J IN COL 10
INCLUDE COND=(19,2,CH,EQ,C'CT',OR,10,1,CH,EQ,C'J')
* AND WORKS TOO. ALSO X'C1' FOR A
/*
//* COPY INPUT FILE TO OUTPUT FILE BUT MOVE AS FOLLOWS
//* PUT THIS IN OUTPUT COLUMN 20: 9 CHARACTERS STARTING IN COLUMN 1
//* COLUMN 40: 16 CHARACTERS STARTING IN COLUMN 10
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
* COPY INPUT FILE TO OUTPUT FILE BUT MOVE AS FOLLOWS
* PUT THIS IN OUTPUT COLUMN 20: 9 CHARACTERS STARTING IN COLUMN 1
* COLUMN 40: 16 CHARACTERS STARTING IN COLUMN 10
SORT FIELDS=COPY
INREC FIELDS=(20:1,09,40:10,16)
/*
//* COPY INPUT FILE TO OUTPUT FILE BUT MOVE AS FOLLOWS
//* PUT THIS IN OUTPUT COLUMN 20: 9 CHARACTERS STARTING IN COLUMN 1
//* COLUMN 40: 16 CHARACTERS STARTING IN COLUMN 10
//* include only records from CT
//SORTIT EXEC PGM=SORT,PARM=’ABEND’
//SYSOUT DD SYSOUT=*
//SORTIN DD * number in column 1, name in 10, state in 19
9283873 JOAN CT
7023232 JANE CN
8432343 MARIO MA
5549023 JILL CT
6998781 JENNIFER VT
8432343 MURIEL RI
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
* COPY INPUT FILE TO OUTPUT FILE BUT MOVE AS FOLLOWS
* PUT THIS IN OUTPUT COLUMN 20: 9 CHARACTERS STARTING IN COLUMN 1
* COLUMN 40: 16 CHARACTERS STARTING IN COLUMN 10
SORT FIELDS=COPY
INREC FIELDS=(20:1,09,40:10,16)
INCLUDE COND=(19,2,CH,EQ,C'CT') only if CT in column 19
* include condition looks at input columns before INREC or OUTREC work
/*
//*
//*syncsort to eliminate duplicates
//* in: seq
//* out: seq
//SYNCSORT EXEC PGM=SYNCSORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR, <-the input
// DSN=the.input.dsn
//SORTOUT DD DISP=(NEW,CATLG), <-the output
// UNIT=SYSDA,LIKE=the.input.dsn,
// SPACE=(TRK,(1,1),RLSE)
//SYSIN DD *
SORT FIELDS=(1,80,CH,A)
SUM FIELDS=NONE
/*
//*
//*
//*
//*syncsort to include records on a condition
//*uses OUTREC to construct the output record
//*from fields on the input record
//* in: seq
//* out: seq
//SYNCSORT EXEC PGM=SYNCSORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR, <-the input
// DSN=the.input.dsn
//SORTOUT DD DISP=(NEW,CATLG), <-the output
// UNIT=SYSDA,LIKE=the.input.dsn,
// SPACE=(TRK,(1,1),RLSE)
//SYSIN DD *
SORT FIELDS=(1,80,CH,A)
INCLUDE COND=((51,7,CH,EQ,C'STRING1'),OR,
(51,7,CH,EQ,C'STRING2'))
OUTREC FIELDS=(01:11,08,
20:51,19)
* a literal may be used in the outrec:
* OUTREC FIELDS=(C'!',
* 20:C'ABCD')
SUM FIELDS=NONE
/*
//*
//*