sync sort

28
SYNCSORT Functions: 1) Report writing (OUTFIL) 2) Multiple Output (OUTFIL FILES) 3) Record reformatting (INREC/OUTREC) 4) Editing Output fields (EDITING) 5) Record Selection (INCLUDE/OMIT) 6) Sum (SUM FIELDS) 7) VB Records (RDW, CONVERT) 8) Record Arrangement (SORT, MERGE) etc Features: 1) Syncsort uses the expanded virtual storage available under MVS OS for sorting Activity. 2) Automatic release of SRT WRK space after execution is over & also it releases the freespace in the secondary allocation of SORTOUT parameter. Data Utility processing Sequence: The Following is the list of activities that are performed by the SYNCSORT utility with examples:- I/p File Include / Omit Sum Inrec Sort Outrec/ Report O/p File

Upload: nagarajan-venkatesan

Post on 06-Feb-2016

11 views

Category:

Documents


0 download

DESCRIPTION

Sync sort

TRANSCRIPT

Page 1: Sync Sort

SYNCSORT

Functions:

1) Report writing (OUTFIL)2) Multiple Output (OUTFIL FILES)3) Record reformatting (INREC/OUTREC)4) Editing Output fields (EDITING)5) Record Selection (INCLUDE/OMIT)6) Sum (SUM FIELDS)7) VB Records (RDW, CONVERT)8) Record Arrangement (SORT, MERGE) etc

Features:1) Syncsort uses the expanded virtual storage available under MVS OS for sorting Activity.2) Automatic release of SRT WRK space after execution is over & also it releases the freespace in the secondary allocation of SORTOUT parameter.

Data Utility processing Sequence:

The Following is the list of activities that are performed by the SYNCSORT utility with examples:-

I/p File Include/ Omit

Sum

Inrec Sort

Outrec/ Report

O/p File

Page 2: Sync Sort

Note: S.no. 1 – 14 are for Recfm = FB Records only

S.No Member Description

1 CONCAT Concatenating i/p datasets (appending many i/p datasets) upto 32 i/p could be used

2 COPY Use of copy fields (similar to concat)Making a copy of the i/p dataset

3 EDITING Use of editable characters (masking,converting data to a printable format)4 ELIMDUPL Eliminate duplicate records

5 INCLUDE Usage of include fields Splitting i/p records into 2 files based on a cond

6 INREC Usage of inrec fields (similar to outrec)7 MERGE Usage of merge fields (similar to sort fields)8 MERGEEQ Usage of merge fields with equals & sum fields9 OMIT Usage of omit fields

Omitting fields with spaces & by giving specific value10 OUTFIL Creating multiple copies of i/p file

