看起来好像您正试图通过指定 DISP=MOD 来更改数据集的属性。MOD 的文档化目的是表明数据集存在并且记录要添加到它的末尾,或者要创建一个新的数据集。
但是,它可用于更改数据集的属性。我建议您需要小心执行此操作,因为您很容易损坏数据集。例如,为现有 PS 更改 DCB 可能是合理的,但如果该 PS 数据已经包含数据,您可能会损坏它。我没有尝试过,但我相信你可以增加空间,只要你不超过 16 个范围。我相信您甚至可以将PS再次更改为PDS,不要指望能够再次看到任何数据。
我认为这样做的要点是不推荐。与其冒风险,不如使用您的工作使用 LIKE 复制数据集并覆盖您想要更改的内容。然后,当您高兴地删除旧数据集并将新数据集重命名为旧名称时。
以下示例是从内存中完成的,因此它们可能存在轻微的语法错误。您需要指定 SPACE 但删除您不需要“修复”的任何其他参数。
例如。对于 PS
//FIXPS EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=XXXXXX.CREATE.GDG,DISP=SHR
//SYSUT2 DD DSN=XXXXXX.CREATE.GDG.NEW,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(TRK,(10,10,0),RLSE),UNIT=SYSDA,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
// LIKE=XXXXXX.CREATE.GDG
例如。用于 PDS
//FIXPDS EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=XXXXXX.CREATE.GDG,DISP=SHR
//SYSUT2 DD DSN=XXXXXX.CREATE.GDG.NEW,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(TRK,(10,10,0),RLSE),UNIT=SYSDA,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
// LIKE=XXXXXX.CREATE.GDG
//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(30,30),RLSE)
//SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(30,30),RLSE)
//SYSIN DD *
C I=SYSUT1,O=SYSUT2
/*
有关详细信息,请参阅 JCL 参考手册http://publibz.boulder.ibm.com/epubs/pdf/iea2b6b0.pdf第 12 章中的 DISP 参数