使用 SORT/ICEMAN 将可变长度数据集中的 HEX 值替换为另一个 HEX 值

Replace HEX value with another HEX value in variable-length dataset using SORT/ICEMAN

我有一个 VB 文件,十六进制值“0D25”可以出现在从 1 到 20 的任何位置(不应更改 21 位置的值)。这需要用十六进制值“4040”替换。

输入:

----+----1----+----2----+----3----+----4----+
0000/12345678  566  @(#)@0000/12345678  566  
FFFF6FFFFFFFF02FFF44B475BFFFF6FFFFFFFF02FFF02
0000112345678D5566005DBD50000112345678D5566D5

预期输出:

----+----1----+----2----+----3----+----4----+
0000/12345678  566  @(#)@0000/12345678  566  
FFFF6FFFFFFFF44FFF44B475BFFFF6FFFFFFFF02FFF02
000011234567800566005DBD50000112345678D5566D5

我在下面的控制卡上使用 SORT。

SORT FIELDS=COPY                                     
OUTREC FIELDS=(1,4,5,20,CHANGE=(20,X'0D25',X'4040'), 
                        NOMATCH=(5,20),              
               21)           

                    

CHANGE= 并不像您想象的那样工作。它在 指定位置进行查找。然后用替换字符或 NOMATCH= 字符 替换 [=11= 的第一个子参数指定的长度 ](在你的情况下是 20)。

FINDREP= 在每个位置搜索指定字符,并替换为替换字符。您使用 STARTPOS=ENDPOS= 关键字限制要检查的记录部分,resp.

在您的情况下,以下语句应该符合您的要求:

OUTREC FINDREP=(INOUT=(X'0D25',X'4040'),STARTPOS=5,ENDPOS=24)