是否可以使用通配符删除 z/OS 上的数据集

Posted

技术标签:

【中文标题】是否可以使用通配符删除 z/OS 上的数据集【英文标题】:Is it possible to use wild characters to delete dataset on z/OS 【发布时间】:2014-07-22 02:35:24 【问题描述】:

我想删除大量数据集名称为 MYTEST.** 的临时 PS 数据集,但仍然找不到处理任务的简单方法。 我的意思是使用下面的 Shell 命令来删除它们

  cat "//'dataset.list'"| xargs -I '' tsocmd "delete ''"

但是,首先我必须将数据集列表保存到 PS 数据集或 Unix 文件中。在 Unix 中,我们可以将 ls 命令的输出重定向到文本文件:“ls MYTEST.* > dslist”,但在 TSO 或 ISPF 面板上,似乎没有简单的命令可以做到这一点。

有人对此有任何线索吗?您的评论将不胜感激。

【问题讨论】:

pic.dhe.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/…。如果您使用单班机,则除非您这样做,否则您没有发生过的事情的记录。无论如何,而不是更新问题,您可以将其作为答案发布,然后在可能的情况下接受它吗?其他人更容易考虑使用它。 已接受建议。我刚刚发布了自己的答案。 【参考方案1】:

Rexx ISPF 选项可能是最简单的,将来可以使用,但选项包括:

使用 ispf 3.4 中的 save 命令保存到文件,然后对 save 命令创建的文件使用 rexx 程序

listcat 命令,特别是

listcat lvl(MYTEST) ofile(ddname)

然后编写一个 rexx 程序来进行实际的删除

或者,您可以在 ISPF 下运行的 rexx 程序中使用 ISPF servicesLMDINIT、LMDLISTY 和 LMDFREE,即

/* Rexx ispf 程序处理数据集 */ 地址 ispexec “LMDINIT LISTID(lidv)级别(MYTEST)” "LMDLIST LISTID("lidv") OPTION(list) dataset(dsvar) stats(yes)" 当 rc = 0 时做 /* 删除或其他 */ 结尾 “LMDFREE LISTID(“lidv”)”

对于所有这些方法,您需要完全限定第一个高级限定符。


了解 Rexx / ISPF 未来将为您提供哪些服务。在 ISPF Editor 中,您可以使用 model 命令获取所有 ISPF 命令的模板/信息:

 Command ====> Model LMDINIT 

将为 lmdinit 命令添加一个模板。有 rexx、cobol、pl1、ISPF-panels、ISPF-skeleton 消息等模板。

【讨论】:

【参考方案2】:

感谢布鲁斯的全面回答。根据布鲁斯的提示,我刚刚制定了一个单行的Shell命令,如下所示:

 tsocmd "listcat lvl(MYTEST) " | grep -E "MYTEST(\..+)+" | cut -d' ' -f3 | xargs -I '' tsocmd "delete ''"

以上命令完美运行。

【讨论】:

【参考方案3】:

更新 - IDCAMS DELETE 命令有一段时间的 MASK 操作数。你像这样使用它:

DELETE 'MYTEST.**' MASK

z/OS 2.1 的文档是 here。

【讨论】:

以上是关于是否可以使用通配符删除 z/OS 上的数据集的主要内容,如果未能解决你的问题,请参考以下文章

从 z/OS 上的 C 语言可执行文件中删除符号信息

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

IBM z/os 上的 teradata xml 服务

在 Z/OS 上的 db2 的 JDBC URL 中设置默认表空间?

z/OS ftp:550 无法为 STOR 命令创建数据集 E043156.UNIX.USERLIB.SOME

我没有在环境 z/OS unix shell 上看到数据集