Sorting 使用SORT/ICEMAN将可变长度数据集中的十六进制值替换为另一个十六进制值
我有一个VB文件,十六进制值“0D25”可以在1到20之间的任何位置出现(21位置的值不应更改)。这需要替换为十六进制值“4040” 输入:Sorting 使用SORT/ICEMAN将可变长度数据集中的十六进制值替换为另一个十六进制值,sorting,mainframe,jcl,Sorting,Mainframe,Jcl,我有一个VB文件,十六进制值“0D25”可以在1到20之间的任何位置出现(21位置的值不应更改)。这需要替换为十六进制值“4040” 输入: ----+----1----+----2----+----3----+----4----+ 0000/12345678 566 @(#)@0000/12345678 566 FFFF6FFFFFFFF02FFF44B475BFFFF6FFFFFFFF02FFF02 0000112345678D5566005DBD50000112345678D55
----+----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 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)
非常感谢你的帮助。这是我需要的。