Можно ли использовать дикие символы для удаления набора данных в 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 '{}'"
Выше команда работает отлично.