工作坊教材 · COBOL 傳承
用 IBM Bob 解讀、文件化與傳承 COBOL 程式
本單元以開源的 cics-genapp 為練習素材,帶領學員逐步完成四個任務:讀懂程式邏輯、萃取業務規則、新增 COBOL 段落、整理新人導覽文件。全程在本機進行,不需要 Mainframe 環境。
Step 1:取得練習素材 — cics-genapp
cics-genapp 是 IBM 官方開源的保險核心交易範例系統,原始碼托管於 GitHub: github.com/cicsdev/cics-genapp。 請先在本機開一個終端機視窗,執行以下指令將專案 clone 下來:
git clone https://github.com/cicsdev/cics-genapp.git
cd cics-genapp
Clone 完成後,COBOL 原始檔位於 base/src/cobol/ 目錄下。接著用 IBM Bob 開啟這個資料夾作為工作區,就可以讓 Bob 直接存取檔案。請大略瀏覽下表,了解我們這次會用到哪些原始檔:
| COBOL 原始檔名 | 核心功能描述 | 估算規模與特徵 |
|---|---|---|
| LGACUS01.cbl | 新增客戶保險單(Add Customer Policy) | 約 800 行,包含 CICS EXEC 呼叫與 DB2 寫入 |
| LGDPDB01.cbl | 刪除保單與相關聯客戶資料(Delete Policy) | 約 600 行,涉及多表聯動外鍵與防呆校驗 |
| LGIPDB01.cbl | 查詢保單詳情(Inquire Policy DB) | 約 500 行,典型 SQL 查詢與記憶體變數 mapping |
| LGUPVS01.cbl | 更新保單狀態與理賠記錄(Update VSAM) | 約 700 行,混合 VSAM 檔案與關係型 DB2 讀寫 |
三個實作任務
假設您是剛接手這個系統的工程師,對 cics-genapp 的程式碼完全不熟悉。以下三個任務模擬真實的接手流程,請依序操作,每個任務都附有建議的 Prompt 可以直接複製使用。
任務一:Onboarding — 快速掌握程式架構
切換到 Ask 模式,並確認已用 Bob 開啟 cics-genapp/base/src/cobol/ 資料夾。目標是在不閱讀完整程式碼的情況下,先對整個系統建立基本認識。依序送出以下兩個 Prompt:
Prompt 1-A:了解專案全貌
這個資料夾裡有哪些 COBOL 程式?請列出每個檔案的名稱,並用一句話說明它負責的業務功能。
預期 Bob 的回應方向
Bob 會掃描目錄,列出各個
.cbl 檔案並提供每支程式的功能摘要,讓您不需要開啟任何一個檔案就能掌握整個系統的模組組成。
Prompt 1-B:深入 LGACUS01 的入口與資料流
請針對 LGACUS01.cbl,列出它的主要 Paragraph 呼叫順序,並說明程式的主要執行流程:資料是從哪裡進來、經過哪些處理步驟、最終寫到哪裡去?
預期 Bob 的回應方向
Bob 會解析程式的 Paragraph 結構,列出呼叫順序,並說明資料流向——從 CICS Container 取得輸入、經過驗證後寫入 DB2。這份架構摘要能讓您迅速定位後續要修改的位置。
任務二:Extraction — 萃取核心業務邏輯
切換到 Ask 模式。程式碼裡藏著大量業務規則,但通常沒有獨立的文件記錄。本任務練習如何讓 Bob 把這些邏輯從不同程式中挖掘出來。
Prompt 2-A:找出 LGDPDB01 的業務規則與防呆邏輯
請閱讀 LGDPDB01.cbl,找出所有的業務規則、條件判斷與防呆校驗(例如刪除前的資格檢查、外鍵保護、錯誤回應碼等),用繁體中文條列成清單。
預期 Bob 的回應方向
Bob 會逐段分析程式中的 IF、EVALUATE 與 WHEN 結構,將每一條隱藏在刪除保單流程裡的業務規則翻譯成可讀的條列說明,包含每個防呆條件的觸發前提與對應的處理行為。
Prompt 2-B:萃取 LGIPDB01 的 SQL 欄位對照表
請列出 LGIPDB01.cbl 中所有 EXEC SQL 區塊使用的 Host Variables,以及它們對應的 DB2 資料表名稱與欄位名稱,整理成對照表格式。
預期 Bob 的回應方向
Bob 會掃描查詢程式中的所有內嵌 SQL,列出 COBOL 程式變數與 DB2 實體欄位之間的對應關係,產出一份可直接貼入 Data Dictionary 的欄位對照表。
任務三:Documentation — 根據 Spec 產出程式碼文件
切換到 Agent 模式。結合前兩個任務的理解,現在讓 Bob 根據您提供的規格描述,直接產出結構化的程式碼技術文件,供後續維護與交接使用。
Prompt 3-A:產出 LGUPVS01 模組技術規格文件
請根據 LGUPVS01.cbl 的程式內容,產出一份繁體中文的技術規格文件,格式包含:(1)模組用途說明、(2)輸入/輸出欄位清單、(3)主要業務規則、(4)例外處理邏輯、(5)相依的 DB2 資料表與 VSAM 檔案。
預期 Bob 的回應方向
Bob 會依照您指定的格式,針對這支混合 VSAM 與 DB2 的更新程式,產出一份完整的模組技術規格文件。每個章節都對應程式碼中的實際邏輯,可直接存為 Markdown 或貼入 Confluence。
Prompt 3-B:為 LGDPDB01 產出 Inline 程式碼註解
請為 LGDPDB01.cbl 中目前沒有註解的關鍵段落加上繁體中文的 COBOL 行內註解(以 * 開頭),說明每個 Paragraph 的用途、重要的防呆邏輯與錯誤處理流程。
預期 Bob 的回應方向
Bob 會在刪除保單程式的關鍵位置插入 COBOL 格式的行內註解,讓下一位接手的工程師能夠直接從程式碼本身讀懂業務邏輯與防呆設計,不再依賴口耳相傳的知識傳承。
Prompt 3-C:將 3-A 與 3-B 的成果轉為 HTML 技術文件網頁
請把剛才 Prompt 3-A 產出的「LGUPVS01 模組技術規格文件」,以及 Prompt 3-B 產出的「LGDPDB01 含行內註解的程式碼」,整合成一份單一的自包含 HTML 網頁文件,需求如下:(1)頁面標題為「cics-genapp 技術交接文件」;(2)左側導覽列可跳至各章節;(3)技術規格文件以結構化段落呈現,並將清單、表格以 HTML 格式排版;(4)COBOL 程式碼以 <pre><code> 區塊顯示,行內註解以不同顏色標示;(5)整份文件可直接另存為 .html 檔案供離線閱讀或上傳 Confluence。
預期 Bob 的回應方向
Bob 會在 Agent 模式下直接產出一份完整的自包含 HTML 文件,將 3-A 的技術規格與 3-B 的帶註解程式碼合併為同一頁面,並自動加入左側導覽、章節錨點、程式碼高亮樣式。您可以點選 Bob 回應中的「Save」按鈕直接下載
.html 檔案,或將原始碼貼入 Confluence 的 HTML 巨集區塊即可呈現完整格式。