从文件中读取记录

发布于 2024-09-04 20:42:38 字数 83 浏览 5 评论 0原文

我有一个包含一定数量记录的文件,我只想将前 10 条记录复制到另一个文件中。

谁能告诉我如何编写jcl,使用sort,icetool等。

I have a file having some number of records and I want to copy only first and last 10 records into another file.

Can anybody tell how to write jcl, using sort, icetool, etc.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

離殇 2024-09-11 20:42:38

您可以使用 ICETOOL 复制输入文件的子集。

下面是将前 10 条记录复制到另一个文件中的 JCL。我假设每个固定长度记录为 80 字节。

您还必须更改工作卡以适应大型机商店的要求。

//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 应用程序编程指南

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.

羁〃客ぐ 2024-09-11 20:42:38

从 2008 年 7 月起,ICETOOL 有了子集。

//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 月。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文