JCL排序划分大型机数据集

问题描述 投票:3回答:4

我想MF PS分成几个数据集。例如如果我有一个数据集方含600个区域经济共同体,我想这个分为6个文件,每个100个记录。是否有可能做到这一点使用JCL排序?

sorting mainframe jcl
4个回答
4
投票

以下JCL使用DFSORT跨3个输出数据集(OUT1,OUT2和OUT3)平分DD SOTRIN,做跨6附加在3个输出DD语句和到FNAMES语句添加他们。

//SPLIT EXEC PGM=ICEMAN  
//SYSOUT DD SYSOUT=*  
//SORTIN DD DSN=Y897797.INPUT1,DISP=OLD  
//OUT1 DD DSN=Y897797.SPLIT1,DISP=(NEW,CATLG),  
// SPACE=(CYL,(5,5)),UNIT=SYSDA  
//OUT2 DD DSN=Y897797.SPLIT2,DISP=(NEW,CATLG),  
// SPACE=(CYL,(5,5)),UNIT=SYSDA  
//OUT3 DD DSN=Y897797.SPLIT3,DISP=(NEW,CATLG),  
// SPACE=(CYL,(5,5)),UNIT=SYSDA  
//SYSIN DD *  
SORT FIELDS=(21,5,FS,A)  
OUTFIL FNAMES=(OUT1,OUT2,OUT3),SPLIT  
/*  

排序字段=(21,5,FS,A)是你想怎么排序sortint数据集,下面就是这是什么字段声明手段

21月初字段进行排序 场的5长度进行排序 FS浮动符号(数字签名) 一个升序

DFSORT Getting Started Manual Smart DFSORT Tricks有很多有用的例子和几个其他的方式来记录分裂出一个数据集


2
投票

SPLIT只是分裂,你可以用一些不相关联。

SPLITBY = N将指定的每个OUTFIL数据集之间的“旋转” N条记录。 SPLIT相同SPLITYBY = 1。

SPLIT1R = N将只执行一个“旋转”(n个记录将被写入到第一OUTFIL数据集,则n到第二OUTFIL并继续这样的,直到最后的OUTFIL数据集被使用,其中将包含任何剩余的记录的输入,没有不管有多少。

OUTFIL FILES = OUT 1是不允许的。

如果使用STATREC / ENDREC或INCLUDE /略去,OUTFIL SAVE可以用来建立未写入任何其它OUTFIL数据集的记录的文件。


1
投票
  • Deuian的排序卡将输入文件到输出文件同样。如果我们有例如3个输出文件,总输入记录除以3将每个输入文件的记录数。
  • COS的,我们可以在此基础上划分应该发生,如下指定计数。它含蓄地将输入文件到输出文件10000记录每个。说了例如,我们有40000条记录中输入文件,我们将其划分成3个输出文件,那么我们将在输出文件中得到10000 +三分之万记录。

OUTFIL FNAMES =(OUT1,OUT2,OUT3),SPLIT = 10000

  • 在简单地说,我们可以利用它,当我们没有对输出记录计数的任何约束。当我们有任何这样的标准,而下面的代码分裂然后帮助...

排序字段= COPY OUTFIL FILES = OUT1,ENDREC = 10000 OUTFIL FILES = 02,STARTREC = 10001,ENDREC = 20000 OUTFIL FILES = 03,STARTREC = 20001,ENDREC = 30000

  • 最后,如果我们有超过30000条记录中输入文件,我们没有指定哪些为这些记录做,所以SORT不会理会他们。也就是只有10000条记录将通过最后输出文件举行。

希望我让你清楚。要在问题的情况下找回进一步。


0
投票

假设你不知道多少条记录的数据集,但你要到两个输出数据集之间尽可能均等分割记录。直到你用完的记录可以使用OUTFIL的SPLIT参数让第一个记录到OUTPUT1,第二个记录到OUTPUT2,第三个记录到OUTPUT1,第四记录到OUTPUT2,等等。 split将记录在一个由FNAMES指定的数据集之间的时间。以下陈述分体式两种OUTFIL数据集之间的记录:OPTION COPY OUTFIL FNAMES =(OUTPUT1,OUTPUT2),SPLIT随着17点输入的记录,用于OUTPUT1产生的结果是:记录01记录03记录05记录07记录09记录11记录13记录15条17

类似地,OUTFIL的SPLITBY = n参数拆分纪录N个在由FNAMES指定的数据集之间的时间。以下陈述分割记录4在三个OUTFIL数据集之间的时间:OPTION COPY OUTFIL FNAMES =(OUT1,OUT2,OUT3),SPLITBY = 4

© www.soinside.com 2019 - 2024. All rights reserved.