DFSORT中的求和字段

问题描述

//SUMREC01 JOB SUMREC0J
//SUMEXEC EXEC pgm=SORT
//SORTIN DD *
CA-02963
CA 06288
CA 07351
CA 05027
CA 05200
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
 SORT FIELDS=(1,2,CH,A)
 SUM FIELDS=(3,6,ZD)
/*

提交上述工作时,我得到的答案是“ CA026829”。对于JCL,我还必须考虑减号并获得答案“ CA023866”。

解决方法

您可以将 SFF 字段转换为 ZD 对数据求和,如下所示:

//SUMREC01 JOB SUMREC0J
//SUMEXEC EXEC PGM=SORT
//SORTIN DD *
CA-02963
CA 06288
CA 07351
CA 05027
CA 05200
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
 INREC FIELDS=(1,2,3,6,SFF,TO=ZD)
 SORT FIELDS=(1,CH,A)
 SUM FIELDS=(3,ZD)
 OUTREC FIELDS=(1,ZD,EDIT=(SIIIIT),SIGNS=(,-))
/*

将导致您的输出文件包含:

CA 20903

通过 AHLSORT for Windows x64 验证,版本 v14r3-87-g811342a2

DFSORT 和 SYNCSORT 的工作方式应该相同。