Reading records from a file
I have a file having some number of records and I want to copy only first and last 10 records in开发者_C百科to another file.
Can anybody tell how to write jcl, using sort, icetool, etc.
You can use ICETOOL to copy a subset of your input file.
Here's the JCL to copy the first and last 10 records into another file. I'm assuming fixed length records of 80 bytes each.
You'll also have to change the JOB card to fit with your mainframe shop's requirements.
//EXAMP JOB A400,PROGRAMMER
//STEP1 EXEC PGM=ICETOOL
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=INPUT,DISP=SHR
//T1 DD DSN=&&T1,DISP=(,PASS),UNIT=VIO
//T2 DD DSN=&&T2,DISP=(,PASS),UNIT=VIO
//T3 DD DSN=&&T3,DISP=(,PASS),UNIT=VIO
//SORTOUT DD DSN=OUTPUT,DISP=(NEW,CATLG),UNIT=SYSDA,
// SPACE=(CYL,(5,1))
//SYSIN DD *
COPY FROM(IN) USING(CTL1)
COPY FROM(T1) USING(CTL2)
COPY FROM(T1) USING(CTL3)
COPY FROM(T2,T3) USING(CTL4)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=T1,OUTREC=(1,80,SEQNUM,8,ZD)
/*
//CTL2CNTL DD *
OUTFIL FNAMES=T2,ENDREC=10
/*
//CTL3CNTL DD *
SORT FIELDS=(81,8,BI,D)
OUTFIL FNAMES=T3,ENDREC=10
/*
//CTL4CNTL DD *
SORT FIELDS=(81,8,BI,A)
OUTFIL FNAMES=SORTOUT,OUTREC=(1,80)
//
The first set of control cards (CTL1CNTL
) adds a sequence number to the input records.
The second set of control cards (CTL2CNTL
) gets the first 10 input records.
The third set of control cards (CTL3CNTL
) sorts the input records in reverse order, and gets the first 10 (which would be the last 10) records.
The fourth set of control cards (CTL4CNTL
) sorts the extracted records in the correct order and removes the sequence numbers added by the first set of control cards.
Here's IBM's DFSORT Application Programming Guide for more information.
From July 2008 ICETOOL has SUBSET.
//STEP1 EXEC PGM=ICETOOL
//SYSOUT DD SYSOUT=*
//IN DD DSN=your input
//OUT DD DSN=your output
//SYSIN DD *
SUBSET FROM(IN) TO(OUT) KEEP INPUT FIRST(10) LAST(10)
To know whether you have July 2008 available, look at the ICE201I message in any sort step.
ICE201I F RECORD TYPE ...
The letter immediately after the message number is F or greater, then you have July 2008 included.
精彩评论