一种RPG程序自动转成JAVA程序的方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201910673794.0
(22)申请日 2019.07.24
(71)申请人 中信银行股份有限公司
地址 100010 北京市东城区朝阳门北大街9
(72)发明人 王燕 陈蓓 刘良俊 江子能 
田磊 阎珅 李龙 李兴 
(74)专利代理机构 北京市兰台律师事务所
11354
代理人 田君露
(51)Int.Cl.
G06F  8/51(2018.01)
G06F  40/154(2020.01)
(54)发明名称
一种RPG程序自动转成JAVA程序的方法
(57)摘要
本发明提供了一种RPG程序自动转成JAVA程
序的方法,属于软件技术领域。该方法首先通过
读取RPG源代码生成RPG结构树,再通过RPG结构
树转成对应的JAVA结构树,最后将JAVA结构树生
成相应的JAVA代码,实现支撑银行核心系统的不
同编程语言之间可执行代码的自动转换,从而降
低银行核心系统从集中式架构向分布式架构转
型过程中的人力、
物力和财力。权利要求书1页  说明书13页  附图16页CN 110879710 A 2020.03.13
C N  110879710
A
1.一种RPG程序自动转成JAVA程序的方法,其特征在于:其实现方式主要基于以下三个步骤:
(一)读取RPG源代码生成RPG结构树;
(二)根据RPG结构树转成对应的JAVA结构树;
(三)根据JAVA结构树生成相应的JAVA代码。
2.如权利要求1所述的方法,其特征在于:读取RPG源代码生成RPG结构树包括处理RPG 程序中的操作文件,变量,头文件信息,以及逻辑部分的步骤。
3.如权利要求1所述的方法,其特征在于:根据RPG结构树转成对应的JAVA结构树包括分别对RPG程序中操作文件,变量,头文件信息,以及逻辑部分进行语法转换和处理的步骤。
4.如权利要求3所述的方法,其特征在于:对RPG程序中操作文件进行语法转换时,将所述RPG程序中定义的文件转成JAVA程序中DOMAIN/DAO的对象。
5.如权利要求3所述的方法,其特征在于:对RPG程序中变量进行语法转换时,利用所述RPG程序中的DS结构转成JAVA内部类,其下挂变量转成内部类的成员变量。
6.如权利要求3所述的方法,其特征在于:对RPG程序中内部函数进行语法转换时,JAVA 的jdk中存在对应的api,进行直接转换。
7.如权利要求3所述的方法,其特征在于:对RPG程序中内部函数进行语法转换时,JAVA 的jdk不存在对应的api,封装成公用的静态方法。
8.如权利要求3所述的方法,其特征在于:对RPG程序中头文件信息进行语法转换时,结构转成JAVA内部类,其下挂变量转成内部类的成员变量。
权 利 要 求 书1/1页CN 110879710 A
一种RPG程序自动转成JAVA程序的方法
技术领域
[0001]本发明涉及可执行代码在不同编程语言之间的转换,尤其涉及一种RPG程序自动转成JAVA程序的方法。
背景技术
[0002]现阶段,信息化成为了银行发展的重要路径,而信息化最明显的表现即为银行核心系统的普及。银行核心系统,又称银行综合业务系统,是银行信息化建设的核心部分,也是银行业务经营的基础,有效地保证了银行各项业务的正常开展和进行。
[0003]从信息化运维的角度看,银行核心系统往往需要全天候无间断地运行。目前,各商业银行和相关金融机构在转换核心系统底层的可执行代码(例如,从RPG程序转成JAVA程序)时,主要依靠人工转换手段,手工将RPG程序编码,进而转成JAVA程序。这种转换方式不但需要更大的工作量,明显增加时间、人力以及财力资源,而且在转换过程中容易出现质量问题,导致风险无法预估。
发明内容
[0004]鉴于人工转换代码的诸多弊端,本发明提出了将银行核心系统中 RPG程序自动转成JAVA程序的方法,从而促进银行核心系统从集中式架构向分布式架构的转型。
[0005]本发明的技术解决方案如下:
[0006]一种RPG程序自动转成JAVA程序的方法,其实现方式主要基于以下三个步骤:[0007](一)读取RPG源代码生成RPG结构树;
[0008](二)根据RPG结构树转成对应的JAVA结构树;
[0009](三)根据JAVA结构树生成相应的JAVA代码。
[0010]其中,读取RPG源代码生成RPG结构树的步骤主要实现把文本文件的源代码RPG结构树。
[0011]RPG程序主要分为4个部分,第一部分是F表,用于定义程序中需要操作的文件(数据库表);第二部分是D表,用于定义程序中需要使用到的变量;第三部分是COPY/INCLUDE,用于定义需要引入的头文件信息;第四部分是子例程,属于程序的处理部分。
[0012]根据RPG程序的语法特点,在处理RPG程序四大部分时候,读取RPG源程序文本文件,生成RpgStruct对象,每个文本文件的源代码对应一个RpgStruct对象,利用正则表达式逐行解析源代码。主要处理流程如下图1所示。
[0013]RpgStruct结构图如图2所示。
[0014]其中,RPG结构树转成JAVA结构树的步骤是通过语法分析和转换,实现RPG程序RpgStruct类(RPG结构树)向JAVA结构树 ComposeDescriptor的转变。生成的每个JAVA程序对应 ComposeDescriptor对象,主要涉及F表、D表、子例程、内置函数、 COPY结构等语法转换,转换方式如图3所示。
[0015]其中,转换过程包括以下四个步骤:首先对RPG程序中F表的语法进行转换,其次对
RPG程序中D表的语法进行转换,再次对子例程(自由格式)进行语法转换,最后是对COPY结构进行处理。具体处理流程如图4所示。
[0016]1、F表的语法转换
[0017]由于java程序中一般没有逻辑文件的概念,但相当于 DOMAIN/DAO。一般情况,数据库中每张表对应一个DOMAIN/DAO。如图5所示,在RPG中定义了逻辑文件(数据库的表),可以转成JAVA 程序中的DOMAIN/DAO。
[0018]除此之外,还需要处理RPG程序中的PREFIX等关键字,将这些关键字相应的信息保持在上下文中,以方便后续程序逻辑的转换。 PREFIX表示F表中的字段增加或者修改字段前缀,例如图6逻辑文件定义中,有PREFIX关键字P_,则表示此文件的属性字段名都会加上P_前缀,CDSVINO为其中的一个字段,在RPG程序中直接使用P_CDSVINO,而在JAVA中需要加上所属的对象。P_CDSVINO将变成了ddcdsp.setVino(…)形式。
[0019]2、D表的转换
[0020]RPG每个DS可以转成为一个JAVA内部类,下挂的变量相当于 JAVA内部类中的成员变量。如图7所示,RPG程序中定义了 DS_VLDT结构体,转换为JAVA的Ds_vldt内部类,而DS_ VLDT 结构体下挂的V_TYPE和V_DATE转成java程序后对应Ds_vldt内部类的私有成员变量v_type和v_date,并生成相应的get和set方法。
[0021]除此之外,还需对LIKE等关键字进行一一处理。例如处理 LIKE关键字,首先需要到CKRAQST所属类,再加载相应的类,通过反射机制获取CKRAQST的类型。如图8所示,RPG 程序中 C_AQST变量like变量CKRAQST,如果CKRAQST如A型(字符型),则转成JAVA程序后,对应为String类型。
[0022]下表1中描述了RPG类型转成对应的JAVA类型,例如RPG程序中的A/O/U类型可转成java中的String类型。
[0023]
[0024]
[0025]表1
[0026]3、子例程的转换
[0027]RPG程序中的子例程是程序的主要处理逻辑部分,也是转成java 程序的关键。根据RPG语法特性和特征信息,使用不同的处理器 (Processor)进行语法分析和语法转换,具
体处理器如下表2所示:

本文发布于:2024-09-21 12:39:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/756386.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   转换   银行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议