我正试图将输入文件的位置(50,10)处的数据复制到输出文件,但我有问题。我的输入文件大小是100;所需的数据来自下一个10字节的第50个位置。
我使用了以下选项,但每个选项都会导致异常终止。我只将输出文件的长度设为10,因为我只需要10个字节。但是阿本德说。OUTREC RECORD LENGTH = 10
SORTIN : RECFM=VB ; LRECL= 100; BLKSIZE= 1000
SORTIN : DSNAME=MNV.TESTS.DF.CPR810S1.EZ2OP
OUTREC RECORD LENGTH = 10
SORTOUT RECFM INCOMPATIBLE
SORTOUT : RECFM=FB ; LRECL= ; BLKSIZE=
我使用了以下选项:
OUTREC FIELDS(50,10)
SORT FIELDS(1,4,CH,A)
--------didn't work------------
SORT FIELDS=COPY
OUTREC FIELDS=(115,9,125,10)
--------didn't work------------
SORT FIELDS=COPY
BUILD=(50,10)
--------didn't work------------
INREC FIELDS=(50,10)
SORT FIELDS=(1,3,CH,A)
--------didn't work------------
我知道提到你很少接受或提供反馈是毫无意义的,而且你也不是一个投票人。
出于某种原因,你切断了它们,但你发布的所有消息都带有WER前缀和消息编号。如果您查阅SyncSORT手册,您会发现所有消息都有文档记录。
暂时忘记这一点。您已发布SORTOUT RECFM INCOMPATIBLE
。为什么要继续谈论创纪录的长度?RECFM。RECFM。您已包含显示SORTIN RECFM的消息文本,以及显示SORTOUT RECFM的信息文本。它们分别是VB和FB。如果你看一下手册中的信息,你会发现你没有做任何明确的事情来让它们变得不同。
你有两个选择。VTOF或CONVERT。你可以在OUTREC(我相信)和OUTFIL(当然)上使用它们。
OPTION COPY
OUTFIL VTOF,
BUILD=(50,10)
我不知道你为什么要尝试对文件进行排序,你应该意识到,仅仅编语法是行不通的。
对于SORT,默认情况下,输出文件与输入文件是相同的RECFM。可变长度记录必须始终包含RDW,1,4,并且数据本身从位置5开始。
如果您需要不同RECFM的输出文件,那么您必须明确它(使用CONVERT、FTOV或VTOF)。
当创建F记录时,没有RDW,所以BUILD=(50,10)是正确的格式(如果您有四个字节,请记住,对于V记录,数据从第五个位置开始,所以您需要在所有不考虑RDW的起始位置添加四个(就像COBOL记录布局一样)。
当从F创建V时,没有RDW,FTOV/COVERT将创建它。
对于V输入和V输出,请始终在BUILD语句的开头指定(1,4。