2011-09-23 63 views
0

如何運行主程序兩個子方案,如果兩者都與DB2 COBOL程序?名爲「Mainpgm1」解釋DB2的COBOL的執行過程中的步驟,如果兩者都DB2 -cobol程序

我的主程序,它調用子程序我命名爲「subpgm1」和「subpgm2」,這是一個調用的程序,我只首選靜態調用。

實際上,現在我正在使用一個名爲package的語句而不是一個計劃和一個成員,它們都在'db2bind'(綁定程序)以及一個名爲dsn的dbrmlib中。

的主要問題是什麼是影響了「db2bind」,而我綁定兩個DB2的COBOL程序的變化。

類似地,在 'DB2RUN'(運行程序)太。

回答

1

每個程序(或子程序)包含SQL需要被預處理以創建一個DBRM。然後將DBRM被綁定到 ,其由LOAD模塊在運行時訪問,以獲得正確的DB/2訪問爲它包含的SQL語句 路徑計劃。

你已經從一個程序中的所有SQL變成了幾個子程序。基本過程 保持不變 - 您需要一個PLAN來運行該程序。

DBA通常會建議如果您有幾個包含SQL的子程序,您可以爲其創建PACKAGES,然後將PACKAGES綁定到PLAN中。曾經是,現在兩個一個 步驟的過程是:

  • DBRM綁定到一個包
  • 綁定包成一個計劃

是什麼大不了的包?

假設您有50個包含SQL的子程序。如果您爲每個DBRM創建了 然後將所有50個綁定到PLAN中,那麼作爲一個單獨的操作,它將花費大量資源來構建PLAN,因爲每個程序中的每個SQL語句都需要分析 併爲其創建訪問路徑。當所有50個子程序都是新的 或已被更改時,這並不是那麼糟糕。然而,如果你有一個相對穩定的系統,並且想要改變1個子程序,你最終需要重新綁定所有50個DBRMS來創建PLAN - 即使50箇中的49個沒有改變,並且 最終會使用完全相同的訪問路徑。這不是一個很好的apporach。每次對其中的任何一個進行更改時,編制 所有50個子程序都是非常類似的。

但是,如果您爲每個子程序創建一個PACKAGE,那麼PACKAGE就是真正需要構建的工作。 它包含與其關聯的DBRM的所有訪問路徑。現在,如果您僅更改1個子程序,您只需要將單個DBRM重新綁定到PACKAGE集合中,然後重新組合計劃,就可以重新構建其PACKAGE。 但是,將一組PACKAGES(集合)綁定到PLAN 中比綁定系統中的所有DBRM要少得多。

一旦你有一個包含程序中使用的所有訪問路徑的PLAN,就使用它。如果正在執行的SQL來自子程序1或子程序2,則 無關緊要。只要您將PLAN 關聯到正在運行的LOAD,它應該都可以運行。

每個安裝都有自己的命名約定和標準,用於設置PACKAGES,COLLECTIONS和 PLANS。在進一步研究之前,您應該使用數據庫管理員查看這些信息。

這是在DB/2環境的一些背景資料,有關節目水面浮油: Developing your Application