同步排序添加拖车3 ' ; '使最后一列值被剪掉



输入文件列在字段2列、A文件的第3列-B文件的第三列上进行比较,得出总共有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个字符为什么在SECTIONS=1,54中定义了55列而不是54列,并且没有给出添加";"的终止,对于一个";"如果你看到第…列,它增加了一列,从54到55。。对于secont添加了";"它只是截取文件的最后一个字符

----+----1----+----2----+----3----+----4----+----5----+
********************************* Top of Data *********
22222222            ;5060;         1;         1;0000000
47,7)) 

您只要求从输入中复制7个字节,因此只复制7个,而不是8个。

我看不出有什么理由让你使用OUTFIL和SECTIONS。

您正在将部分的控制字段定义为整个记录。如果连续的记录是相同的,它们将作为一个记录出现,甚至不会相加。试着获取测试数据来向自己展示这一点。

当F2不存在时,将SFF用于F2数据是有创意的,但使事情变得不那么清楚。你的号码有签名吗?此外,当你进行SUBtract时,你不允许出现负面结果。你的任何数字都能超过八位数吗?如果是这样的话,如果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表示"有效数字",因此将保留前导零。I表示"不重要的数字",因此前导零将显示为空格。

EDIT=(IIIIIIIT)

手册中有一些标准模式,以及许多可以使用EDIT模式进行操作的示例。

相关内容

  • 没有找到相关文章

最新更新