我想MF PS分成几个数据集。例如如果我有一个数据集方含600个区域经济共同体,我想这个分为6个文件,每个100个记录。是否有可能做到这一点使用JCL排序?
以下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有很多有用的例子和几个其他的方式来记录分裂出一个数据集
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数据集的记录的文件。
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
希望我让你清楚。要在问题的情况下找回进一步。
假设你不知道多少条记录的数据集,但你要到两个输出数据集之间尽可能均等分割记录。直到你用完的记录可以使用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