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

问题描述 投票:3回答:1

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

mainframe zos
1个回答
7
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.