2015-07-13 145 views
0

我有一个数据集有多行数据,我必须做一些这些行(不是所有的,并没有逻辑能够挑出它们),我有一个需要选择的流水号列表,以及列表太大以便手动复制它们。获取记录nr。通过使用JCL中的dfsort

因此,没有人知道一个DFSORT命令例如可以从该位数据的获取记录:

parameter10000500006 
parameter20000100002 
parameter30000400007 
parameter40000000006 
parameter50000100001 
parameter60000500012 
parameter70000700013 

而且只会返回我这个样子第二和第三例如:

parameter20000100002 
parameter30000400007 
+0

我发现了一些像startrec和endrec但不知道如何使用 –

回答

0

把它弄明白,你需要结合STARTREC和ENDREC使用outfile,现在我可以为每个需要的记录创建一堆outfiles。

对于记录2和3它可能看起来有点像这样:

//SYSIN DD * 
SORT FIELDS=(1,1,CH,A) 
OUTFIL STARTREC=2,ENDREC=3 
/* 
+0

所以你想第二和第三个记录后,他们已经被排序?你能在你的问题中说清楚吗? –

0

如果你想这样做,一次一个,这将是更好地使用OPTION SKIPREC = 1,STOPAFT = 2:

OPTION SKIPREC=1,STOPAFT=2,COPY 

在你的答案中,你只是显示一个简单的OUTFIL语句,从第一列开始。所有SORT语句必须在第一列之后开始。必须始终显式或隐式地执行SORT,MERGE或COPY操作,否则您的步骤将失败。

COPY操作可以指定为OPTION COPYSORT FIELDS=COPYMERGE FIELDS=COPY

在OPTION语句中更好的原因是数据在最早的可能点被删除/包含。

例如,如果你有一个SORT(非复制)操作,那么你的OUTFIL解决方案仍然可以工作,但是在你进行最终的排除之前,你应该将整个文件排序。

当SKIPREC和STOPAFT不能用于您的任务时,通常会看到STARTREC和ENDREC,因为发生了SORT或MERGE(因此您不知道哪些将成为新数据中的第一条记录)。

关于大型机数据集,我们没有“行”数据,我们有记录。如果您参考关于如何处理“行”的文档,将会使您感到困惑,因为在DB2之外,这个术语最多不代表什么意思,或者不是您认为最糟糕的意思。

+0

是的,你是对的,我有一个排序步骤之前,我会编辑我的答案 –

+0

@JeremyC你想这样做多于一个选择一次吗? –

+0

这并不是真的必要,我们有一个可以多次运行这个jcl的rexx脚本,它只需要一次性完成(我们有几个星期)会花费太长时间,我们每天在午餐时间做大约10次系统不太忙 –