Rational Developer for Power System 是一個針對 Power System 的 Eclipse 集成開發環境。RD Power 的亮點之一,是提供了功能強大的 RPG 可視化編程環境,可用於遠程編輯、編譯、調試、運行包括 UI 界面 與報表在內的各種 IBM i RPG 程序。相比於傳統的“綠屏”命令字符界面,RD Power 的可視化編程大大提高 了 RPG 開發效率,節省了開發時間與成本。
使用 Rational Developer for Power System 開發 IBM i RPG
Rational Developer for Power System(以下簡稱 RD Power) 是一個針對 Power System(支 持 IBM i、AIX、Linux)的 Eclipse 集成開發環境。RD Power 的亮點之一,是提供了功能強大的 RPG 可視 化編程環境,可用於遠程編輯、編譯、調試、運行包括 UI 界面與報表在內的各種 IBM i RPG 程序。相比於 傳統的“綠屏”命令字符界面,RD Power 的可視化編程大大提高了 RPG 開發效率,節省了開發時間與成本。
本文試圖以 IBM i 平台的 RPG 程序作為切入點,展示如何使用 RD Power 的強大可視化編程環境, 開發各種 RPG 程序,包括界面與報表設計。
文章一共分為以下 9 部分:
概述
LPEX 編輯 RPG 源程序
Application Diagram 為 RPG 建模
編譯 RPG
運行 RPG
調試 RPG
設計 RPG 界面
IBM i 離線工程
結束語
概述
前面提到,相比於傳統的命令行開發環境(如圖 1 左側),RD Power(如圖 1 右側)的最大 優勢在於 Eclipse 風格提供的可視化編程環境。
圖 1. 5250 模擬器 vs RD Power
使用 LPEX 編輯 RPG
相信從事 RPG 開發的讀者對開發工具 SEU(SOURCE ENTRY UTILITY)並不陌 生。SEU 是 IBM i 提供的全屏幕代碼編輯工具,主要功能如下:
創建源文件成員。
編輯源代碼,包括添加、修改、刪除、復制、移動等功能。
語言相關提示
語法檢查功能
分屏浏覽 / 編輯
啟動 SEU 的方式有兩種,使用 CL 命令為 STRSEU(Start Source Entry Utility)可直接啟動。另外, 也可通過 WRKMBRPDM(Work with Members using PDM)屏幕的選項 2(EDIT)或 F6(CREATE)間接啟動。
PDM( PROGRAMMING DEVELOPMENT MANAGER)也是 IBM i 提供的開發工具包,主要用於處理源代碼、 對象和庫。PDM 的相關命令如下:
STRPDM(Start PDM):直接到 PDM 菜單
WRKLIBPDM(Work with Library using PDM):指定操作哪一個庫或對當前庫列表進行操作。
WRKOBJPDM(Work with Object using PDM):指定某一庫包含的所有對象(可按名稱、類型選取)。
WRKMBRPDM(Work with Members using PDM):指定操作某一庫下某一源文件下包含的所有或部分成員。
PDM 為建立源文件成員、訪問 SEU 以及其他工具提供了方便。
SEU 使用的是 LPEX(Live Parsing eXtensible)編輯器,如圖 2 所示。
圖 2. SEU LPEX 編輯器
與 SEU 類似,RD Power 支持 LPEX 編輯器,稱為遠程 LPEX 編輯器(Remote Systems LPEX Editor),如圖 3 所示。
圖 3. RD Power 遠程 LPEX 編輯器
一方面,遠程 LPEX 編輯器可視為 原生 LPEX 編輯器的遷移,保留了針對 IBM i 的特定編輯功能。另一方面,基於 Eclipse 風格的 RD Power 還對遠程 LPEX 編輯器提供了許多擴展與增強。
通過 Preferences 菜單(Window > Preferences > Remote Systems > Remote Systems LPEX Editor,如圖 4 所示),可查看並定制 LPEX 編輯器的各 種設置。例如,相對於 SEU 的單一顯示顏色(綠色),RD Power 支持關鍵字的著色與高亮。
圖 4. 定制 LPEX 編輯器
以下簡單介紹 RD Power 遠程 LPEX 編輯器相比於 SEU 風格的幾處特色。
顯示代碼塊嵌套關系
RD Power 遠程 LPEX 編輯器的亮點 之一,是支持代碼塊的嵌套顯示(Ctrl+Shift+O 快捷鍵或 Source 菜單),如圖 5 所示,可大大提高 RPG 源程序的可讀性。
圖 5. LPEX 編輯器——格式行
無限次 Undo/Redo
與其它 Eclipse 編輯器一樣,RD Power 遠程 LPEX 編輯器的 Undo/Redo 分別表示撤銷與重做操作。所不同的是, LPEX Editor 支持無限次 Undo/Redo,且每次 Undo 操作都將回滾至源代碼 Member 文件打開時的狀態,而每 次變化都被程序計數器記錄。圖 6 顯示的是:在保存之前,ILE RPG 源文件 ORDENTR.RPGLE 一共被修改了 30 次。
圖 6. LPEX 編輯器—— Undo/Redo
基於代碼塊的 Copy/Paste
與前面的 Undo/Redo 一樣,RD Power 遠程 LPEX 編輯器繼承並擴展了 Eclipse 編輯器的 Copy/Paste 功能 。
具體而言,RD Power 遠程 LPEX 編輯器不僅支持一般意義上基於 Windows 剪貼板的復制粘貼基本 操作。與此同時,RD Power 遠程 LPEX 編輯器還支持更高級的基於代碼塊的復制粘貼。另外,Copy/Paste 命 令也同樣適用於格式行。圖 7 演示的是三種不同風格的 Copy/Paste 操作。
圖 7. LPEX 編輯器—— Copy/Paste
代碼自動補齊
對於命令行字 符界面,代碼自動補齊(Content Assist)功能是集成開發環境相的一大特色。同樣,通過 Ctrl+Space 快捷 鍵,RD Power 可自動補齊 RPG 代碼。
而 RD Power 遠程 LPEX 編輯器的強大之處在於,不僅提供了 RPG 格式的代碼補齊功能,還支持自由格式的嵌入式 C 與 SQL 代碼,如圖 8 所示。
圖 8. LPEX 編 輯器—— Content Assist
語法檢查
RD Power 遠程 LPEX 編輯器支持自動語法檢查,並將語法錯誤嵌入顯示在代碼編輯區,如圖 9 所示的紫色行。需要說明的是 ,這些語法錯誤僅作為邏輯行顯示,並非插入到代碼物理行中。
圖 9. LPEX 編輯器——語法檢查
RD Power 遠程 LPEX 編輯器的語法檢查支持 DDS、RPG 、COBOL 等各種語言。而 CL、SQL 的語法檢查 僅限於在線或離線緩存模式。
F4 格式提示
我們知道,RPG 程序有非常嚴格的格式規范。與 SEU 一樣,RD Power 遠程 LPEX 編輯器支持 F4 格式提示,如圖 10 所示。
圖 10. LPEX 編輯器—— F4 格式提示
前面所述的語法檢查功能提供了語 法級別的校驗,而 RD Power 遠程 LPEX 編輯器還提供了語義級別的校驗——驗證器(Verifier),如圖 11 所示。
圖 11. LPEX 編輯器——驗證器
與編譯功能不同的是,驗證器不會 生成目標對象。目前為止,RD Power 驗證器支持針對 COBOL、RPG 與 DDS 的語義檢查。使用快捷鍵 Ctrl+Shift+V 或 Source 菜單,可啟動 RD Power 驗證器。
對比源代碼
代碼比較也是 RD Power 遠程 LPEX 編輯器的一大特色。一旦出現代碼不一致的情況,源代碼所在行處於黃色高亮狀態,所比較 的目標行處於粉色狀態,如圖 12 所示。使用快捷鍵 Ctrl+Shift+N/ Ctrl+Shift+P 可前向 / 後向查看下一 處不匹配代碼行。
圖 12. LPEX 編輯器——代碼比較
最後,我們簡單總結下 RD Power 遠程 LPEX 編輯器與 SEU LPEX 編輯器的主要異同,如表 1 所示:
Application Diagram 可視化建模
IBM i 程序大致分為兩種類型:*PGM(Program)與 *SRVPGM(Service Program)。其中,Program 是一個可執行程序,類似 Windows 的 EXE 文件功能。 Service Program 是把多個 Module 綁定組合在一起,提供一個可以調用的接口集合(每一個接口稱為 Procedure),類似 Windows 的 DLL 文件功能。
因此,關於 Service Program、Module、Procedure 三者之間的關系,可簡單概括為:Service Program 通常對應一個或多個 Module,而每一個 Module 又對應 不同的 Procedure,如圖 13 所示。
圖 13. Service Program 與 Module、Procedure 的對應關系
在綠屏命令行字符界面中,可以執行 CL 命令 DSPSRVPGM(Display Service Program Information)查 看 Service Program 對應的 Module 以及 Procedure。
相比之下,RD Power 提供了功能強大的可視 化 UML 圖表建模工具(如圖 14 所示),可以更加全面、清晰地描述 IBM i Service Program 內部以及不同 Service Program 之間的程序調用關系。
圖 14. IBM i 程序內部與外部調用關系
Application Diagram 相關視圖模塊的解釋說明如下:
視圖 1 為 Application Diagram Viewer,是視圖 2 與視圖 3 的組合。
視圖 2 為 Application Diagram 的主工作區。關於節點的解釋說明,如 15 所示。
視圖 3 為 Palette 視圖。
視圖 4 為 Application Diagram 的縮略圖,主要用於導航目的。
視圖 5 為 Application Diagram 屬性視圖,反映的是 Application Diagram 所選節點或連接線的調用關 系。
除用作 Application Diagram 的縮略圖之外,大綱視圖還支持顯示 IBM i 程序的樹狀層次關系,如圖 15 所示:
圖 15. Application Diagram 之大綱視圖
Application Diagram 大綱視圖所 示節點的的解釋說明如下:
節點類型 1 表示 ORDENTR 程序的入口點(Entry Point)。
節點類型 2 表示 Subroutine。
節點類型 3 表示 Procedure。
節點類型 4 表示 Program 對象。
節點類型 5 表示源代碼 Member 文件。
當 Application Diagram 涉及到較多的程序節點時,可在編輯區的空白處,右鍵單擊選擇 Find Main Entry Point,輕松定位到入口節點(Main Entry Point)。
此外,RD Power 還支持標注 Application Diagram;將 UML 圖表轉化為圖片,打印圖表等功能。
編譯 RPG
在命令行環境下 ,使用 WRKMBRPDM(Work with Members Using PDM)以及 Option 14 選項,可以編譯 RPG 源代碼。
一旦編譯失敗,可通過相關 Job Log 以及 Spool File 查看錯誤消息。圖 16 顯示的是 ILE RGP 程序 ORDENTR 編譯失敗導致的 Spool File 錯誤消息。
圖 16. 命令行模式編譯 RPG
相比之下,在 RD Power 集成開發環境中,編譯與錯誤消息兩個視圖則可以被疊加在一起,同時顯示,如 圖 17 所示。
圖 17. RD Power 編譯 RPG
針對 RPG 程序的編譯,RD Power 支持以下 CRTBNDRPG(Create Bound RPG)與 CRTRPGMOD(Create RPG Module)兩種編譯方式。
無論 是 CRTBNDRPG 或者 CRTRPGMOD,對於參數較多的復雜情況,建議使用 Work with Compile Commands …自定義 RPG 編譯命令,如圖 18 所示。
圖 18. RD Power 編譯 RPG —— 自定義編譯命令
運行 RPG
除了交互式 Interactive 作業與 SBMJOB 方式提交 Batch 作業之外,RD Power 還支持 RSE (Remote System Explorer)遠程作業。在以 RSE 方式運行 RPG 程序之前,需要執行 CL 命令 STRRSESVR( Start RSE Server),啟動 RD Power 與 IBM i 的連接服務器作業(後台進程),如圖 19 所示。
圖 19. RD Power 運行 RPG —— RSE 通信服務器作業
調試 RPG
在綠屏模式下 ,針對 ILE RPG 程序,執行 CL 命令 STRDBG(Start Debug)與 ENDDBG(End Debug)可分別啟動與停止調 試模式。針對 ILE RPG 程序,可使用 STRISDB(Start Interactive Source Debugger)。圖 20 顯示的 STRDBG 調試模式,提供了設置 / 清除斷點,單步執行,顯示字段值等諸多功能特性。
圖 20. 命令行 模式調試 RPG
相比之下,RD Power 提供的集成調 試器(Integrated Debugger)視圖更加緊湊,靈活,如圖 21 所示。在該視圖中,可以同時查看程序的調用 棧,實時監控各變量的值,設置或取消調試斷點等操作。
圖 21. RD Power 集成調試器
針對大 型 RPG 應用,常常涉及到多個模塊之間的聯調。RD Power 不僅支持作業內部的調試,同時也支持兩個作業之 間的聯合調試。此時,調試器作為服務作業(Service Job)被連接到被調試程序,如圖 22 所示。
圖 22. RD Power 集成調試器—— STRSRVJOB & STRDBG 模式
屏幕與菜單設計
對於綠屏模式,IBM i 提供了 SDA(SCREEN DESIGN AID)工具,用於交互式設計 、創建和維護屏幕與菜單。SDA 可將用戶設計的屏幕與菜單自動轉換成 DDS 源代碼。
啟動 SDA 的方 式有兩種,使用 CL 命令為 STRSDA(Start Screen Design AID)可直接啟動。另外,也可通過 WRKMBRPDM( Work with Members using PDM)屏幕的選項 17(Change Using SDA)間接啟動。
圖 23 顯示的是命 令行模式下,啟用 SDA 工具,設計 IBM i 的登錄屏幕,對應的文件類型為 DSPF。
圖 23. 命令行模 式設計屏幕與菜單
RD Power 提供了功能強大的可視化 編輯器—— Screen Designer,用於設計屏幕與菜單文件,如圖 24 所示。
圖 24. RP Power 設計屏 幕與菜單
報表設計
對於綠屏模式,IBM i 提供了 RLU(REPORT LAYOUT UTILITY)工具,用於交互式定義打 印報表的格式分布,建立打印文件,且可以將用戶設計的報表格式分布規范地自動轉換成 DDS 源代碼,簡化 了報表的設計和修改。
啟動 RLU 的方式有兩種,使用 CL 命令為 STRRLU(Start Report Layout Utility)可直接啟動。另外,也可通過 WRKMBRPDM(Work with Members using PDM)屏幕的選項 19 (Change Using RLU)間接啟動。
圖 25 顯示的是命令行模式下,啟用 RLU 工具,設計客戶信息報表 ,對應的文件類型為 DSPF。
圖 25. 命令行模式設計數據報表
RD Power 提供了功能強大的報表設 計工具—— Report Designer,如圖 26 所示。
圖 26. RD Power 設計數據報表
離線工作
離線工程模式也是 RD Power 支持 RPG 程序開發的一大特色。實際上,除了服務器端有 代碼更新,或者程序需要編譯等情況,大部分的開發工作均可以在離線模式下進行,如圖 27 所示。
圖 27. 離線下載 RPG 源文件
待程序經過遠程校驗以及編譯後, 可將源代碼提交至服務器,如圖 28 所示。
圖 28. 向服務器提交 RPG 源文件
如果是多人離線開發 RPG,會涉及到源代碼版本的沖突管理,相關的版本控制由另一組件 Rational Team Concert for IBM i 負責 ,詳情請見 Rational Team Concert for IBM i 信息中心。
結束語
事實上,Rational Developer for Power System 支持 IBM i、AIX、Linux 三種操作系統。除了 IBM i 平台的 RPG 開發,RD Power 還支持各種基於 IBM i 的 ILE 編程環境,包括 ILE COBOL,ILE C/C++,ILE CL 等。此外,RD Power 還支持 AIX 的 COBOL 開發,AIX 與 Linux 的 C/C++ 開發等。