我有一个包含一定数量记录的文件,我想只将第一个和最后10个记录复制到另一个文件中。
任何人都可以告诉如何使用sort,icetool等编写jcl。
答案 0 :(得分:1)
您可以使用ICETOOL复制输入文件的子集。
这是将第一个和最后10个记录复制到另一个文件的JCL。我假设每个80字节的固定长度记录。
您还必须更改JOB卡以适应您的大型机商店的要求。
//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)
//
第一组控制卡(CTL1CNTL
)将一个序列号添加到输入记录中。
第二组控制卡(CTL2CNTL
)获得前10个输入记录。
第三组控制卡(CTL3CNTL
)以相反的顺序对输入记录进行排序,得到前10个(最后10个)记录。
第四组控制卡(CTL4CNTL
)按正确的顺序对提取的记录进行排序,并删除第一组控制卡添加的序列号。
这是IBM的DFSORT Application Programming Guide以获取更多信息。
答案 1 :(得分:0)
从2008年7月起,ICETOOL有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)
要知道您是否有2008年7月,请在任何排序步骤中查看ICE201I消息。
ICE201I F RECORD TYPE ...
信息编号后面的字母为F或更高,然后包括2008年7月。