使用 IBM Bob 在 IBM i 上工作
如果你從未寫過一行 RPG,IBM i 是大規模生產中最迷人的平台之一。如果你已經寫了幾百萬行,你已經知道日常痛點在哪裡。這篇文章涵蓋了兩者:IBM i 獨特之處的技術概述、現代化摩擦實際出現的地方、IBM Bob 如何融入當今的 IBM i 工作流程、入門的設定步驟,以及平台路線圖上的下一步。
IBM i 實際上是什麼
IBM i 不是「我們應該重寫這個」意義上的遺留作業系統。它是一個整合平台——作業系統、資料庫、安全模型和執行時期被設計並作為一個整體交付——幾十年來一直為銀行、保險公司、醫院、製造商和物流公司創造收入。所以,我們應該稱它為傳奇。
一些往往讓第一次看到它的開發者感到驚訝的細節:
- 單級儲存。 RAM 和磁碟共享一個虛擬位址空間。物件指標在重新啟動後持久存在。作業系統將記憶體和儲存視為單一層,並在它們之間透明地分頁。大多數現代系統仍在追趕這一點。
- TIMI,技術獨立機器介面。 在 1990 年代硬體上編譯的 RPG 二進位檔案在當前的 POWER 晶片上無需修改即可執行。作業系統在底層針對新指令集重新翻譯。最接近的現代類比是 WebAssembly,早了幾十年。
- 基於物件的作業系統。 程式、檔案、佇列和權限是具有屬性的類型化物件——而不是附加了中繼資料的檔案。安全性在物件層級強制執行。
- Db2 for i 是整合的,而不是附加的。 SQL 和原生記錄級 I/O 存取相同的資料。一個 40 年前的實體檔案可以透過現代 SQL 檢視查詢,無需遷移專案。
- 原始碼可以存在於系統上或 Git 中——你的選擇。 歷史上,IBM i 原始碼作為成員儲存在原始碼實體檔案(QSYS)中,直接在系統上編譯。該平台最初將 LPAR 定位為真實來源。但 IBM i 已經發展:編譯器和作業系統現在完全支援現代以 Git 為中心的工作流程、IFS 串流檔案和本地開發(如果你選擇的話)。許多商店仍然使用 QSYS 程式庫,但平台為你提供了選擇
該平台還支援開箱即用的現代交付模式:作為作業系統一部分的原生 REST API 引擎、透過 Power Virtual Server 的混合雲,以及在與交易工作負載相同的硬體上執行的 AI 推理。RPG、COBOL、CL 和 SQL 與你的工程組織其餘部分已經使用的開發實踐共存。
平台不是問題。摩擦在它周圍。
摩擦出現的地方
幾乎每個 IBM i 商店都會出現四種模式。它們都不是關於 RPG 本身——語言很好——而是關於從未寫下的程式碼周圍的上下文,以及平台儲存和共享該上下文的方式。
- 設計上的隱式上下文。 一個工作的 RPG 程式可以在一個原始碼中跨越四代語言——RPG II、RPG IV、/COPY 複製本(在編譯時引入的共享宣告)和自由格式程序——具有欄敏感語法和編號指示器(
*IN01–*IN99),執行大多數其他語言中結構化控制流和命名布林值所做的工作。語法可以在一週內學會;圍繞它的慣例和業務規則存在於資深工程師的腦海中。 - 變更從不是局部的。 欄位的類型不是在使用它的程式中宣告的——它在資料庫表本身中宣告,在一個單獨的原始碼檔案(DDS 成員)中。讀取或寫入該表的每個程式只需在頂部參照檔案即可繼承這些定義。因此,將一欄從 10 位延長到 12 位從來不是單個程式的編輯:它會波及到觸及該檔案的每個程式,而這些程式的清單很少在任何地方寫下來。因此,對關鍵工作負載的每次變更都帶有連續性風險,現代化停滯不前。
- 原始碼很少存在於現代工具期望的地方。 程式的規範副本在系統上,而不是在筆記型電腦上的 Git 儲存庫中。閱讀其他人十五年前編寫的程式碼始於在 LPAR 上找到它、匯出它,然後決定匯出是否是規範副本——任何假設本地工作樹的工具在證明其價值之前都必須適應的工作流程。
- 固定格式 RPG 看起來一點也不像現代程式碼。 大多數生產 RPG 是用固定格式編寫的:欄敏感語法,其中操作代碼位於第 26-35 欄,Factor 1 位於 12-25,註解只能放在第 80 欄之後。對於任何接受過 Python 或 JavaScript 培訓的人來說,它讀起來像組合語言。IBM 用完全自由格式的 RPG(RPG IV,後來簡稱為「RPG」)重新發明了這種語言,它看起來和感覺起來像一種現代的程序語言——結構化區塊、命名變數、標準運算式。語法差距是真實的,但語言本身已經發展。摩擦在於幾十年的工作程式碼仍然是固定格式,重寫它帶來的風險是大多數商店無法證明的。
Bob 在 IBM i 的 RPG 應用程式上做什麼
將 Bob 指向一個 RPG 程式並在 Ask 模式下開始:
- 「帶我了解這個程式做什麼以及它觸及哪些檔案。」
- 「
CUSTNO在哪裡設定,之後哪些程式讀取它?」 - 「如果我更改此欄位的長度,會破壞什麼?」
當你有一個變更想法時切換到 Plan 模式:自由格式轉換、從記錄級 I/O 遷移 SQL,或將單體分解為模組。Bob 在修改任何檔案之前產生計畫、它觸及的相依性以及它打算採取的步驟。
切換到 Code 模式以套用變更。Bob:
- 使用可重複的模式將固定格式 RPG 轉換為自由格式,逐個檔案。
- 在適當的地方將記錄級 I/O 遷移到嵌入式 SQL。
- 針對現有程序產生 RPGUnit 測試套件,以便轉換是可驗證的,而不僅僅是編譯的。
- 從原始碼產生純語言文件和 Mermaid 圖表——可搜尋、可共享的工件,比任何一個工程師都長壽。
相同的工作流程處理 RPG II/III/ILE、CL、DDS、SQL 和 COBOL,因此閱讀在他們出生之前編寫的程式的新員工不再被語法阻止。
使你的 IBM i 原始碼為 Bob 做好準備
Bob 今天針對本地電腦上的原始碼工作。設定很短:
- 下載你的原始碼。 將你的 RPG、RPGLE、CL、DDS 和 SQL 成員匯出到本地資料夾。Code for i 專案資源管理器記錄了從實體檔案成員的匯出:migrate source
- 在 Bob 中開啟資料夾。 在原始碼根目錄上 File → Open Folder。Bob 在首次開啟時索引程式碼庫。
- 安裝 IBM i 工具鏈。 從 Extensions 面板新增 IBM i Development Pack(Code for i 套件)和用於 Bob 產生的圖表的 Mermaid 渲染器。
- 在 Ask 模式下開始工作階段。 選擇一個程式——理想情況下是團隊中沒有人完全理解的程式——並要求 Bob 解釋它。這是檢視 Bob 是否在你的工作流程中贏得一席之地的最快方法。
如果你的團隊來自 SEU 或 RDi,遷移主要是上面的匯出步驟加上擴充功能安裝。編輯介面是一個現代的 VS Code 系列環境,具有語法醒目提示、程式碼完成和前面描述的 AI 工作流程;行號仍然可供想要它們的工程師使用。
IBM i 上 Bob 的下一步
最近宣布的 Premium Package for i 為 IBM i 開發團隊提供原生和最佳化的體驗。Premium Package for i 將於 6 月 24 日正式發布。
Premium Package for i。 隨著 6 月 24 日的 GA,Bob 將直接連線到你的 IBM i。從單個工作階段中,你直接從 QSYS 讀取原始碼成員,使用上述相同的工作流程編輯它們,並直接針對系統執行編譯和測試週期。除了連線性,Bob 還獲得了針對 IBM i 開發調整的內建技能和工作流程——固定到自由的轉換、重構、文件產生——因此在 RPG 程式碼庫上的起始提示可以更直接地落在開箱即用的 IBM i 慣例上。具體來說,這意味著:
- 一個連線到開發 LPAR 的 Bob 工作階段;沒有單獨的匯出-編輯-匯入迴圈。
- 來自 IBM i 的編譯錯誤和測試結果會回到 Bob 已經在的對話中。
- 用於 IBM i 商店重複執行的重構、轉換和測試產生模式的內建技能和工作流程。
更遠的未來——端到端 SDLC。 三個執行緒正在為未來版本進行積極設計:
- DevOps 整合。 Bob 參與 IBM i 工作負載的建置、部署、監控和 CI/CD——針對測試 LPAR 執行回歸通過、透過環境提升變更,並將執行時期問題帶回工作階段。
- SQL 效能。 資料分析和索引最佳化作為一流功能,除了 Bob 今天已經產生的嵌入式 SQL 遷移模式之外。
- IBM i 知識助手。 跨程式碼庫、設計文件和工單的基於檢索的答案——以便原始碼之外的上下文可以從同一對話中存取。
對於今天採用 Bob 的團隊,上面的本地檔案工作流程是正確的起點;本節中的項目描述了隨著 IBM i 產品的成熟,該工作流程如何縮短和擴充。
客戶參考
醫療保健、農業、企業 IT 和物流領域的團隊今天正在針對生產 IBM i 程式碼庫使用 Bob:
- MEDHOST。 跨美國醫院部署的涵蓋多個 RPG 代的醫療保健應用程式。該團隊使用 Bob 進行影響分析和固定到自由的轉換,以及將較新的開發人員引入原始作者早已離開的程式。
- NI+C。 日本企業整合商,擁有十多年來一直未經更改執行的 RPG 程式,沒有倖存的設計文件。Bob 產生的設計文件和 Mermaid 圖表足夠準確,以至於以前從 AI 助手那裡反彈的工程師繼續將其用於實際工作。
- Heartland Co-op。 總部位於愛荷華州的農業合作社,將即時 IoT 感測器資料串流傳輸到其 IBM i 環境中,用於穀物品質和裝置監控。Bob 幫助開發人員推理 IoT 管道、穀物會計和核心營運系統之間的相互依賴關係,並縮短新員工的上手時間。
- Carreras Grupo Logístico。 西班牙首批企業 Bob 採用者之一,使用它來解釋遺留程式邏輯、產生文件並跨物流平台的模組進行重構。
所有四個的共同點是相同的:現有的 IBM i 程式碼庫保持原位,解釋、轉換和文件工作與生產系統一起執行,而不是在替換專案之前。
開始使用
- 開始免費試用
- 將一個 RPG 程式拉入本地資料夾並在 Bob 中開啟它。
- 在 Ask 模式下,請求演練和其資料流的 Mermaid 圖表。
該工作階段——一個程式,一次對話——是獲得關於 Bob 是否適合你的團隊工作方式的真實答案的最短路徑。
