You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mainframe DFSORT:按分组计数筛选每组前2条记录

用Mainframe DFSORT实现分组统计并筛选前2条记录

需求说明

对输入文件按FILE_NAME和DATA_REC字段分组,统计每组的出现次数,针对每个FILE_NAME保留计数最高的前2组记录,最终输出包含FILE_NAME、DATA_REC及对应计数的结果。

实现方案

使用DFSORT的ICETOOL工具结合排序、统计、分段筛选完成,具体JCL及控制语句如下:

//SORTJOB  JOB (ACCT),'GROUP COUNT',CLASS=A,MSGCLASS=X
//*
//ICETOOL  EXEC PGM=ICETOOL
//TOOLMSG  DD SYSOUT=*
//DFSMSG   DD SYSOUT=*
//INDD     DD DSN=你的输入数据集名称,DISP=SHR
//TEMPDDS  DD DSN=&&TEMP,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE)
//OUTDD    DD DSN=你的输出数据集名称,DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(5,5),RLSE),DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//*
//TOOLIN   DD *
  COUNT FROM(INDD) TO(TEMPDDS) ON(1,9,CH) ON(11,9,CH) -
         USING(CTL1)
/*
//CTL1CNTL DD *
  OUTFIL FNAMES=TEMPDDS,BUILD=(1,9,X,11,9,X,COUNT=(M11,LENGTH=8))
/*
//*
//SORTSTEP EXEC PGM=SORT
//SYSOUT   DD SYSOUT=*
//SORTIN   DD DSN=&&TEMP,DISP=(OLD,PASS)
//SORTOUT  DD DSN=&&SORTED,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE)
//SYSIN    DD *
  SORT FIELDS=(1,9,CH,A,20,8,ZD,D)
/*
//*
//FINAL    EXEC PGM=SORT
//SYSOUT   DD SYSOUT=*
//SORTIN   DD DSN=&&SORTED,DISP=(OLD,PASS)
//SORTOUT  DD DSN=&&FINAL,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE)
//SYSIN    DD *
  OPTION COPY
  OUTFIL FNAMES=SORTOUT,
         SEGMENT=(ID=(1,9,CH),PREFIX=(''),SUFFIX=(''),
                  FIRST=2,
                  BUILD=(1,9,X,11,9,X,20,8,ZD,TO=CCITT,LENGTH=8))
/*
//*
//PRINTSTEP EXEC PGM=SORT
//SYSOUT   DD SYSOUT=*
//SORTIN   DD DSN=&&FINAL,DISP=(OLD,PASS)
//SORTOUT  DD DSN=你的输出数据集名称,DISP=(OLD,CATLG)
//SYSIN    DD *
  OPTION COPY
  OUTFIL FNAMES=SORTOUT,
         REMOVECC,
         OUTREC=(1,9,X,11,9,X,20,8,ZD,EDIT=(IITTT),SIGNS=(+,-))
/*

代码说明

  1. 分组统计:通过ICETOOL COUNT命令,按FILE_NAME(位置1-9)和DATA_REC(位置11-9)分组统计次数,结果写入临时数据集TEMPDDS,输出格式为FILE_NAME DATA_REC 计数。
  2. 排序:对临时数据集按FILE_NAME升序、计数降序排序,保证每个FILE_NAME下的记录按计数从高到低排列。
  3. 分段筛选:使用OUTFIL SEGMENT功能,以FILE_NAME为分段标识,仅保留每个分段的前2条记录。
  4. 格式调整:最后调整计数的输出格式,移除多余控制字符,生成符合要求的最终输出。

注意事项

  • 需根据实际输入文件的字段位置,调整ON(1,9,CH)和ON(11,9,CH)中的位置参数。
  • 输出数据集的LRECL和RECFM需结合实际需求调整,示例使用FB/80格式。

内容的提问来源于stack exchange,提问作者mayank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 10:05:02