Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 使用SORT/ICEMAN将可变长度数据集中的十六进制值替换为另一个十六进制值_Sorting_Mainframe_Jcl - Fatal编程技术网

Sorting 使用SORT/ICEMAN将可变长度数据集中的十六进制值替换为另一个十六进制值

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

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

非常感谢你的帮助。这是我需要的。