如何仅将输入文件的选定列复制到jcl排序中的输出文件
Posted
技术标签:
【中文标题】如何仅将输入文件的选定列复制到jcl排序中的输出文件【英文标题】:How to copy only selected column of input file to output file in jcl sort 【发布时间】:2014-08-30 22:27:04 【问题描述】:我正在尝试将输入文件位置 (50,10) 的数据复制到输出文件, 但我遇到了问题。 我的输入文件大小为 100;接下来 10 个字节需要的数据来自第 50 个位置。
我使用了以下选项,但每个选项都会导致异常结束。
我只将输出文件的长度设为 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)
--------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------------
【问题讨论】:
【参考方案1】:我知道说你很少接受或提供反馈是毫无意义的,而且你也不是那么喜欢投票的人。
由于某种原因,您将它们切断了,但您发布的所有这些消息都带有 WER 前缀和消息编号。如果您查阅 SyncSORT 手册,您会发现所有记录的消息。
暂时忘记这一点。您已发布SORTOUT RECFM INCOMPATIBLE
。为什么要继续讨论记录长度? RECFM。 RECFM。您已包含显示 SORTIN 的 RECFM 的消息文本,以及显示 SORTOUT 的 RECFM 的消息文本。它们分别是VB和FB。如果您查看手册中的信息,您会发现您没有做任何明确的事情来使它们与众不同。
你有两个选择。 VTOF 或转换。您可以在 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 记录,数据从位置 5 开始,因此您需要向所有不考虑 RDW 的起始位置添加四个(如 COBOL 记录布局)。
当从 F 创建 V 时,没有 RDW,FTOV/CONVERT 将创建它。
对于 V 输入和 V 输出,始终在 BUILD 语句的开头指定 (1,4。
【讨论】:
对不起,先生好久不见。我只上网几次。肯定会更频繁地访问和参与。我曾尝试使用 FTOV,但我得到了 OUTREC RDW NOT INCLUDED,这又是因为文件类型不同。我将这两个文件都创建为固定文件,并且它与非常简单的 OPTION COPY OUTREC BUILD=(50,9) 配合得很好,但我仍然不明白为什么我们在获取固定文件中的 VB 文件列时遇到问题。这简直太离谱了。 @AgentMahone 我的错误:FTOV 是固定变量; VTOF 是可变到固定的。更新中。以上是关于如何仅将输入文件的选定列复制到jcl排序中的输出文件的主要内容,如果未能解决你的问题,请参考以下文章
如何仅将提交的文件名导出到 git 中的 txt 文件? [复制]
VBA 程序仅将选定的 csv 文件(从一个文件夹)导入到访问中的单个表中