Можно ли использовать дикие символы для удаления набора данных в z/OS

Я хочу удалить много временных наборов данных PS с именем набора данных, таких как MYTEST.**, но все еще не могу найти простой способ справиться с этой задачей.
Я имел в виду использовать команду Shell ниже, чтобы удалить их

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

Однако сначала я должен сохранить список наборов данных в набор данных PS или файл Unix. В Unix мы можем перенаправить вывод команды ls в текстовый файл: "ls MYTEST.* > Dslist", но на панели TSO или ISPF, похоже, не простая команда для этого.

Кто-нибудь имеет какое-либо представление об этом? Ваш комментарий будет оценен.

4 ответа

Решение

Опция Rexx ISPF, вероятно, самая простая и может быть использована в будущем, но она включает в себя:

  • Используйте команду save в ispf 3.4 для сохранения в файл, затем используйте программу rexx для файла, созданного командой save

  • команда listcat, в частности

    listcat lvl(MYTEST) ofile(ddname)

    затем напишите программу rexx для фактического удаления

  • В качестве альтернативы вы можете использовать сервисы ISPF LMDINIT, LMDLISTY & LMDFREE в программе rexx, работающей под ISPF, т.е.

       / * Rexx ispf программа для обработки наборов данных */
       Адрес ispexec 
       "LMDINIT LISTID(lidv)  LEVEL(MYTEST)"
       "LMDLIST LISTID("lidv") ОПЦИЯ (список) набор данных (dsvar) stats(да)"
       делай пока rc = 0
          /* Удалить или что-то еще */
       конец
       "LMDFREE LISTID(" Лидв ")"

Для всех этих методов вам необходимо полностью квалифицировать первый квалификатор высокого уровня.


Узнайте, что Rexx / ISPF послужит вам в будущем. В редакторе ISPF вы можете использовать команду модели для получения шаблонов / информации для всех команд ISPF:

 Command ====> Model LMDINIT 

добавит шаблон для команды lmdinit. Существуют шаблоны для сообщений rexx, cobol, pl1, ISPF-панелей, ISPF-скелетов и т. Д.

Обновление. У команды IDCAMS DELETE некоторое время был операнд MASK. Вы используете это как:

DELETE 'MYTEST.**' MASK

Документация для z/OS 2.1 находится здесь.

Вы можете использовать утилиту ZOAU drm с подстановочными знаками. Он будет делать именно то, что вы хотите.

      drm 'test01.*.txt'
drm 'test??.proj23.*'
drm -f ibmuser.my.jcl
drm 'ibmuser.proj22.*' 'ibmuser.proj23.*'

Спасибо Брюсу за исчерпывающий ответ. Согласно советам Брюса, я только что разработал однострочную команду оболочки, как показано ниже:

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

Выше команда работает отлично.

Другие вопросы по тегам