我正在尝试将输入文件的位置(50,10)上的数据复制到输出文件。 但我遇到了问题。 我的输入文件大小为100,所需数据从第50位到下10位。
我使用了以下选项,但它每次都会发出异常终止。 我把输出文件只作为10长度。我只需要10个字节。 但是abend说。 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)
SORT FIELDS=COPY
OUTREC FIELDS=(115,9,125,10)
--------------------------didn't worked-------------------------------
SORT FIELDS=COPY
BUILD=(50,10)
--------------------------didn't worked-------------------------------
INREC FIELDS=(50,10)
SORT FIELDS=(1,3,CH,A)
--------------------------没有用----------------- --------------
答案 0 :(得分:2)
我知道提及你很少接受或提供反馈是没有意义的,也不是那么多选民。
出于某种原因,您将其删除,但您发布的所有邮件都带有WER前缀和邮件编号。如果您查阅SyncSORT手册,您将找到所有记录的消息。
忘了那一刻。您已发布SORTOUT RECFM INCOMPATIBLE
。为什么继续记录长度? RECFM。 RECFM。您已经包含了显示SORTIN的RECFM的消息文本,以及显示SORTOUT的RECFM的消息文本。它们分别是VB和FB。如果你看一下手册中的信息,你会发现你没有做任何明确的事情来使它们与众不同。
你有两个选择。 VTOF或CONVERT。你可以在OUTREC(我相信)和OUTFIL(肯定)上使用它们。
OPTION COPY
OUTFIL VTOF,
BUILD=(50,10)
为什么你想尝试SORTing这个文件,我不知道,你应该知道,只是编写语法不起作用。
对于SORT,默认情况下,输出文件与输入的RECFM相同。可变长度记录必须始终包含RDW,1,4并且数据本身从位置5开始。
如果您需要一个不同RECFM的输出文件,那么您必须明确它(使用CONVERT,FTOV或VTOF)。
创建F记录时,没有RDW,所以你的BUILD =(50,10)是正确的格式(如果你输出四个字节,请记住,对于V记录,数据从第五个位置开始,所以你需要将四个添加到所有未考虑RDW的起始位置(如COBOL记录布局)。
当从F创建V而没有RDW时,FTOV / CONVERT将创建它。
使用V输入和V输出时,请始终指定(在BUILD语句的开头为1,4。