10K+ 瀏覽量
要準備一個可執行的 COBOL-DB2 程式,我們需要經歷幾個步驟。這些步驟包括預編譯 - 編譯 - 繫結 - 連結編輯。預編譯使用 DSNHPC 實用程式完成。在預編譯步驟中,源程式中存在的所有 SQL 語句都將被相應的 COBOL 呼叫替換。所有 SQL 語句都放在一個稱為資料庫資源模組 (DBRM) 的物件中,並傳遞到 BIND 步驟。修改後的原始碼被傳遞到編譯步驟。在編譯步驟中,修改後的原始碼被編譯,並生成目標模組。… 閱讀更多
271 瀏覽量
在每次執行 COBOL-DB2 程式時,都會比較載入模組和包/DBRM 的時間戳。如果程式中變數的長度發生變化(並且沒有 SQL 更改),並且已對其進行編譯,則載入模組將具有新生成的時間戳,而如果未執行 BIND,則包/DBRM 將具有舊的時間戳。執行此程式時,呼叫此程式的 JCL 步驟將因 SQL 錯誤程式碼 -818 而失敗。如果我們有一個 COBOL-DB2 程式,其中 SQL 語句永遠不會改變… 閱讀更多
659 瀏覽量
當 COBOL-DB2 原始碼作為輸入在預編譯階段提供時,我們將得到兩個重要的元件——DBRM 和修改後的原始碼。在修改後的原始碼中,SQL 語句被 COBOL 呼叫替換,而 DBRM 包含 COBOL-DB2 程式中存在的所有 SQL 語句。預編譯器在 DBRM 和修改後的原始碼中都插入時間戳。如果 DBRM 直接繫結到計劃,則系統在執行 COBOL-DB2 程式時會比較 DBRM 和載入模組的時間戳。如果時間戳不匹配,則 JCL 步驟… 閱讀更多
124 瀏覽量
程式將成功執行(除非程式中存在邏輯錯誤),因為時間戳是在預編譯期間插入到 DBRM 中的,並且預編譯是在編譯步驟之前完成的。因此,DBRM 和載入模組將具有相同的時間戳。插入到 DBRM 中的時間戳還會進一步傳遞到包中。因此,如果我們使用 DBRM-包-計劃組合,在這種情況下,程式也將成功執行,因為整個過程中時間戳保持一致。
698 瀏覽量
當任何 COBOL-DB2 程式進行預編譯時,當前時間戳將插入到 DBRM 中,如果 DBRM 繫結到包,則時間戳將進一步複製到包中。類似地,時間戳也將在編譯過程中插入到載入模組中。當執行任何 COBOL-DB2 程式時,系統會將載入模組的時間戳與 DBRM/包中的時間戳匹配,如果發生不匹配,則程式將失敗。如果 DBRM 直接繫結到計劃,即使只有子程式經過… 閱讀更多
3K+ 瀏覽量
DBRM 可以直接繫結到計劃,或者我們也可以先將 DBRM 繫結到包中,然後將該包繫結到計劃中。如果 DBRM 直接繫結到計劃,如果原始碼發生某些更改,則必須生成新的 DBRM,然後必須重新繫結整個計劃。由於計劃包含多個 DBRM,因此係統將再次處理所有 DBRM 以繫結該計劃(即使其他 DBRM 沒有發生任何更改)。此過程需要大量資源,例如記憶體、處理器和寶貴的… 閱讀更多
589 瀏覽量
DBRM 是從原始碼預編譯生成的 DB2 物件。它包含原始碼中的所有 SQL 語句/查詢。由於其格式,DBRM 無法直接執行,因此必須先將其繫結到計劃中。可以將多個 DBRM 繫結到單個計劃中。每當原始碼發生更改時,都必須使用更改後的 SQL 語句/查詢重新生成相應的 DBRM。然後必須重新繫結包含舊 DBRM 的整個計劃。使用以下 JCL 步驟,我們可以將 DBRM 直接繫結到… 閱讀更多
4K+ 瀏覽量
預編譯是將 COBOL-DB2 程式中使用的 SQL 語句替換為適當的 COBOL 呼叫的過程。在實際編譯之前需要進行預編譯,因為 COBOL 編譯器無法識別 DB2 SQL 語句,並且會因這些語句而丟擲錯誤。DB2 實用程式 DSNHPC 用於預編譯。預編譯 JCL 步驟的輸入是用於 COBOL-DB2 程式中使用的相應表的 DCLGEN(在 SYSLIB 中)和 COBOL-DB2 源程式(在 SYSIN 中)。//STEP010 EXEC PGM=IKJEFT01 //SYSIN DD DSN=DIS.TEST.COBOL(PSNEW2), DISP=SHR //SYSLIB DD DSN=DIS.TEST.DCLGEN(PSDC2), DISP=SHR //DBRMLIB DD DSN=DIS.TEST.DBRMLIB(PSNEW2), DISP=SHR //SYSCIN DD DSN=DIS.TEST.COBL(PSCOB2), DISP=(NEW, CATLG, DEL), SPACE=(20,… 閱讀更多
1K+ 瀏覽量
包是一個數據庫物件,它以 DB2 最佳化的形式包含來自 DBRM 的 SQL 語句。集合是一組包,我們可以使用它來隔離屬於不同應用程式的 DB2 包。例如,在電信公司的生產環境中,我們可以為訂單處理、計費和客戶服務設定不同的集合。包或包組(集合)繫結到計劃中。計劃是一個可執行物件,包含其中所有 SQL 查詢的 DB2 訪問路徑。我們可以直接將包繫結到計劃中,也可以… 閱讀更多
COBOL-DB2 程式可以在 IKJEFT01 的幫助下執行。IKJEFT01 是一個內建的主機實用程式,允許我們透過作業控制語言 (JCL) 執行 z/OS TSO 命令。如果我們要執行計劃 PLANA 的 COBOL-DB2 程式 PROGA,我們必須提供如下 JCL 步驟。//STEP010 EXEC PGM=IKJEFT01 //STEPLIB DD DSN=DIS.TEST.LOADLIB, DISP=SHR //SYSOUT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(TB3) RUN PROGRAM (PROGA) PLAN(PLANA) END /*在上面的 JCL 步驟中,我們首先使用 IKJEFT01 實用程式來呼叫 COBOL-DB2 程式。程式 PROGA 的 loadlib 路徑在 STEPLIB 中給出,即 DIS.TEST.LOADLIB,並且… 閱讀更多