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

如何使用DFSORT合并具有相同ID的条目?

用DFSORT实现同ID下属性值的合并

可以用DFSORT完成这个合并需求,以下是具体的实现方案:

完整JCL示例

//MERGEID   JOB (ACCT),'MERGE ID ATTRIBUTES',CLASS=A,MSGCLASS=X
//SORT      EXEC PGM=SORT
//SYSOUT    DD SYSOUT=*
//SORTIN    DD DSN=你的输入数据集名称,DISP=SHR
//SORTOUT   DD DSN=你的输出数据集名称,DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(1,1),RLSE),RECFM=FB,LRECL=80
//SYSIN     DD *
  SORT FIELDS=(1,4,CH,A)
  OUTFIL REMOVECC,
         HEADER1=(1:'ID    Particularity',/,1:'----  ----------------'),
         IFTHEN=(WHEN=GROUP,
                  BEGIN=(1,4,NE,1,4,OR,INRECORD=1),
                  PUSH=(10:1,4, 15:15,3),
                  END=(1,4,NE,NEXT(1,4)),
                  BUILD=(1,4,8X,
                         15,3,
                         ', ',NEXT(15,3),
                         ', ',NEXT(NEXT(15,3)),
                         ', ',NEXT(NEXT(NEXT(15,3))))),
         IFTHEN=(WHEN=(1,4,EQ,PREV(1,4)),DROP)
/*

关键逻辑说明

  1. 排序分组:SORT FIELDS=(1,4,CH,A) 按第1-4位的ID字段升序排序,确保相同ID的记录连续排列(即使输入数据已有序,这一步也能避免异常情况)。
  2. 表头输出:HEADER1 参数指定输出要求的表头行。
  3. 分组合并:
    • WHEN=GROUP 定义分组规则:BEGIN 标记分组起始(当前ID与上一条不同,或是第一条记录),END 标记分组结束(当前ID与下一条不同)。
    • PUSH 将当前记录的ID和Particularity值推送到临时字段,用于后续拼接。
    • BUILD 把同组内的多个Particularity值用「逗号+空格」拼接成连续字符串。
  4. 去重保留结果:最后一条IFTHEN规则删除重复的ID记录,只保留每组的合并结果行。

注意事项

  • 需要根据实际输入文件的记录格式(FB/VB)和字段位置,调整1,4(ID的起始位置和长度)、15,3(Particularity的起始位置和长度)的参数。
  • 如果同一个ID对应的Particularity数量超过4个,只需在BUILD语句中继续添加, ', NEXT(NEXT(...))的格式扩展即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:53:11