Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 通过JCL排序/syncsort,将文件A的列A中的值从文件B的列B中减去。在文件3中显示结果(新文件)_Sorting_Jcl_Syncsort - Fatal编程技术网

Sorting 通过JCL排序/syncsort,将文件A的列A中的值从文件B的列B中减去。在文件3中显示结果(新文件)

Sorting 通过JCL排序/syncsort,将文件A的列A中的值从文件B的列B中减去。在文件3中显示结果(新文件),sorting,jcl,syncsort,Sorting,Jcl,Syncsort,有输入文件1: C1 C2 C3 5102;22680372 =0000000001 5111;21840112 =0000000002 5363;21980235 =0000000002 5363;22700216 =0000000001 输入文件2: 5111;21840112 =0000000002 5363;21980235 =0000000001 5363;22700216 =0000000001 预期输出:应按以下方式排序 JOINKE

有输入文件1:

 C1   C2        C3
 5102;22680372 =0000000001
 5111;21840112 =0000000002
 5363;21980235 =0000000002
 5363;22700216 =0000000001
输入文件2:

 5111;21840112 =0000000002
 5363;21980235 =0000000001
 5363;22700216 =0000000001  
预期输出:应按以下方式排序

   JOINKEYS FILES=F1,FIELDS=(1,04,A,6,8,A,16,10,a) 
   JOINKEYS FILES=F2,FIELDS=(1,04,A,6,8,A,16,10,a) 
   REFORMAT FIELDS=(F1:1,.. and... ) 
我需要这个序列的输出文件

   File1 C1  File1 C2    file1C3     [file1C3 - file2 C3] value
   5102;     22680372   =0000000001  =00000             *(no records in second file for it)
   5111;     21840112   =0000000002  =00000             *(1-1 =0)
   5363;     21980235   =0000000002  =00001             *(2-1= 1)
   5363;      22700216  =0000000001  =00000             *(1-1 =0) 
只是给你解释一下 现在就试试这个

选项副本 连接键F1=INA,字段=1,4,A,6,8,A 连接键F2=INB,字段=1,4,A,6,8,A 重新格式化字段=F1:1,25,F2:16,10 INREC BUILD=1,25,26,10,SFF,SUB,36,10,SFF,EDIT=STTTT

结果:

   5060;22222222 =0000000001 (blank)  i just need 0001 - nothin(0) = 1 simply 1 here         
   5102;22680372 =0000000001;000000000
   5105;22222222 =0000000002 (blank)   need 2 here same 2-0 or nothing(unmatched) = 2         

你很接近。但是,不需要SFF。这是有符号的自由格式,您有一个无符号的固定格式编号。使用ZD。您的编辑不够大,无法容纳10位数字。如果你的结果永远不会,我的意思是永远不会,超过六位数,这不是问题。对于=,您没有代码来生成它,现在还不清楚该符号将指向何处,因为它正在引导字段

根据到目前为止的情况,您将只获得两个文件之间匹配的记录。您将需要:

 JOIN UNPAIRED,F1
如果要在输出中使用F1中不匹配的记录,请在第二次JOINKEYS之后输入

如果没有匹配项,则减法将有问题,因此需要一些代码。您的编码方式取决于您是使用DFSORT还是SyncSort

如果输入文件中有一个或两个,则应在相应的JOINKEYS语句中指定排序。使用DFSORT而不是SyncSort,您还可以指定NOSEQCHK

根据进一步的信息,我们取得了以下进展:

  OPTION COPY 
  JOINKEYS F1=INA,FIELDS=(1,4,A,6,8,A) 
  JOINKEYS F2=INB,FIELDS=(1,4,A,6,8,A) 

  JOIN UNPAIRED,F1 

  REFORMAT FIELDS=(F1:1,25,F2:16,10),FILL=X'FF' 

  INREC IFTHEN=(WHEN=(35,1,CH,EQ,X'FF'), 
                 OVERLAY=(26:C'+',10C'0')), 
        IFTHEN=(WHEN=NONE, 
                     OVERLAY=(26:16,10,ZD,SUB,26,10,ZD, 
                              EDIT=(STTTTTTTTTT),SIGNS=(+,-))) 
未配对,F1表示与配对记录一起,来自F1的未配对记录将显示给主任务

REFORMAT语句定义主任务将使用的数据记录。在本例中,整个F1记录包括F1:1,25和F2:16,10中的10位数字

FILL=告诉SORT在未配对记录的情况下为任何丢失的记录设置值。在这种情况下,重新格式化记录的26,10将被设置为所有X'FF'

IFTHEN=WHEN=逻辑表达式用于从F2数据中识别位于数字之一位置的X'FF'。如果X'FF'存在,则不存在匹配项。在这种情况下,来自F2的字节被设置为您实际需要的任何默认值

对于未满足IFTHEN=WHEN=逻辑表达式的任何记录,IFTHEN=WHEN=NONE处于活动状态。计算完成,并格式化计算的输出

