有没有一种方法可以删除z/OS USS中的PDS成员,而不需要得到整个PDS的ENQ?我试过"tso delete",但它抱怨数据集争用。
发布于 2017-12-22 02:58:35
一种方法是使用ISPF delete service...it通常将数据集分配为共享的,使用它自己的内部ENQ来序列化删除。参见here。在UNIX服务中,您可以创建一个REXX脚本,USS shell可以运行该脚本,并且它可以调用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 )进行序列化,该ENQ为您提供了比使用DISP=OLD...DISP=OLD分配更细粒度的序列化。只要数据集被分配,ISPF服务就会一直存在,而SPFEDIT ENQ只存在执行删除所需的一小部分时间。
https://stackoverflow.com/questions/47930518
复制相似问题