如何将输入文件的选定列复制到jcl排序的输出文件中

时间:2014-08-30 22:27:04

标签: sorting jcl syncsort

我正在尝试将输入文件的位置(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) 

--------------------------没有用----------------- --------------

1 个答案:

答案 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。