使用 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)
我有一个 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)