如果任何一个输入文件已经按照您想要的顺序,请查看前面的建议

如果希望以不同的顺序从主任务输出,只需编写一条SORT语句,然后删除COPY选项

您想要的确切输出格式尚不清楚,但您应该能够根据需要进行调整


您需要获得SyncSort手册。它们可以作为PDF免费提供给拥有SyncSort许可证的站点。如果没有人知道如何为您提供,那么请找出SyncSort的联系人,并让他们通过SyncSort支持请求手册。只要提供几个细节,您就可以得到一份副本,可能是通过回信的方式。

您已经接近了。但是,不需要SFF。这是有符号的自由格式,您有一个无符号的固定格式编号。使用ZD。您的编辑不够大,无法容纳10位数字。如果你的结果永远不会,我的意思是永远不会,超过六位数,这不是问题。对于=,您没有代码来生成它,现在还不清楚该符号将指向何处,因为它正在引导字段

根据到目前为止的情况,您将只获得两个文件之间匹配的记录。您将需要:

 JOIN UNPAIRED,F1
如果要在输出中使用F1中不匹配的记录,请在第二次JOINKEYS之后输入

如果没有匹配项,则减法将有问题,因此需要一些代码。您的编码方式取决于您是使用DFSORT还是SyncSort

如果输入文件中有一个或两个,则应在相应的JOINKEYS语句中指定排序。使用DFSORT而不是SyncSort,您还可以指定NOSEQCHK

根据进一步的信息,我们取得了以下进展:

  OPTION COPY 
  JOINKEYS F1=INA,FIELDS=(1,4,A,6,8,A) 
  JOINKEYS F2=INB,FIELDS=(1,4,A,6,8,A) 

  JOIN UNPAIRED,F1 

  REFORMAT FIELDS=(F1:1,25,F2:16,10),FILL=X'FF' 

  INREC IFTHEN=(WHEN=(35,1,CH,EQ,X'FF'), 
                 OVERLAY=(26:C'+',10C'0')), 
        IFTHEN=(WHEN=NONE, 
                     OVERLAY=(26:16,10,ZD,SUB,26,10,ZD, 
                              EDIT=(STTTTTTTTTT),SIGNS=(+,-))) 
未配对,F1表示与配对记录一起,来自F1的未配对记录将显示给主任务

REFORMAT语句定义主任务将使用的数据记录。在本例中,整个F1记录包括F1:1,25和F2:16,10中的10位数字

FILL=告诉SORT在未配对记录的情况下为任何丢失的记录设置值。在这种情况下,重新格式化记录的26,10将被设置为所有X'FF'

IFTHEN=WHEN=逻辑表达式用于从F2数据中识别位于数字之一位置的X'FF'。如果X'FF'存在,则不存在匹配项。在这种情况下,来自F2的字节被设置为您实际需要的任何默认值

对于未满足IFTHEN=WHEN=逻辑表达式的任何记录,IFTHEN=WHEN=NONE处于活动状态。计算完成了,, 并对计算结果进行格式化

如果任何一个输入文件已经按照您想要的顺序,请查看前面的建议

如果希望以不同的顺序从主任务输出,只需编写一条SORT语句,然后删除COPY选项

您想要的确切输出格式尚不清楚,但您应该能够根据需要进行调整


您需要获得SyncSort手册。它们可以作为PDF免费提供给拥有SyncSort许可证的站点。如果没有人知道如何为您提供,那么请找出SyncSort的联系人,并让他们通过SyncSort支持请求手册。只要提供几个细节,您就可以得到一份副本,可能是通过返回电子邮件。

您还没有澄清您使用的是哪种分拣产品。查看步骤中的sysout,注意它是在某处显示DFSORT还是SyncSort。编辑您的问题并删除这两个标签中不合适的一个。您仍然没有澄清您使用的是哪种产品。查看步骤中的sysout,注意它是在某处显示DFSORT还是SyncSort。编辑你的问题并删除这两个标签中任何一个不合适的。谢谢比尔,是的,我得到了“不匹配”的减法问题。请阅读更新说明..我们仍然需要知道SyncSort或DFSORT。解决方案是不同的。我使用了简单的排序程序//STEP03 EXEC PGM=SORTYes,但DFSORT和SyncSort都是以这种方式执行的。您必须查看滑阀中作业的输出。如果找不到DFSORT,可以尝试查找SYNCSORT。或者问问同事他们是否知道。嘿,比尔,我查过了,SYNCSORT在系统输出中!如何进行同步排序?谢谢Bill,是的,我遇到了“不匹配”的减法问题。请阅读更新说明..我们仍然需要知道SyncSort或DFSORT。解决方案是不同的。我使用了简单的排序程序//STEP03 EXEC PGM=SORTYes,但DFSORT和SyncSort都是以这种方式执行的。您必须查看滑阀中作业的输出。如果找不到DFSORT,可以尝试查找SYNCSORT。或者问问同事他们是否知道。嘿,比尔,我查过了,SYNCSORT在系统输出中!如何进行同步排序?