如果两者都是db2 -cobol程序,请解释db2-cobol执行过程的步骤

时间:2011-09-23 14:06:18

标签: db2 call bind cobol precompile

如果两个子程序都是db2-cobol程序,如何从主程序运行两个子程序?

我的主程序名为'Mainpgm1',它调用我的子程序名为'subpgm1'和'subpgm2',它们是一个被调用的程序,我更喜欢静态调用。

实际上,我现在使用一个名为package的语句而不是一个计划和一个成员,都在'db2bind'(绑定程序)和一个具有dsn名称的dbrmlib中。

主要问题是,当我绑定db2-cobol程序时,'db2bind'中的更改会受到什么影响。

同样,在'DB2RUN'(运行程序)中也是如此。

1 个答案:

答案 0 :(得分:1)

需要预处理包含SQL的每个程序(或子程序)以创建DBRM。然后绑定DBRM 在运行时由LOAD模块访问的PLAN,以获得正确的DB / 2访问 它包含的SQL语句的路径。

您已经从一个程序中的所有SQL变为多个子程序。基本过程 保持不变 - 你需要一个PLAN来运行程序。

DBA经常建议,如果你有几个包含SQL的子程序 为他们创建PACKAGES,然后将PACKAGES绑定到PLAN。什么曾经一个人 步骤过程现在是两个:

  • 将DBRM绑定到包中
  • 将包装绑定到计划中

PACKAGES的重要性是什么?

假设您有50个包含SQL的子程序。如果你创建 每个DBRM然后将所有50个绑定到一个PLAN中,作为单个操作,它就会发生 因为每个程序中的每个SQL语句都需要,所以需要大量资源来构建PLAN 进行分析并访问为其创建的路径。当所有50个子程序都是新的时,这并不是那么糟糕 或者已经改变了。但是,如果你有一个相对稳定的系统,并想要改变你的1个子程序 最终重新绑定所有50个DBRMS来创建PLAN - 尽管50个中的49个没有改变和 最终会使用完全相同的访问路径。这不是一个非常好的apporach。它与编译类似 每次你对其中任何一个进行更改时,所有50个子程序。

但是,如果为每个子程序创建一个PACKAGE,则PACKAGE将构建真正的工作。 它包含其关联DBRM的所有访问路径。现在,如果您只更改1个子程序 只需要通过将单个DBRM重新绑定到PACKAGE集合然后重新绑定PLAN来重建其PACKAGE。 但是,将一组PACKAGES(集合)绑定到PLAN中 与绑定系统中的所有DBRM相比,资源密集程度要低得多。

一旦你有一个包含程序中使用的所有访问路径的PLAN,就可以使用它。没关系 如果正在执行的SQL来自子程序1或子程序2。只要您关联了PLAN 对于正在运行的LOAD,它应该全部解决。

每个安装都有自己的命名约定和标准,用于设置PACKAGES,COLLECTIONS和 计划。在进一步深入之前,您应该先与数据库管理员一起查看这些内容。

以下是有关DB / 2环境中程序准备的一些背景信息: Developing your Application