仅获取记录 nr。 x 通过在 JCL 中使用 dfsort
Posted
技术标签:
【中文标题】仅获取记录 nr。 x 通过在 JCL 中使用 dfsort【英文标题】:Get only record nr. x by using dfsort in JCL 【发布时间】:2015-07-13 09:29:18 【问题描述】:我有一个包含多行数据的数据集,我必须对其中一些行做一些事情(不是全部,并且没有逻辑可以将它们挑选出来),我有一个行号列表被选中,而且列表太大,无法手动复制它们。
那么有谁知道一个 dfsort 命令,例如可以从这些数据中获取记录:
parameter10000500006
parameter20000100002
parameter30000400007
parameter40000000006
parameter50000100001
parameter60000500012
parameter70000700013
并且只会返回第二个和第三个,例如:
parameter20000100002
parameter30000400007
【问题讨论】:
我发现了类似 startrec 和 endrec 但不知道如何使用它 【参考方案1】:如果您想一次执行此操作,最好使用 OPTION SKIPREC=1,STOPAFT=2:
OPTION SKIPREC=1,STOPAFT=2,COPY
在您的回答中,您只需显示一个简单的 OUTFIL 语句,从第一列开始。所有 SORT 语句必须在第一列之后开始。必须始终存在显式或隐式 SORT、MERGE 或 COPY 操作,否则您的步骤将失败。
可以将 COPY 操作指定为 OPTION COPY
或 SORT FIELDS=COPY
或 MERGE FIELDS=COPY
。
最好在 OPTION 语句中执行此操作的原因是数据会尽早删除/包含。
例如,如果您有一个 SORT(非复制)操作,那么您的 OUTFIL 解决方案仍然可以工作,但您会在最终排除之前对整个文件进行排序。
当 SKIPREC 和 STOPAFT 不能用于您的任务时,通常会看到 STARTREC 和 ENDREC,因为发生了 SORT 或 MERGE(因此您不知道哪个将是新数据中的第一条记录)。
在大型机数据集上,我们没有“行”数据,我们有记录。如果您查阅有关如何处理“行”的文档,您会感到困惑,因为在 DB2 之外,该术语至多没有任何意义,或者在最坏的情况下也没有您认为的含义。
【讨论】:
是的,你是对的,在那之前我有一个排序步骤,我会编辑我的答案 @JeremyC 你想同时为多个选择执行此操作吗? 这不是必需的,我们有一个可以多次运行此 jcl 的 rexx 脚本,它只需要随着时间的推移(我们有几个星期)一次完成会花费太长时间,我们会午餐时间每天大约 10 次,此时系统不太忙 我想知道你是否可以看看这个问题:***.com/questions/31381336/… 你似乎是现在(即在线)唯一了解 dfsort 的人,也许你可以帮助我用这个【参考方案2】:想通了,显然您需要将输出文件与 STARTREC 和 ENDREC 结合使用,所以现在我可以为我需要的每条记录创建一堆输出文件。
对于记录 2 和 3,它可能看起来有点像这样:
//SYSIN DD *
SORT FIELDS=(1,1,CH,A)
OUTFIL STARTREC=2,ENDREC=3
/*
【讨论】:
所以你想要第二个和第三个记录被排序后?请在你的问题中说清楚好吗?以上是关于仅获取记录 nr。 x 通过在 JCL 中使用 dfsort的主要内容,如果未能解决你的问题,请参考以下文章