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

如何使用JCL更新输出文件中的Trailer记录计数

如何用JCL更新排序后输出文件的Trailer记录计数

核心思路

利用DFSORT/SYNCSORT的排序控制卡,保留原文件的Header记录、过滤掉旧的Trailer记录,同时统计各类记录(type1-5)的数量,最终生成包含最新计数的新Trailer记录追加到输出文件末尾。

示例JCL及控制卡

//UPDTRAILER JOB (ACCT),'UPDATE TRAILER',CLASS=A,MSGCLASS=X
//SORTSTEP EXEC PGM=SORT
//SYSOUT   DD SYSOUT=*
//SORTIN   DD DSN=YOUR.SORTED.OUTPUT.FILE,DISP=SHR
//SORTOUT  DD DSN=YOUR.UPDATED.OUTPUT.FILE,DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(5,5),RLSE),UNIT=SYSDA
//SYSIN    DD *
  OPTION COPY
  OUTFIL REMOVECC,
         INCLUDE=(1,1,CH,NE,C'9'),  // 排除原Trailer记录
         HEADER1=(01,80),           // 保留原Header记录(取输入首条记录)
         TRAILER1=(C'9',            // 新Trailer的标识位
                   COUNT=(1,1,CH,EQ,C'1'),ZD,9,LENGTH=9,  // Type1计数(占2-10列)
                   COUNT=(1,1,CH,EQ,C'2'),ZD,9,LENGTH=9,  // Type2计数(占11-19列)
                   COUNT=(1,1,CH,EQ,C'3'),ZD,9,LENGTH=9,  // Type3计数(占20-28列)
                   COUNT=(1,1,CH,EQ,C'4'),ZD,9,LENGTH=9,  // Type4计数(占29-37列)
                   COUNT=(1,1,CH,EQ,C'5'),ZD,9,LENGTH=9)  // Type5计数(占38-46列)
/*
//*

关键部分解释

  • OPTION COPY:基础复制模式,确保输入记录按原顺序传递,仅通过OUTFIL进行过滤和追加操作。
  • INCLUDE=(1,1,CH,NE,C'9'):过滤掉原文件中标识为9的Trailer记录,避免旧计数残留。
  • HEADER1=(01,80):提取输入文件的第一条记录(即Header记录)作为输出文件的开头,保证文件结构不变。
  • TRAILER1:生成新的Trailer记录:
    • 首列固定为C'9',符合Trailer的标识规则。
    • COUNT=(条件):统计输入中符合指定类型的记录数量,ZD,9,LENGTH=9将统计结果转换为9位的十进制格式,刚好匹配原Trailer中每个计数字段的9列长度要求。

扩展:保留Trailer的其他固定内容

如果原Trailer记录在计数字段后还有其他固定内容需要保留,可以先将这部分内容临时存储,再追加到新Trailer末尾:

//SYSIN    DD *
  OPTION COPY
  // 临时保存原Trailer的非计数字段到81位开始的临时区域
  INREC IFTHEN=(WHEN=(1,1,CH,EQ,C'9'),
                 OVERLAY=(81:47,34)),  // 假设47-80位是Trailer的固定内容,共34位
        IFTHEN=(WHEN=NONE,
                 OVERLAY=(81:34X))     // 其他记录填充空格占位
  OUTFIL REMOVECC,
         INCLUDE=(1,1,CH,NE,C'9'),
         HEADER1=(01,80),
         TRAILER1=(C'9',
                   COUNT=(1,1,CH,EQ,C'1'),ZD,9,LENGTH=9,
                   COUNT=(1,1,CH,EQ,C'2'),ZD,9,LENGTH=9,
                   COUNT=(1,1,CH,EQ,C'3'),ZD,9,LENGTH=9,
                   COUNT=(1,1,CH,EQ,C'4'),ZD,9,LENGTH=9,
                   COUNT=(1,1,CH,EQ,C'5'),ZD,9,LENGTH=9,
                   47:81,34)  // 还原原Trailer的固定内容
/*

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:35:37