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



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

相关内容

  • 没有找到相关文章

最新更新