Joined: 23 Feb 2006 Posts: 305 Location: Hyderabad,India
Hi,
This is the JCL for You.
Code:
//SORTIN EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=KBY@V1.TEST.SORT.INPUT,DISP=SHR
//*** MUST USE DISP=MOD FOR OUTPUT - MAKE SURE
//*** THE OUTPUT DATA SET IS EMPTY INITIALLY
//OUT DD DISP=MOD,DSN=KBY@V1.OUTPUT.RESULT(0),
// DCB=(LRECL=080,RECFM=FB),
// SPACE=(TRK,(10,10),RLSE),
// UNIT=DISK
//TOOLIN DD *
* COPY HEADER RECORD
COPY FROM(IN) TO(OUT) USING(HHHH)
* SORT DETAIL RECORDS
SORT FROM(IN) TO(OUT) USING(DDDD)
* COPY TRAILER RECORD
COPY FROM(IN) TO(OUT) USING(TTTT)
/*
//HHHHCNTL DD *
* GET HEADER RECORD (FIRST)
OPTION STOPAFT=1
/*
//DDDDCNTL DD *
* SKIP HEADER RECORD
OPTION SKIPREC=1
* SKIP TRAILER RECORD
** USE AN OMIT CONDITION THAT DISTINGUISHES
** THE TRAILER RECORD FROM THE DETAIL RECORDS
OMIT COND=(1,4,CH,EQ,C'VAMS')
* SORT ALL BUT THE HEADER AND TRAILER RECORDS
SORT FIELDS=(1,6,CH,A)
/*
//TTTTCNTL DD *
* SKIP HEADER RECORD
OPTION SKIPREC=1
* GET TRAILER RECORD
** USE AN INCLUDE CONDITION THAT DISTINGUISHES
** THE TRAILER RECORD FROM THE DETAIL RECORDS
** (SAME AS ABOVE)
INCLUDE COND=(1,4,CH,EQ,C'VAMS')
/*
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
munztah,
If the first and last record have an "identifier", you can do it in one pass with a DFSORT job like the one below. I assumed your input file has RECFM=FB and LRECL=80, but the job can be changed appropriately for other attributes.
Code:
//S1 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=... input file (FB/80)
//SORTOUT DD DSN=... output file (FB/80)
//SYSIN DD *
* Put special key of '1' in 81 for data records.
INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:C'1')),
* For header record, put special key of '0' in 81.
IFTHEN=(WHEN=(1,5,CH,EQ,C'Hello'),OVERLAY=(81:C'0')),
* For trailer record, put special key of '9' in 81.
IFTHEN=(WHEN=(1,5,CH,EQ,C'World'),OVERLAY=(81:C'9'))
* Sort by special key ('0', '1' or '9') and then regular key.
SORT FIELDS=(81,1,CH,A,1,5,CH,A)
* Remove special key.
OUTREC FIELDS=(1,80)
/*
If the first or last record does not have an identifier, let me know what the exact situation is, and I'll show you another approach.