相对与传统的绿屏IBM i应用,现代的很多IBM i应用都基于Web技术,即前端采用基于Web的图形用户界面 ,后端重用传统的RPG与COBOL业务程序。如何实现软件复用,是IBM i应用现代化的一个重要目标。一方面, 基于Web Service技术的IBM Integrated Web Services for i服务器可将传统RPG与COBOL应用发布成Web Service,实现软件重用;另一方面,作为基于IBM i的Java应用程序编程接口,IBM Java Toolbox for i可通 过相关编程接口调用RPG与COBOL,同样实现了软件重用的目标。Program Call Markup Language (以下称 PCML),作为IBM i服务器端程序参数的XML描述语言,大大简化了Web Service与IBM Java Toolbox for i的客 户端编程模型。本文的主要目标是,指导读者如何使用IBM Java Toolbox for i编程模型,结合PCML语言,实 现重用传统RPG与COBOL业务程序。Web Service及其相关技术不在本文讨论的范围之内。有关IBM Java Toolbox for i的基础知识,请参见另一篇技术文档“Toolbox for Java 和 JTOpen”。
从内容上,本 文主要分为3部分。第一部分主要介绍PCML相关的基础知识,包括PCML的概念,语法,使用方法等。在第二部 分中,我们将围绕IBM Java Toolbox for i相关的PCML类,结合样例,调用RPG程序,实现软件复用的目标。 性能优化也是这一部分的重点内容之一。最后一部分是总结。
作为样例,‘用户身份查询’RPG程序 RTVSTS.PGM的业务逻辑是根据输入的用户ID号,查询数据库,返回对应的身份信息。
PCML
作为 一种基于XML的标记语言,PCML的设计目标是描述IBM i服务器端程序的输入输出参数,减少客户端程序调用的 代码。
作为示例,清单1描述的是‘用户身份查询’RPG程序对应的输入输出参数。输入参数custid表 示用户的查询ID,而输出参数status则表示身份信息查询的返回结果。
清单1. PCML样例 — 描述用户 身份信息
<pcml>
<program name="rtvsts" path="/QSYS.lib/DEMO.lib/RTVSTS.pgm">
<data name="custid" usage="input" type="int">
<data name="status" usage="output" type="char" length="20">
</program>
</pcml>
从语法角度, PCML的根标签是<pcml>,主要嵌套以下3种标签:
<program>标签描述IBM i程序。有关<program>标签及相关属性的详细说明,请参见IBM i信 息中心PCML program tag一节。
<data>标签描述的是IBM i程序的参数,对应的参数为基础类型。有关<data>标签及相关属性 的详细说明,请参见IBM i信息中心PCML data tag一节。
<struct>标签描述的也是IBM i程序的参数,对应的参数类型为结构体。有关<struct>标签及 相关属性的详细说明,请参见IBM i信息中心PCML struct tag一节。