使用 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 删除列的主要内容,如果未能解决你的问题,请参考以下文章

使用 REXX 执行 DFSORT

使用大型机中的 DFSORT 实用程序进行乘法除法

使用 DFSORT 进行大型机编程

仅获取记录 nr。 x 通过在 JCL 中使用 dfsort

DFSORT

使用 awk 删除或删除列