同步排序,File1 的未配对记录在 F2 文件中没有记录。我们可以用零替换这些特定列的空格吗?



SORT:

 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=(TTTTTT))        

输出是:*第二行第四列是与第二个文件不成对的空格,需要自动为0s。

 22680372            ,5102,         1,         1,000000
 22222222            ,5105,         2,          ,000002   

OUTPUT必须为:*第二行第四列为0或0000s,因为与第二个文件不成对,需要自动为0s。

 22680372            ,5102,         1,         1,000000
 22222222            ,5105,         2,         0,000002   

您需要一个条件,即IFTHEN。你不能在同一个INREC上有IFTHEN和BUILD,但你可以有多个IFTHEN,BUILD可以是IFTHEN的一部分。

IFTHEN=(WHEN=INIT表示应该对每个记录执行的操作(无条件)。

IFTHEN=(WHEN=)只有当条件为true时,才会执行逻辑表达式。

每个BUILD语句都会生成一个完整的新中间记录(介于输入和输出之间)。OVERLAY只影响指定位置的数据(假设没有记录的扩展名)。

您的条件是记录的第46个字节是空格。您已经使用了SFF(您是否尝试过其他建议,尤其是FS?),因此没有必要在编译前将值设置为零。

 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 IFTHEN=(WHEN=INIT,
                 BUILD=(1,36,
                        C',',
                        37,10,
                        C',',
                        27,10,SFF,
                         SUB,
                          37,10,SFF,
                         EDIT=(TTTTTT))),
       IFTHEN=(WHEN=(47,1,CH,EQ,C' '),
                OVERLAY=(46:C'0'))  

我并不是为了好玩而格式化这样的语句,而是为了让它们更容易理解和维护。

好吧,这个解决方案有点笨拙。您可以将INREC替换为,对于这种类型的数据,它显示了EDIT:的替代方案

INREC IFTHEN=(WHEN=INIT, 
                BUILD=(1,36, 
                       C',', 
                       37,10,FS,TO=FS,LENGTH=10,
                       C',', 
                       27,10,FS, 
                        SUB, 
                         37,10,FS, 
                        TO=FS,LENGTH=8)) 

这要自然得多,因为空格变成了零,前导空格完全没有条件,并且只引用REFORMAT记录中该字段的位置。

相关内容

  • 没有找到相关文章

最新更新