11 OUTREC Usage of outrec fields (directing only required fields to output

12 REPORT Sample report with many parameters are given here

13 SUMFIELD Summing numeric field by having control on a field which is repeating & equal in value

14 SUMMARY Creating summary report

15 VARLEN Usage of Outrec for Record format = Variable block records

(1) CONCAT

Page 3: Sync Sort

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.CONCAT.IN, // DISP=SHR // DD DSN=PGCN25.CONCAT.IN1, // DISP=SHR //SORTOUT DD DSN=PGCN25.CONCAT.OUT, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=VB,LRECL=16,BLKSIZE=0), // SPACE=(CYL,(4,1),RLSE) //SYSIN DD * SORT FIELDS=COPY /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.CONCAT.IN----+----1**********N4 10000 C4 10000 A4 20000 L9 30000 G4 40000 **********

PGCN25.CONCAT.IN1----+----1**********H2 50000 N4 60000 FP 70000 Z1 80000 G1 80000 **********

PGCN25.CONCAT.OUT----+----1**********N4 10000 C4 10000 A4 20000 L9 30000 G4 40000 H2 50000 N4 60000 FP 70000 Z1 80000 G1 80000 **********

(2) COPY

Page 4: Sync Sort

* USE OF COPY FIELDS * SORT FIELDS=COPY COPIES INPUT TO OUTPUT

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.MERGE.IN, // DISP=SHR // DD DSN=PGCN25.MERGE.IN1, // DISP=SHR //SORTOUT DD DSN=PGCN25.MERGE.COPY.OUT, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=16,BLKSIZE=0), // SPACE=(CYL,(4,1),RLSE) //SYSIN DD * * SORT FIELDS=COPY MERGE FIELDS=COPY /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT //*

PGCN25.MERGE.IN----+----1**********A4 20000 C4 10000 G4 40000 L9 30000 N4 10000 **********

PGCN25.MERGE.IN1----+----1**********A4 80000 G4 80000 H2 50000 L9 70000 N4 60000 **********

PGCN25.MERGE.COPY.OUT----+----1**********A4 20000 C4 10000 G4 40000 L9 30000 N4 10000 A4 80000 G4 80000 H2 50000 L9 70000 N4 60000 **********(3) EDITING

Page 5: Sync Sort

//******************************************************************** //* USAGE OF EDITABLE CHARACTERS //* WE CAN CONVERT PACKED TO NUMERIC OR USE SIGNS SUCH AS $, CR, S ETC //* NOTE: EDIT PARAMETER //* I - INSIGNIFICANT DIGIT(PROVIDES MASK WHEREVER NECESSARY) //* T - SIGNIFICANT DIGIT (DISPLAYS ORIGINAL VALUE WITHOUT MASK) //* WE CAN USE , - : / $ @ # $ ETC AS EDITABLE CHARACTERS. //* LENGTH SUB PARM WILL OVERRIDE THE LENGTH SPECIFIED IN EDIT PARM //* //* SIGNS SUBPARAMETER SHOULD BE SPECIFIED IF WE USE S IN THE EDIT PARM. //* SIGNS=(L1,L2,L3,L4) L(1-4) --> POSITIONAL PARAMETERS //* L1 -> LEADING +IVE L2 -> LEADING -IVE //* L3 -> TRAILING +IVE L4 -> TRAILING -IVE //* L2 OR L4 ARE WIDELY USED //* WE CAN OVERRIDE SIGNS BY SIGNX... //*********************************************************************//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.EDIT.IN,DISP=SHR //SORTOUT DD DSN=PGCN25.EDIT.OUT, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE) //* DCB=(RECFM=FBA,LRECL=30,BLKSIZE=0) //SYSIN DD * SORT FIELDS=(1,1,CH,A) OUTFIL OUTREC=(1:1,1,3:2,8,ZD,EDIT=(TT/TT/TTTT), 14:10,5,ZD,EDIT=(II,IIT),LENGTH=6, 21:15,4,PD,EDIT=($II,IIT.TT), 32:19,4,PD,EDIT=(S$II,IIT.TT),SIGNS=(,-,,)) /* //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=*

PGCN25.EDIT.IN----+----1----+----2--**********************A0629200114400. ... ..D0630200112020........C0628200111000........B0627200115000...*...***********************

PGCN25.EDIT.OUT----+----1----+----2----+----3----+----4--********************************* Top of DA 06/29/2001 14,400 $14,400.50 $14,400.50B 06/27/2001 15,000 $15,000.75 $15,000.75C 06/28/2001 11,000 $11,000.50 -$11,000.50D 06/30/2001 12,020 $12,020.50 -$12,020.50******************************** Bottom of

(4) ELIMDUPL

*THIS JCL WILL DELETE DUPLICATE RECORDS.

Page 6: Sync Sort

* *USE SORT FIELDS & SUM FIELDS=NONE TO ELIMINATE DUPLICATE RECORDS *NOTE: SORT KEY SHOULD INCLUDE THE WHOLE RECORD LENGTH * SORT FIELDS=COPY WILL NOT WORK

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.ELIMDUPL.IN, // DISP=SHR //SORTOUT DD DSN=PGCN25.ELIMDUPL.OUT, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=VB,LRECL=16,BLKSIZE=0), // SPACE=(CYL,(4,1),RLSE) //SYSIN DD * * SORT FIELDS SPECIFIED HERE TO SORT THE RECORDS SORT FIELDS=(1,9,BI,A) * SUM FIELDS SPECIFIED HERE IS TO ELIMINATE DUPLICATE RECORDS SUM FIELDS=NONE * END REPLACES /* TO END THE SYSIN END //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.ELIMDUPL.IN

----+----1**********N4 10000 N4 10000 C4 10000 C4 10000 A4 20000**********

PGCN25.ELIMDUPL.OUT

----+----1**********A4 20000C4 10000 N4 10000 **********

(5) INCLUDE

********************************************************************

Page 7: Sync Sort

* A FIELD CAN BE COMPARED WITH A CONSTANT OR ANOTHER FIELD * UPTO 180 COMPARISONS CAN BE MADE * 'AND' EXEUTES FIRST BEFORE 'OR' * USE BRACKETS TO PRIORITISE THE SELECTION * FOR PACKED FIELDS FORMAT=PD AND DATA (SAY 11111 SHOULD BE SPECIFIED* AS P'11111' AFTER THE RELATIONAL PARAMETER

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.INCLUDE.IN,DISP=SHR //SORTOUT DD DSN=PGCN25.INCLUDE.OUT, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=30,BLKSIZE=0) //SYSIN DD * SORT FIELDS=(1,2,BI,D) INCLUDE COND=(1,2,CH,EQ,C'A4',OR,19,2,ZD,GT,22,2,ZD, OR,26,5,ZD,EQ,1000) /* //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=*

PGCN25.INCLUDE.IN

----+----1----+----2----+----3******************************A4 20000 BOY 11 12 10000C4 10000 APPLE 22 21 30000FP 70000 DOG 33 34 50000G1 80000 CAT 44 43 80000G4 40000 FISH 55 56 40000H2 50000 HEN 66 65 70000L9 30000 ELEPHANT 77 78 60000N4 10000 GUN 88 87 20000N4 60000 INK 99 00 90000******************************

PGCN25.INCLUDE.OUT

----+----1----+----2----+----3******************************N4 10000 GUN 88 87 20000N4 60000 INK 99 00 90000H2 50000 HEN 66 65 70000G1 80000 CAT 44 43 80000C4 10000 APPLE 22 21 30000A4 20000 BOY 11 12 10000******************************

********************************************************************

Page 8: Sync Sort

* SEPARATES INPUT RECORS INTO 2 FILES BASED ON A CERTAIN COND //STEP02 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.INCLUDE.IN,DISP=SHR //SORTOF1 DD DSN=PGCN25.INCLUDE.OUT1, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=30,BLKSIZE=0) //* //SORTOF2 DD DSN=PGCN25.INCLUDE.OUT2, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=30,BLKSIZE=0) //* //SYSIN DD * SORT FIELDS=(1,2,BI,D) OUTFIL FILES=(1),INCLUDE=(19,2,ZD,GT,22,2,ZD) OUTFIL FILES=(2),INCLUDE=(19,2,ZD,LT,22,2,ZD) /* //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=*

PGCN25.INCLUDE.OUT1

----+----1----+----2----+----3******************************N4 10000 GUN 88 87 20000N4 60000 INK 99 00 90000H2 50000 HEN 66 65 70000G1 80000 CAT 44 43 80000C4 10000 APPLE 22 21 30000******************************

PGCN25.INCLUDE.OUT2

----+----1----+----2----+----3******************************L9 30000 ELEPHANT 77 78 60000G4 40000 FISH 55 56 40000FP 70000 DOG 33 34 50000A4 20000 BOY 11 12 10000******************************

(6) INREC

Page 9: Sync Sort

********************************************************************* *SORT FIELDS = COPY CAN BE USED *SINCE SORT FIELDS PARAMETER IS EXECUTED AFTER THE EXECUTION OF INREC *FIELDS ...THE POSITION 1,5,ZD DENOTES THE O/P FILE * *NOTE: THIS JCL IS ONLY FOR FOR RECFM = FB *INREC FIELDS IS SIMILAR TO OUTREC FIELDS BUT IT WILL BE EXECUTED *BEFORE SORT,SUM OR OUTREC STMT. THUS IT IMPROVES I/O PERFORMANCE *IF YOU ARE SORTING A LARGE VOLUME OF RECORDS. *********************************************************************

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.INREC.IN,DISP=SHR //SORTOUT DD DSN=PGCN25.INREC.OUT, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=5,BLKSIZE=0) //SYSIN DD * SORT FIELDS=(1,5,ZD,A) INREC FIELDS=(1:3,5) /* //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=*

PGCN25.INREC.IN----+----1----+-****************A420000 00000100C410000 00000200FP70000 00000300G180000 00000400G440000 00000500H250000 00000600L930000 00000700N410000 00000800N460000 00000900****************

PGCN25.INREC.OUT----+----1**********10000 10000 20000 30000 40000 50000 60000 70000 80000 **********

(7) MERGE

Page 10: Sync Sort

* MERGE IS USED FOR CONCATENATING DATASETS * NOTE: IF YOU WANT USE ANY KEY , WE HAVE TO KEEP THE I/P DATASETS * IN THE SORTED ORDER.ALSO WE CAN USE INCLUDE/INREC

//SORTIN DD DSN=PGCN25.MERGE.IN, // DISP=SHR // DD DSN=PGCN25.MERGE.IN1, // DISP=SHR //SORTOUT DD DSN=PGCN25.MERGE.OUT, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=5,BLKSIZE=0), // SPACE=(CYL,(4,1),RLSE) //SYSIN DD * MERGE FIELDS=COPY OMIT COND=(1,2,CH,EQ,C'A4') OUTREC FIELDS=(1:5,5) /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.MERGE.IN----+----1**********A4 20000 C4 10000 G4 40000 L9 30000 N4 10000 **********

PGCN25.MERGE.IN1----+----1-***********A4 80000 G4 80000 H2 50000 L9 70000 N4 60000 ***********

PGCN25.MERGE.OUT----+----1**********10000 40000 30000 10000 80000 50000 70000 60000 *********** SKIPREC SKIP CERTAIN RECORDS FROM THE FIRST * STOPAFT STOPS AFTER CERTAIN RECORDS AFTER SKIPREC/OMIT ETC NOTE: COULD BE USED ONLY FOR MERGE FIELDS=COPY

Page 11: Sync Sort

//STEP02 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.MERGE.IN, // DISP=SHR //SORTOUT DD DSN=PGCN25.MERGE.OUT1, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=16,BLKSIZE=0),// SPACE=(CYL,(4,1),RLSE) //SYSIN DD * MERGE FIELDS=COPY,SKIPREC=2,STOPAFT=2 /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.MERGE.IN----+----1**********A4 20000 C4 10000 G4 40000 L9 30000 N4 10000 **********

PGCN25.MERGE.OUT1----+----1**********G4 40000 L9 30000 **********

(8) MERGEEQ

MERGE EQUALS MERGES THE EQUAL KEYED RECORDS

Page 12: Sync Sort

COULD BE USED WITH SUM FIELDS TO SUM FIELDS WITH EQUAL KEY HERE MULTIPLE FILES COULD BE MERGED UNLIKE SORT FIELDS WITH SUM AND INPUT FILES SHOULD BE IN SORTED KEY ORDER

//STEP01 EXEC PGM=SORT //SORTIN01 DD DSN=PGCN25.MERGEEQ.IN, // DISP=SHR //SORTIN02 DD DSN=PGCN25.MERGEEQ.IN1, // DISP=SHR //SORTOUT DD DSN=PGCN25.MERGENEQ.OUT, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=10,BLKSIZE=0),// SPACE=(CYL,(4,1),RLSE) //SYSIN DD * MERGE FIELDS=(1,2,BI,A),EQUALS /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.MERGEEQ.IN----+----1**********A4 200000C4 200000G4 400000L9 300000N4 100000**********

PGCN25.MERGEEQ.IN1----+----1**********C4 300000G4 200000L9 200000N4 300000Z1 400000**********

PGCN25.MERGENEQ.OUT----+----1**********A4 200000C4 200000C4 300000G4 400000G4 200000L9 300000L9 200000N4 100000N4 300000Z1 400000**********

********************************************************************** MERGE EQUALS & NOEQUALS PRODUCE THE SAME DATA...NOEQUALS PRINT THE

Page 13: Sync Sort

* DATA IN A DIFFERENT ALTERNATING SEQUENCE FORMAT

//STEP02 EXEC PGM=SORT //SORTIN01 DD DSN=PGCN25.MERGEEQ.IN, // DISP=SHR //SORTIN02 DD DSN=PGCN25.MERGEEQ.IN1, // DISP=SHR //SORTOUT DD DSN=PGCN25.MERGEEQ.SUM.OUT, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=10,BLKSIZE=0), // SPACE=(CYL,(4,1),RLSE) //SYSIN DD * MERGE FIELDS=(1,2,BI,A),EQUALS SUM FIELDS=(5,6,ZD) /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.MERGEEQ.SUM.OUT

----+----1**********A4 200000C4 500000G4 600000L9 500000N4 400000Z1 400000**********

(9) OMIT

********************************************************************

Page 14: Sync Sort

* A FIELD CAN BE COMPARED WITH A CONSTANT OR ANOTHER FIELD * UPTO 180 COMPARISONS CAN BE MADE * 'AND' EXEUTES FIRST BEFORE 'OR' * USE BRACKETS TO PRIORITISE THE SELECTION * FOR PACKED FIELDS FORMAT=PD AND DATA (SAY 11111 SHOULD BE SPECIFIED * AS P'11111' AFTER THE RELATIONAL PARAMETER **********************************************************************

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.OMIT.IN,DISP=SHR //SORTOUT DD DSN=PGCN25.OMIT.OUT, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=30,BLKSIZE=0) //SYSIN DD * SORT FIELDS=(1,2,BI,D) OMIT COND=(1,2,CH,EQ,C'A4',&,4,5,ZD,EQ,20000,|, 1,2,CH,EQ,C'G4',&,10,8,CH,EQ,C'FISH') /* //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //*

PGCN25.OMIT.IN----+----1----+----2----+----3******************************A4 20000 BOY 11 12 10000C4 10000 APPLE 22 21 30000FP 70000 DOG 33 34 50000G1 80000 CAT 44 43 80000G4 40000 FISH 55 56 40000H2 50000 HEN 66 65 70000L9 30000 ELEPHANT 77 78 60000N4 10000 GUN 88 87 20000N4 60000 INK 99 00 90000******************************

PGCN25.OMIT.OUT----+----1----+----2----+----3******************************N4 10000 GUN 88 87 20000N4 60000 INK 99 00 90000L9 30000 ELEPHANT 77 78 60000H2 50000 HEN 66 65 70000G1 80000 CAT 44 43 80000FP 70000 DOG 33 34 50000C4 10000 APPLE 22 21 30000******************************

Page 15: Sync Sort

************************************************** HERE SPACES ARE REMOVED * OMIT=NONE & INCLUDE=ALL CAN BE USED

//STEP02 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.OMIT.IN1,DISP=SHR //SORTOF1 DD DSN=PGCN25.OMIT.OUT1, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=30,BLKSIZE=0) //* //SORTOF2 DD DSN=PGCN25.OMIT.OUT2, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=30,BLKSIZE=0) //* //SORTOF3 DD DSN=PGCN25.OMIT.OUT3, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=30,BLKSIZE=0) //* //SYSIN DD * SORT FIELDS=(1,2,BI,D) * TO REMOVE RECORDS WITH SPACES AT FIRST 2 BYTES OUTFIL FILES=(1),OMIT=(1,2,CH,EQ,C' ') * COPIES ALL I/P RECORDS TO O/P OUTFIL FILES=(2),OMIT=NONEOUTFIL FILES=(3),INCLUDE=ALL /* //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=*

PGCN25.OMIT.IN1----+----1----+----2----+----3****************************** 20000 BOY 11 12 10000C4 10000 APPLE 22 21 30000FP 70000 DOG 33 34 50000G1 80000 CAT 44 43 80000 40000 FISH 55 56 40000H2 50000 HEN 66 65 70000L9 30000 ELEPHANT 77 78 60000N4 10000 GUN 88 87 20000 60000 INK 99 00 90000******************************PGCN25.OMIT.OUT1----+----1----+----2----+----3******************************N4 10000 GUN 88 87 20000L9 30000 ELEPHANT 77 78 60000H2 50000 HEN 66 65 70000G1 80000 CAT 44 43 80000FP 70000 DOG 33 34 50000C4 10000 APPLE 22 21 30000******************************

Page 16: Sync Sort

PGCN25.OMIT.OUT2

----+----1----+----2----+----3******************************N4 10000 GUN 88 87 20000L9 30000 ELEPHANT 77 78 60000H2 50000 HEN 66 65 70000G1 80000 CAT 44 43 80000FP 70000 DOG 33 34 50000C4 10000 APPLE 22 21 30000 20000 BOY 11 12 10000 40000 FISH 55 56 40000 60000 INK 99 00 90000******************************

PGCN25.OMIT.OUT3

----+----1----+----2----+----3******************************N4 10000 GUN 88 87 20000L9 30000 ELEPHANT 77 78 60000H2 50000 HEN 66 65 70000G1 80000 CAT 44 43 80000FP 70000 DOG 33 34 50000C4 10000 APPLE 22 21 30000 20000 BOY 11 12 10000 40000 FISH 55 56 40000 60000 INK 99 00 90000******************************

Page 17: Sync Sort

(10) OUTFIL

WE CAN CREATE COPIES OF THE I/P FILE

//SORTIN DD DSN=PGCN25.OUTFIL.IN, // DISP=SHR //SORTOF01 DD DSN=PGCN25.OUTFIL.OUT, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=VB,LRECL=16,BLKSIZE=0), // SPACE=(CYL,(4,1),RLSE) //SORTOF02 DD DSN=PGCN25.OUTFIL.OUT1, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=VB,LRECL=16,BLKSIZE=0), // SPACE=(CYL,(4,1),RLSE) //SYSIN DD * SORT FIELDS=COPY OUTFIL FILES=(01,02) /* //SYSOUT DD SYSOUT=*

PGCN25.OUTFIL.IN----+----*********A4 20000C4 10000FP 70000FP 70000*********

PGCN25.OUTFIL.OUT----+----*********A4 20000C4 10000FP 70000FP 70000*********

PGCN25.OUTFIL.OUT1----+----*********A4 20000C4 10000FP 70000FP 70000*********

Page 18: Sync Sort

(11) OUTREC

SORT FIELDS = COPY CAN BE USED NOTE: HERE SORT FIELDS WILL BE EXECUTED BEFORE THE EXECUTION OF OUTREC FIELDS

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.OUTREC.IN,DISP=SHR //SORTOUT DD DSN=PGCN25.OUTREC.OUT, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FB,LRECL=2,BLKSIZE=0) //SYSIN DD * SORT FIELDS=(1,2,BI,D) OUTREC FIELDS=(1:1,2) /* //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=*

PGCN25.OUTREC.IN----+----1----+-****************A420000 00000100C410000 00000200FP70000 00000300G180000 00000400G440000 00000500H250000 00000600L930000 00000700N410000 00000800N460000 00000900****************

PGCN25.OUTREC.OUT----+----1----+-****************N4N4L9H2G4G1FPC4A4****************

Page 19: Sync Sort

(12) REPORT

* DATE PARM - 8 BYTES, PAGE PARM - 6 BYTES, X-SPACES * PAGE PARM COULD NOT BE DISPLAYED IN HEADER 1 * HEADER 1 - REPORT TITLE HEADER 2 - FIELD HEADING * HEADER 3 - SECTION HEADING * LINES=60 (DEFAULT LINES IN A PAGE) * SECTIONS PARM KEEP CONTROL ON 5 BYTE FIELD STARTING AT 4TH BYTE * TOT SUB PARM CALCULATES TOTALS FOR THE CONTROL FIELD * SUB PARM HAVE RUNNING TOTALS,SKIP=1L SKIP 1 LINE AFTER SECTION PARM * SKIP OR HEADER3 OR TRAILER3 IS MANDATORY FOR SECTION PARM * SKIP=P PUTS A PAGE BREAK WHEN THE CONTROL FIELD CHANGES

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.REPORT.IN,DISP=SHR //SORTOUT DD DSN=PGCN25.REPORT.OUT, // DISP=(,CATLG,DELETE), // SPACE=(CYL,(1,1),RLSE), // DCB=(RECFM=FBA,LRECL=41,BLKSIZE=0)//SYSIN DD * SORT FIELDS=(1,2,CH,A) OUTFIL OUTREC=(3:1,2,8:4,5,17:10,8,40:C' '), HEADER1=(2:&DATE,//,4X, 8:'REPORT',/, 8:'------'), HEADER2=(7:'PAGE-',12:&PAGE,/, 3:'CD#', 8:'NO:', 17:'ITEM',/, 3:'---', 8:'---', 17:'----'),LINES=20, SECTIONS=(4,5,SKIP=1L, HEADER3=(3:'SECTION HEADER'), TRAILER3=(/,2:'TOTAL',TOT=(4,5,ZD,EDIT=($II,IIT)))), TRAILER2=(1:'GRD-TOT',TOT=(4,5,ZD,EDIT=($II,IIT))), TRAILER1=(/,1:'TOTAL RECS',COUNT,/, 3:'*** END OF REPORT ***') /* //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=*

PGCN25.REPORT.IN----+----1----+----2----+----3******************************A4 1000 BOY 11 11 10000C4 1000 APPLE 11 11 10000FP 1000 DOG 11 11 10000G1 1000 CAT 11 11 10000G4 10000 FISH 12 11 10000H2 10000 HEN 12 11 10000L9 10000 ELEPHANT 12 11 10000N4 10000 GUN 12 11 10000N4 10000 INK 12 11 10000

Page 20: Sync Sort

******************************

----+----1----+----2----************************ 07/04/01 REPORT ------ PAGE- 1 CD# NO: ITEM --- --- ---- SECTION HEADER A4 1000 BOY C4 1000 APPLE FP 1000 DOG G1 1000 CAT TOTAL $4,000

SECTION HEADER G4 10000 FISH H2 10000 HEN L9 10000 ELEPHANT N4 10000 GUN N4 10000 INK TOTAL$50,000 GRD-TOT$54,000 TOTAL RECS 9 *** END OF REPORT *** ************************

Page 21: Sync Sort

(13) SUMFIELD*USE SORT FIELDS TO HAVE A CONTROL ON A FIELD & *& USE SUM FIELDS TO SUM CERTAIN FIELDS *NOTE: ONLY THE FIRST ENTRY OF THE CONTROL FIELD WILL BE PRESENT * IN THE OUTPUT IF IT IS NUMERIC OTHERWISE LIKE FIELDS WILL * GET ADDED. * WE CAN'T USE FIELDS=COPY & SUM FIELDS B'COZ COPY FIELDS SUPRESS * SUM FIELDS * ONLY ONE I/P FILE IS ALLOWED

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.SUM.IN, // DISP=SHR //SORTOUT DD DSN=PGCN25.SUM.OUT, // DISP=(NEW,CATLG,DELETE), // DCB=(RECFM=FB,LRECL=30,BLKSIZE=0), // SPACE=(CYL,(4,1),RLSE) //SYSIN DD * * SORT FIELDS SPECIFIED HERE IS TO SORT THE RECORDS AND TO HAVE CONTROL* ON A FIELD THAT IS EQUAL IN VALUE SORT FIELDS=(1,2,BI,A) * SUM FIELDS SPECIFIED HERE IS TO SUM THE FIELDS WITH EQUAL DATA OF THE* CONTROL FIELD SUM FIELDS=(4,5,ZD) /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.SUM.IN----+----1----+----2----+----3******************************A1 20000 BOY 11 12 10000A1 10000 BOY 12 12 10000B2 30000 DOG 11 34 50000C3 30000 CAT 12 43 80000B2 40000 DOG 12 34 50000C3 50000 CAT 12 43 80000D4 30000 ELEPHANT 11 78 60000D4 10000 ELEPHANT 12 78 60000D4 20000 ELEPHANT 11 78 60000******************************

PGCN25.SUM.OUT----+----1----+----2----+----3******************************A1 30000 BOY 11 12 10000B2 70000 DOG 11 34 50000C3 80000 CAT 12 43 80000D4 60000 ELEPHANT 11 78 60000******************************

Page 22: Sync Sort

(14) SUMMARY-------- S U M M A R Y R E P O R T -------- USE SORT FIELDS TO HAVE A CONTROL ON A FIELD & USE SUM FIELDS TO SUM ALL FIELDS OR USE TOT PARM TO TOTAL AND DISPLAY IN A TRAILER. NOTE: HAVE CONTROL ON A NUMERIC FIELD & USE SUM FIELDS,OUTREC FIELD & TOTAL SHOULD NOT OVERFLOW THAN THE SPECIFIED LENGTH//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.SUMMARY.IN, // DISP=SHR //SORTOUT DD DSN=PGCN25.SUMMARY.OUT, // DISP=(NEW,CATLG,DELETE), //* DCB=(RECFM=FBA,LRECL=31,BLKSIZE=0), // SPACE=(CYL,(1,1),RLSE) //SYSIN DD * SORT FIELDS=(2,1,ZD,A) SUM FIELDS=(4,2,7,2,11,5),FORMAT=ZD OUTFIL OUTREC=(3:4,2,10:7,2,17:11,5,30:C' '), HEADER1=(05:'SUMMARY REPORT',/, 05:'------- ------',/), HEADER2=(3:'TOT1',10:'TOT2',17:'TOT5',/, 3:'----',10:'----',17:'----') /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.SUMMARY.IN----+----1----+*************** 1 11 12 10000 1 2 2 10000 1 11 4 10000 1 2 3 10000 1 12 4 10000 1 2 3 10000 1 11 8 10000 1 12 8 10000 1 11 8 10000***************

PGCN25.SUMMARY.OUT----+----1----+----2-********************* SUMMARY REPORT ------- ------ TOT1 TOT2 TOT5 ---- ---- ---- 74 52 90000*********************

Page 23: Sync Sort

(15) VARLEN

VARIABLE LENGTH RECORDS HANDLING

//STEP01 EXEC PGM=SORT //SORTIN DD DSN=PGCN25.VARLEN.IN,// DISP=SHR //SORTOUT DD DSN=PGCN25.VARLEN.OUT,// DISP=(NEW,CATLG,DELETE), //* DCB=(RECFM=VB,LRECL=24,BLKSIZE=0), // SPACE=(CYL,(10,5),RLSE) //SYSIN DD * SORT FIELDS=COPY * RECORD DESCRIPTOR WORD FOR VB RECS WILL BE THE FIRST 4 BYTES * OF THE RECORD * FINAL LENGTH SHOULD NOT BE GIVEN OUTREC FIELDS=(1:1,4,5:6,1,6:5,1,7:7,3,13:13,1,17:17,1,18) /* //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*END OF SORT

PGCN25.VARLEN.IN----+----1----+-----******************A1CA3 0 990201A1CA4 - 001001A1CA5 0 980201A1CA6 0 010701A1CA7 - 970901A1CA8 0 010301A1CA9 0 010301A1CB1 0 010301A1CB2 0 010301A1CB3 0 010301******************

PGCN25.VARLEN.OUT----+----1----+---******************1ACA3 0 9902011ACA4 - 0010011ACA5 0 9802011ACA6 0 0107011ACA7 - 9709011ACA8 0 0103011ACA9 0 0103011ACB1 0 0103011ACB2 0 0103011ACB3 0 010301******************