删除z/OS USS中的PDS成员?

Oh *_* On 3 mainframe zos

有没有办法删除z/OS USS中的PDS成员而不在整个PDS上获得ENQ?我试过"删除",但它抱怨数据集争用.

Val*_*e R 7

一种方法是使用ISPF删除服务...它通常将数据集分配为共享,使用它自己的内部ENQ来序列化删除.看到这里.在UNIX服务中,您可以创建USS shell可以运行的REXX脚本,并且可以像在链接中看到的那样调用ISPEXEC之类的东西.

您也可以使用IDCAMS.首先分配PDS数据集 - 类似于alloc fi(pds) dataset(dsn) shr.然后,IDCAMS DELETE 'pds(member)' FILE(pds)也可以做你想要的.

还有很多其他方法 - 关键是通常使用DISP = SHR分配PDS,打开输出的PDS,然后使用DELETE选项调用STOW以删除所需的成员.

序列化很重要 - 请记住,在共享分配下打开输出PDS可能会导致损坏,具体取决于您正在执行的操作.ISPF服务使用ENQ(SPFEDIT)进行序列化,使用比使用DISP = OLD分配更细粒度的序列化...只要数据集被分配,DISP = OLD就会持续存在,而SPFEDIT ENQ仅用于分数第二,执行DELETE.