例如,我有以下可变长度(RECFM=VB)的输入文件:
AAAAABBBBBCCCCCDDDDDEEEEEFFFFF
AAAAABBBBBCCCCCDDDDDEEEEEFFFFF
AAAAABBBBBCCCCCDDDDDEEEEEFFFFF
我试图通过跳过 A 列来获取如下输出文件。有没有办法可以使用 DFSORT 做到这一点?(outrec?!)
BBBBBCCCCCDDDDDEEEEEFFFFF
BBBBBCCCCCDDDDDEEEEEFFFFF
当然
OPTION COPY
INREC BUILD=(1,4,6)
1,4 是 RDW(记录描述符字),对于可变长度记录,在 BUILD 中始终是必需的。“6”表示“从起始位置 6 到变量记录的结尾”。DFSORT 将相应地调整 RDW 中的记录长度,并且您在 SORTOUT 上的输出应该是您想要的。
它与 OUTREC 而不是 INREC 相同,但除非需要 OUTREC(在 SORT 之后并且处理依赖于它),否则我使用 INREC。
使用 OUTFIL 也可以,但同样适用(对我而言)。
编辑:
为了进行比较,这里删除了固定长度记录的前五个。我将使用 80 的 LRECL:
OPTION COPY
INREC BUILD=(6,75,5X)
5X 将在 75 字节数据后放置 5 个空格,如果 LRECL 保持不变,则将其关闭。
DFSORT 手册可从 IBM 在线获得,包括一个很好的“入门”。手册中有很多例子。对于更复杂的操作,请参阅 IBM 的“Smart DFSORT Tricks”出版物。
编辑:
从您的评论中,从这里开始阅读:
和这里:
这些字段在讨论中是“固定的”,不要将其与固定长度的记录混淆。固定长度字段是您具有起始位置和长度的地方。可变字段是您只有开始位置(在可变长度记录上)或定义 PARSEd 字段时的位置。
该文档也提供 PDF 格式,ice1cg60.pdf 是当前文档,但值得找到与您的 DFSORT 版本/级别相匹配的文档。