Syncsort-将未处理的记录写入SORTOUT文件,将已付款的记录写入已付款的文件



我可以使用以下方法将未处理的记录保存到SORTOUT(这就是我想要的(:

//SORT     EXEC PGM=SORT,PARM='DYNALLOC=(SYSDA,255)'
//SORTMSGS DD SYSOUT=*
//SORTJNF1 DD DSN=FILE1,
//            DISP=OLD,DCB=BUFNO=255
//SORTJNF2 DD DSN=FILE2,
//            DISP=OLD,DCB=BUFNO=255
//SORTOUT  DD DSN=FILEOUT,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=(SYSDA,59),
//            SPACE=(CYL,(500,100),RLSE)
//SYSIN    DD *
SORT FIELDS=COPY
JOINKEYS FILE=F1,FIELDS=(25,4,A,115,20,A,135,4,A,140,4,A,5,20,A)
JOINKEYS FILE=F2,FIELDS=(5,4,A,9,20,A,29,4,A,33,4,A,37,20,A)
JOIN UNPAIRED,F2,ONLY

但我需要将已配对的记录保存到一个单独的文件中。我尝试了以下语句,但PAIRED记录没有保存在我的PAIRED文件中:

//SORT     EXEC PGM=SORT,PARM='DYNALLOC=(SYSDA,255)'
//SORTMSGS DD SYSOUT=*
//SORTJNF1 DD DSN=FILE.F1,
//            DISP=OLD,DCB=BUFNO=255
//SORTJNF2 DD DSN=FILE.F2,
//            DISP=OLD,DCB=BUFNO=255
//SORTOUT  DD DSN=FILE.SORTOUT,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=(SYSDA,59),
//            SPACE=(CYL,(500,100),RLSE)
//PAIRED   DD DSN=FILE.PAIRED,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=(SYSDA,59),
//            SPACE=(CYL,(500,100),RLSE)
//SYSIN    DD *
SORT FIELDS=COPY
JOINKEYS FILE=F1,FIELDS=(25,4,A,115,20,A,135,4,A,140,4,A,5,20,A)
JOINKEYS FILE=F2,FIELDS=(5,4,A,9,20,A,29,4,A,33,4,A,37,20,A)
JOIN UNPAIRED,F2,ONLY
OUTFIL FNAMES=SORTOUT
OUTFIL FNAMES=PAIRED,SAVE

编辑1:OP已经提到(在这个答案的评论部分(,"我只想在我的主SORTOUT数据集中保留未处理的记录(仅F2(,在我的PAIRED数据集中保留已配对的记录(只F2("成对记录意味着F1&F2.OP基本上是在寻找RIGHT JOIN。下面提供的SORT声明是根据OP的要求编辑的。请注意,除非指定了具有ONLY操作数的JOIN语句,否则需要REFORMAT语句。

您必须在Syncsort中使用一个方法(在dfsort中称为indicator方法(,才能达到预期效果。请参阅以下SORT声明。

SORT FIELDS=COPY
JOINKEYS FILE=F1,FIELDS=(25,4,A,115,20,A,135,4,A,140,4,A,5,20,A)
JOINKEYS FILE=F2,FIELDS=(5,4,A,9,20,A,29,4,A,33,4,A,37,20,A)
REFORMAT FIELDS=(F1:p,l,F2:p,l,?)
JOIN UNPAIRED,F2
OUTFIL FNAMES=BOTH,INCLUDE=(53,1,CH,EQ,C'B'),BUILD=(Build the columns you need from F1/F2)                          
OUTFIL FNAMES=UNPAIRED,INCLUDE=(53,1,CH,EQ,C'2'),BUILD=(Build the columns you need from F2)

其中,

p—位置值表示字段相对于输入记录开头的第一个字节。

l-长度值表示字段的长度。

观察REFORMAT FIELDS语句中的?

引用Syncsort for z/OS程序员指南:

此符号用于在重新格式化的指示重新格式化的记录是配对记录还是未配对的已联接记录。指示灯将设置为三个中的一个不同的可打印值:

"B",如果重新格式化的记录是一对记录

"1",如果重新格式化的记录是创建的未配对记录从F1文件

"2",如果重新格式化的记录是未配对的记录从F2文件创建

更多详细信息:

  • 配对和未配对的F1/F2记录(指示器方法(
  • Syncsort for z/OS程序员指南

希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新