syncsort adding trailer3'; '使最后一列值剪辑掉

时间:2013-11-19 10:13:41

标签: sorting syncsort

输入文件列在fiesr 2列,A文件的第3列上进行比较 - B第3列B文件shud给出减计数,总计8个TTTTTTTT用于计数

 OPTION COPY                                               
 JOINKEYS FILES=F1,FIELDS=(5,4,A,10,20,A)                  
 JOINKEYS FILES=F2,FIELDS=(1,4,A,6,20,A)                   
 REFORMAT FIELDS=(F1:10,20,9,1,5,4,30,1,31,10,F2:27,10)    
 JOIN UNPAIRED,F1                                          
 INREC BUILD=(1,46,27,10,SFF,SUB,37,10,SFF,EDIT=(TTTTTTTT))
 OUTFIL REMOVECC,NODETAIL,                                 
   SECTIONS=(1,54,                                    
             TRAILER3=(1,36,                          
                       ';',                           
                        37,10,                        
                        ';',                          
                        47,7))   

输出给出最后一列(减去7位数,其中它是8个字符 为什么它采取55列而不是54在SECTIONS = 1,54中定义并且没有给予abend添加'; ',为了一个'; '如果你看到cols,它会从54到55增加1列。 为secont添加'; '它只是切断了文件的最后一个字符

----+----1----+----2----+----3----+----4----+----5----+
********************************* Top of Data *********
22222222            ;5060;         1;         1;0000000

1 个答案:

答案 0 :(得分:0)

47,7)) 

您只需要从输入中复制七个字节,因此只复制七个字节,而不是八个。

我看不出你为SECTION使用OUTFIL的任何理由。

您正在将这些部分的控制字段定义为整个记录。如果连续记录相同,它们将显示为一条记录,而不进行总计。尝试获取测试数据以向自己展示。

当F2不存在时,对于F2数据使用SFF是创造性的,但是使事情变得不那么清楚。您的号码是否已签名?此外,当你减去你不允许否定结果。您的任何数字都可以包含八位以上的数字吗?如果是这样,如果SUB的结果为您提供超过八位数字,则会截断。

OPTION COPY                                               
JOINKEYS FILES=F1,FIELDS=(5,4,A,10,20,A)                  
JOINKEYS FILES=F2,FIELDS=(1,4,A,6,20,A)                   
REFORMAT FIELDS=(F1:10,20,9,1,5,4,30,1,31,10,F2:27,10)    
JOIN UNPAIRED,F1                                          
INREC BUILD=(1,36,
             C';',
             37,10,
             C';',
             27,10,SFF,
              SUB,
               37,10,SFF,
              EDIT=(TTTTTTTT))

可以使用的SFF的替代格式是UFF(用于自由格式)和FS,用于固定格式,具有可选的浮动符号。我认为FS最符合您的要求。

在EDIT模式中,T表示“有效数字”,因此将保留前导零。我指出一个“无关紧要的数字”,因此前导零将显示为空白。

EDIT=(IIIIIIIT)

您可以使用手册中的标准模式和许多可以使用EDIT模式执行的操作示例。