Объясните шаги для процесса выполнения db2-cobol, если оба являются программами db2-cobol - PullRequest
0 голосов
/ 23 сентября 2011

Как запустить две подпрограммы из основной программы, если обе являются программами db2-cobol?

Моя основная программа с именем 'Mainpgm1', которая вызывает мои подпрограммы с именами 'subpgm1' и 'subpgm2', которыевызываемых программ, и я предпочел только статический вызов.

На самом деле, теперь я использую оператор с именем package вместо плана и одного члена, оба в db2bind (программе bind) вместе с одним dbrmlib, который имеетимя dsn.

Основная проблема заключается в том, на что влияют изменения в db2bind, пока я связываю обе программы db2-cobol.

Точно так же и в 'DB2RUN' (запустить программу).

1 Ответ

1 голос
/ 23 сентября 2011

Каждая программа (или подпрограмма), содержащая SQL, должна быть предварительно обработана для создания DBRM.Затем DBRM связывается с PLAN, к которому модуль LOAD обращается во время выполнения, чтобы получить правильные пути доступа DB / 2 для содержащихся в нем операторов SQL.

Вы отказались от того, чтобы весь ваш SQL был водна программа для нескольких подпрограмм.Основной процесс остается тем же - вам нужен ПЛАН для запуска программы.

Администраторы баз данных часто советуют, что если у вас есть несколько подпрограмм, содержащих SQL, вы создаете для них ПАКЕТЫ, а затем связываете ПАКЕТЫ в ПЛАН.То, что раньше было одношаговым процессом, теперь два:

  • Связать DBRM в ПАКЕТ
  • Связать ПАКЕТЫ в ПЛАН

Что такоев чем дело с ПАКЕТАМИ?

Предположим, у вас есть 50 подпрограмм, содержащих SQL.Если вы создадите DBRM для каждого из них, а затем свяжете все 50 в PLAN в виде одной операции, потребуется много ресурсов для построения PLAN, потому что каждый оператор SQL в каждой программе необходимо анализировать и получать доступ к путям.создан для них.Это не так плохо, когда все 50 подпрограмм являются новыми или были изменены.Тем не менее, если у вас относительно стабильная система и вы хотите изменить 1 подпрограмму, вы в конечном итоге повторно привязываете все 50 СУБД для создания ПЛАНА - даже если 49 из 50 не изменились и в итоге будут использовать точно такие же пути доступа.Это не очень хорошее приложение.Подобно тому, как компилировать все 50 подпрограмм каждый раз, когда вы вносите изменения в любую из них.

Однако, если вы создаете PACKAGE для каждой подпрограммы, PACKAGE - это то, что требует настоящей работыстроить.Он содержит все пути доступа для связанной с ним DBRM.Теперь, если вы измените только одну подпрограмму, вам нужно всего лишь перестроить ее PACKAGE, повторно связав один DBRM в коллекцию PACKAGE, а затем повторно связать ПЛАН.Однако привязка набора ПАКЕТОВ (коллекции) к ПЛАНУ требует гораздо меньше ресурсов, чем привязка всех СУБД в системе.

Как только у вас есть ПЛАН, содержащий все пути доступа, используемые в вашей программеПросто используйте это.Не имеет значения, выполняется ли SQL из подпрограммы 1 или подпрограммы 2.Если вы связали ПЛАН с загружаемой нагрузкой, все должно работать.

Каждая установка имеет свои собственные соглашения об именах и стандарты для установки ПАКЕТОВ, КОЛЛЕКЦИЙ и ПЛАНОВ.Прежде чем идти дальше, вы должны проверить их у администратора базы данных.

Вот некоторая справочная информация, касающаяся подготовки программы в среде DB / 2: Разработка приложения

...