微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 举报,一经查实,本站将立刻删除。