使用 DFSORT 删除列
Posted
技术标签:
【中文标题】使用 DFSORT 删除列【英文标题】:Remove Column with DFSORT 【发布时间】:2013-04-08 11:25:34 【问题描述】:例如,我有以下可变长度的输入文件 (RECFM=VB):
AAAAABBBBBCCCCCDDDDDEEEEEFFFFF
AAAAABBBBBCCCCCDDDDDEEEEEFFFFF
AAAAABBBBBCCCCCDDDDDEEEEEFFFFF
我试图通过跳过 A 列来获取如下输出文件。有没有办法可以使用 DFSORT 做到这一点? (outrec ?!)
BBBBBCCCCCDDDDDEEEEEFFFFF
BBBBBCCCCCDDDDDEEEEEFFFFF
【问题讨论】:
【参考方案1】:当然
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”出版物。
编辑:
根据您的评论,从这里开始阅读:
http://publib.boulder.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.iceg200%2Fice1cg6025.htm
这里:
在讨论中字段是“固定的”,不要将其与固定长度的记录混淆。固定长度字段是您具有起始位置和长度的地方。可变字段是您只有开始位置(在可变长度记录上)或定义 PARSEd 字段时的位置。
该文档也提供 PDF 格式,ice1cg60.pdf 是当前版本,但值得查找与您的 DFSORT 版本/级别匹配的文件。
【讨论】:
它确实对我有用。我已经检查了早期的 IBM 手册,但我找不到 VB 文件的那种示例。非常感谢!!以上是关于使用 DFSORT 删除列的主要内容,如果未能解决你的问题,请参考以下文章