我有一个包含一些记录的文件,我只想将第一条和最后 10 条记录复制到另一个文件中。
任何人都可以告诉如何编写 jcl,使用 sort、icetool 等。
您可以使用 ICETOOL 复制输入文件的子集。
这是将前 10 条记录和后 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 应用程序编程指南以获取更多信息。
从 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 月。