gpt4 book ai didi

split - 为什么 SPLIT 到属于同一 PDS 的多个成员会产生克隆成员?

转载 作者:行者123 更新时间:2023-12-03 07:53:33 27 4
gpt4 key购买 nike

我目前正在学习 JCL,并且正在使用 SORT 程序。作为练习,我想将一些输入记录拆分为属于同一 PDS 的多个成员。这是我的 JCL 代码:

//FAILJ    JOB
//STEP1 EXEC PGM=SORT
//SORTIN DD *
I
B
D
A
E
F
G
C
H
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//MEMA DD DSN=MY.PDS(MEMA),DISP=OLD
//MEMB DD DSN=MY.PDS(MEMB),DISP=OLD
//SYSIN DD *
SORT FIELDS=(1,1,CH,A)
OUTFIL FNAMES=(MEMA,MEMB),SPLIT

此代码生成两个名为 MY.PDS(MEMA)MY.PDS(MEMB) 的成员,其中包含相同的记录集,这对我来说是出乎意料的:

B
D
F
H

MY.PDS(MEMA) 的预期结果是:

A
C
E
G
I

我的问题不是“如何解决?”,而是为什么会出现这种行为以及它内部如何工作?我正在使用 Hercules 大型机模拟器。在真实的大型机上有什么不同吗?

最佳答案

PDS 成员并不完全像单独的文件。它们只是数据集的连续片段,按顺序写入,然后更新目录以指向构成刚刚写入的成员的记录。您可以将它们作为单独的文件并行读取,但是当您尝试并行写入新成员时,您最终会写入相同的起始位置,并且一个会覆盖另一个。

出于同样的原因,您无法将新记录附加到现有成员 - 您最终会按顺序覆盖下一个成员。您可以就地更新记录,但要添加记录,您只能在数据集末尾重写整个内容,在中间留下一个间隙,以便稍后压缩。 https://www.ibm.com/docs/en/zos/2.5.0?topic=pds-rewriting-member

但是!查看 PDSE(库)数据集类型。这确实允许您一次写入多个成员,并允许重用未使用的空间,因此您不必担心压缩旧成员。 https://www.ibm.com/docs/en/zos/2.5.0?topic=pdses-pdse-pds-differences

关于split - 为什么 SPLIT 到属于同一 PDS 的多个成员会产生克隆成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76570151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com