我有一个数据集,我需要根据唯一的 ID 将其分成 10 个较小的块(数据集)。这些块不应具有相似的长度。例如,ID 1 到 200 应该在 chunk1 中,ID 201 到 240 应该在 chunk2 中,等等。 我搜索了很多并发现了以下一段对我不起作用的代码
//S1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=... input file
//OUT1 DD DSN=... output file1
//OUT2 DD DSN=... output file2
//SYSIN DD *
OPTION COPY
OUTFIL FNAMES=OUT1,INCLUDE=(1,6,PD,LE,200)
FNAMES=OUT2,INCLUDE=(1,6,ch,LE,250)
请帮助我...
索拉雅,
使用以下 DFSORT JCL,它展示了如何将输入文件拆分为多个输出文件。
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
01
10
99
225
151
240
200
201
//OUT1 DD SYSOUT=*
//OUT2 DD SYSOUT=*
//SYSIN DD *
OPTION COPY
OUTFIL FNAMES=OUT1,INCLUDE=(1,3,UFF,LE,200)
OUTFIL FNAMES=OUT2,INCLUDE=(1,3,UFF,GT,200,AND,1,3,UFF,LE,240)
/*
OUT1 文件的输出将是
01
10
99
151
200
OUT2 文件的输出将是
201
225
240
这类似于尝试使用 JCL 脚本根据指定的标准对数据集进行排序和划分为更小的部分。让我向您推荐这段代码:
//S1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=... input file
//OUT1 DD DSN=... output file1
//OUT2 DD DSN=... output file2
//SYSIN DD *
SORT FIELDS=(1,6,PD,A)
OUTFIL FNAMES=OUT1,INCLUDE=(1,6,PD,LE,200)
OUTFIL FNAMES=OUT2,INCLUDE=(1,6,PD,GT,200)
/*
INCLUDE
语句的OUTFIL
参数中的比较值刚刚更新。(
替换为 (
,将 )
替换为 )
。希望这对您有帮助。