Есть ли способ выполнить инструкции free Package с использованием REXX?

#sql #mainframe #jcl #rexx #db2-zos

#sql #мэйнфрейм #jcl #rexx #db2-zos

Вопрос:

Я могу написать код REXX, который генерирует инструкции FREE PACKAGE. После генерации я использую этот файл в JCL для выполнения инструкций FREE PACKAGE. Есть ли способ выполнить инструкции FREE PACKAGE напрямую через rexx? Я попытался выполнить его как обычный запрос в REXX, но он выдает ошибку -104. Я считаю, что мне не следует пытаться выполнить его как запрос. Любая помощь будет оценена.

Комментарии:

1. Конечно. Все, что вам нужно сделать, это выделить все требуемые наборы данных и вызвать программу, которая будет обрабатывать эти инструкции. Однако, если система DB2 не находится в том же LPAR, что и вы, или ваш онлайн-сеанс не имеет полномочий, он завершится неудачей. Поскольку вы не указали код, который вы использовали, чтобы попытаться выполнить эти инструкции, и вы не предоставили полезную отладочную информацию, такую как номер сообщения об ошибке или текст, дальнейшая помощь не может быть предоставлена. И он не «выдал» ошибку -104, он «выдал» код -104. Вещи не «выбрасываются» на мэйнфрейм за пределами USS.

2. Самым простым способом было бы отправить ваше пакетное задание из вашей программы Rexx. «ОТПРАВИТЬ mypds (myjob)»

Ответ №1:

Поскольку, похоже, у вас есть SQL, работающий с REXX, вы можете использовать SYSPROC.ADMIN_COMMAND_DSN для выполнения операций ПРИВЯЗКИ / ПОВТОРНОЙ ПРИВЯЗКИ / ОСВОБОЖДЕНИЯ. Вы могли бы вызвать это из REXX.

Вот пример ВЫЗОВА, который я использовал через процессор командной строки Db2 для повторной привязки всех пакетов в коллекции: ВЫЗОВИТЕ SYSPROC .ADMIN_COMMAND_DSN (‘REBIND PACKAGE (DSNESPCS..())’,?) #

Итак, вы бы заменили ‘REBIND PACKAGE …’ своими командами BIND / REBIND / FREE.

Существуют административные процедуры, поставляемые с Db2 для z / OS, позволяющие запускать команды и многие другие административные операции: https://www.ibm.com/support/knowledgecenter/en/SSEPEK_12.0.0/sqlref/src/tpc/db2z_suppliedstoredprocedures.html

Как упоминалось выше, не запуск на одном и том же LPAR может быть проблемой. Альтернативным подходом, если вам нужно выполнять команды удаленно, было бы создать Db2 для собственных служб Rest для z / OS для хранимых процедур Db2. Таким образом, другим жизнеспособным вариантом было бы создание службы rest в SYSPROC.ADMIN_COMMAND_DSN, передайте параметр bind и выполните BIND / REBIND / FREE через REST API. Затем вы можете запускать команды удаленно, используя Java, Python, Node и т. Д.