是否可以使用通配符删除 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 上的 db2 的 JDBC URL 中设置默认表空间?