如何解决使用 SORT/ICEMAN 将 HEX 值替换为可变长度数据集中的另一个 HEX 值
我有一个 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=
字符完全按照长度指定为 CHANGE=
的第一个子参数 (20在你的情况下)。
FINDREP=
在每个位置搜索指定字符,并替换为替换字符。您可以使用 STARTPOS=
和 ENDPOS=
关键字分别限制要检查的记录部分。
在您的情况下,以下语句应满足您的要求:
OUTREC FINDREP=(INOUT=(X'0D25',X'4040'),STARTPOS=5,ENDPOS=24)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。