2

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

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

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

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

4

3 回答 3

1

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

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

  • listcat命令,特别是

    listcat lvl(MYTEST) ofile(ddname)

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

  • 或者,您可以在 ISPF 下运行的 rexx 程序中使用ISPF 服务LMDINIT、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 编辑器中,您可以使用model命令获取所有 ISPF 命令的模板/信息:

 Command ====> Model LMDINIT 

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

于 2014-07-22T03:10:06.940 回答
0

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

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

上面的命令完美运行。

于 2014-07-22T08:17:43.343 回答
0

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

DELETE 'MYTEST.**' MASK

z/OS 2.1 的文档在这里

于 2018-11-02T18:52:53.020 回答