CN116954609A - 代码转换方法、装置、设备及存储介质 - Google Patents
代码转换方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116954609A CN116954609A CN202310947207.9A CN202310947207A CN116954609A CN 116954609 A CN116954609 A CN 116954609A CN 202310947207 A CN202310947207 A CN 202310947207A CN 116954609 A CN116954609 A CN 116954609A
- Authority
- CN
- China
- Prior art keywords
- code
- processed
- source code
- source
- acquisition request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 63
- 238000013519 translation Methods 0.000 claims abstract description 23
- 230000006870 function Effects 0.000 claims description 42
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 239000012634 fragment Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 208000015416 Acquired purpura fulminans Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007373 indentation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种代码转换方法、装置、设备及存储介质,该方法包括:基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,待转换数据库在接收路径获取请求后,反馈与路径获取请求对应的对象清单;对接收的对象清单进行遍历解析,获得各待处理对象对应的待处理源码;根据各待处理源码的文件类型,将各待处理源码转换为对应的目标代码。本发明可根据目标转译路径从待转换数据库中批量获取待处理源码,再根据各待处理源码的文件类型自动将待处理源码批量转换为目标代码,从而避免出现代码转换错误和遗漏的情况,提高代码转换的准确率。同时相较于现有的人工代码转换方法,本发明的代码转换耗时减少,因此提高了代码转换效率。
Description
技术领域
本发明涉及电子数字数据处理技术领域,尤其涉及一种代码转换方法、装置、设备及存储介质。
背景技术
现如今,部分企业的核心业务可由基于IBM的AS400系统承载。然而,AS400系统有难理解、难部署、难扩展和难创新的缺陷,不利于企业的业务发展,因此企业愈发重视将核心业务系统从AS400系统向开发平台转型。
然而,现有核心业务系统在通过人工将AS400系统中的代码逻辑转换成Java语言的伪代码(或源码)等目标代码的迁移过程中,不仅容易出现代码理解错误、遗漏代码等风险,准确率低;且人工代码转换的过程耗时较长,效率低。因此,现亟需一种快速且准确度高的将AS400系统中的代码逻辑转换为目标代码的代码转换方法。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种代码转换方法、装置、设备及存储介质,旨在解决现有将AS400系统中的代码逻辑转换成目标代码的方法效率低且准确率低的技术问题。
为实现上述目的,本发明提供了一种代码转换方法,所述方法包括:
基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,所述待转换数据库在接收所述路径获取请求后,反馈与所述路径获取请求对应的对象清单;
对接收的所述对象清单进行遍历解析,获得各待处理对象对应的待处理源码;
根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码。
可选地,所述对接收的所述对象清单进行遍历解析,获得各待处理对象对应的待处理源码的步骤,包括:
对接收的所述对象清单进行遍历解析,获得所有待处理对象的路径和名称;
根据各待处理对象的路径和名称生成对应的对象获取请求发送至待转换数据库,所述待转换数据库在接收所述对象获取请求后,以字节流的形式反馈与所述对象获取请求对应的待处理源码;
接收与所述各待处理对象对应的待处理源码。
可选地,所述目标代码包括:实体,所述根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码的步骤,包括:
当所述待处理源码的文件类型为PF文件时,判断所述待处理源码是否为文件;
若是,则将所述待处理源码转换为实体。
可选地,所述目标代码包括:数据传输对象;所述当所述待处理源码的文件类型为所述PF文件时,判断所述待处理源码是否为文件之后,还包括:
若否,则将所述待处理源码转换为数据传输对象。
可选地,所述目标代码包括:索引;所述根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码的步骤,还包括:
当所述待处理源码的文件类型为LF文件时,则将所述待处理源码转换为索引。
可选地,所述目标代码包括:JAVA伪代码;所述根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码的步骤,还包括:
当所述待处理源码的文件类型为RPGLE程序时,对所述待处理源码进行遍历,获得所述处理源码中各代码行的功能类型和目标代码集合;
根据所述功能类型确定所述待处理源码中的目标子例程代码行,并根据所述目标代码集合和所述目标子例程代码行对所述待处理源码进行代码替换,获得中间源码;
基于所述功能类型和预设映射关系对所述中间源码进行关键词替换,获得对应的JAVA伪代码。
可选地,所述当所述待处理源码的文件类型为RPGLE程序时,对所述待处理源码进行遍历,获得所述处理源码中各代码行的功能类型和目标代码集合的步骤,包括:
当所述待处理源码的文件类型为RPGLE程序时,根据述待处理源码中各代码行的头代码获得所述各代码行的功能类型;
当任一代码行的功能类型为预设子例程类型时,获取所述预设子例程类型的代码行对应的代码片段;
将获取的所有代码片段组合成目标代码集合。
此外,为实现上述目的,本发明还提出一种代码转换装置,所述代码转换装置包括:
清单获取模块,用于基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,所述待转换数据库在接收所述路径获取请求后,反馈与所述路径获取请求对应的对象清单;
源码获取模块,用于对接收的所述对象清单进行遍历解析,获得各待处理对象对应的待处理源码;
代码转换模块,用于根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码。
此外,为实现上述目的,本发明还提出一种代码转换设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码转换程序,所述代码转换程序配置为实现如上文所述的代码转换方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有代码转换程序,所述代码转换程序被处理器执行时实现如上文所述的代码转换方法的步骤。
本发明公开了一种代码转换方法、装置、设备及存储介质,该方法包括:基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,待转换数据库在接收路径获取请求后,反馈与路径获取请求对应的对象清单;对接收的对象清单进行遍历解析,获得各待处理对象对应的待处理源码;根据各待处理源码的文件类型,将各待处理源码转换为对应的目标代码。本发明可根据目标转译路径从待转换数据库中批量获取待处理源码,再根据各待处理源码的文件类型自动将待处理源码批量转换为目标代码,从而避免出现代码转换错误和遗漏的情况,提高代码转换的准确率。因此,本发明可以字节流的形式从待转换数据库中逐项获取待处理源码,并根据各待处理源码的文件类型对其中的代码行进行自动的代码逐行解析和代码逐行转换,同时相较于现有的人工代码转换方法,本发明的代码转换耗时减少,因此提高了代码转换效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的代码转换设备的结构示意图;
图2为本发明代码转换方法第一实施例的第一流程示意图;
图3为本发明代码转换方法第一实施例的第二流程示意图;
图4为本发明代码转换方法第一实施例的代码传输示意图;
图5为本发明代码转换方法第二实施例的第一流程示意图;
图6为本发明代码转换方法第二实施例的接口或字段映射示意图;
图7为本发明代码转换方法第二实施例的第二流程示意图;
图8为本发明代码转换装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的代码转换设备结构示意图。
如图1所示,该代码转换设备可以包括:处理器1001,例如中央处理器(CentralProcessingUnit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccessMemory,RAM),也可以是稳定的非易失性存储器(Non-VolatileMemory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对代码转换设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及代码转换程序。
在图1所示的代码转换设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明代码转换设备中的处理器1001、存储器1005可以设置在代码转换设备中,所述代码转换设备通过处理器1001调用存储器1005中存储的代码转换程序,并执行本发明实施例提供的代码转换方法。
本发明实施例提供了一种代码转换方法,参照图2,图2为本发明代码转换方法第一实施例的第一流程示意图。
本实施例中,所述代码转换方法包括以下步骤:
步骤S10:基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,所述待转换数据库在接收所述路径获取请求后,反馈与所述路径获取请求对应的对象清单;
需要说明的是,本实施例方法的执行主体可以是具有数据处理、数据通信、程序运行以及代码转换功能的计算服务设备,例如平板电脑、个人电脑等,还可以是能够实现相同或相似功能的其他电子设备。此处以上述代码转换设备(简称转换设备)对本实施例和下述各实施例提供的代码转换方法进行具体说明。
可以理解的是,本实施例需要将AS400系统的RPGLE语言转换为Java语言(可包括SpringBoot框架或Mybatis框架)下的伪代码或源码,而RPGLE语言的每一行代码,都以指定的格式设置。具体地,其中,若第一位是C则表示是代码行,其他则表示无逻辑含义的文本;第二位为*则表示是注释行,空格则表示非注释行;第7-20位则表示FACTOR1(参数1),其含义取决于第21-30位的Opcode&Ext(操作码及扩展内容)的关键字。即,RPGLE语言的每一行代码的组成方式可以是:代码行/无逻辑+注释行/非注释行+参数+关键字。基于此,本实施例可通过字节流的方式读取AS400系统中的RPGLE语言,并对获取的RPGLE语言的代码进行逐行解析,同时结合堆栈的数据结构,即可实现代码的自动转译。
需要理解的是,上述待转换数据库可以是待进行代码转换的AS400系统,在进行代码转换前,转换设备需要首先连机到AS400系统的服务器,连接方式可以是TCP通讯;然后获取各待转换代码的源码,具体可通过上述目标转译路径获取,上述目标转译路径可以是需要转译的代码对应的代码库路径,例如VBSISN库路径,或者VBSISN库下的ISILCPGMFILE。AS400系统在接收上述路径获取请求后,可获取对应的Member的内容。在AS400系统中Member可以是指定一类的记录归集,即可用一个指定的Member打开一个pf,相应地只看到属于这个Member的记录数据。因此,本实施例可利用此特性,在AS400系统获取路径获取请求可根据路径获取请求只获取对应的Member下的待处理对象,如表格、程序或命令等,并根据获取的所有待处理对象生成对应的对象清单。
步骤S20:对接收的所述对象清单进行遍历解析,获得各待处理对象对应的待处理源码;
易理解的是,本实施例中转换设备可通过预先编写的集成化的输出接口程序模块获取上述对象清单,上述对象清单中只包含了各待处理对象的名称,并未包含各待处理对象的代码。因此,本实施例可对上述对象清单进行遍历解析,从中逐项获取各待处理对象对应的待处理源码。
进一步地,作为一种可实施方式,如图3所示,图3为本发明代码转换方法第一实施例的第二流程示意图,本实施例中,步骤S20包括:
步骤S201:对接收的所述对象清单进行遍历解析,获得所有待处理对象的路径和名称;
步骤S202:根据各待处理对象的路径和名称生成对应的对象获取请求发送至待转换数据库,所述待转换数据库在接收所述对象获取请求后,以字节流的形式反馈与所述对象获取请求对应的待处理源码;
步骤S203:接收与所述各待处理对象对应的待处理源码。
需要说明的是,本实施例可对上述对象清单进行遍历解析,从中逐项获取各待处理对象以及各待处理对象对应的代码路径,从而逐项从AS400系统中获取各代码路径下的RPGLE格式源码,具体的,本实施例可根据各待处理对象的路径和名称生成对应的对象获取请求发送至AS400系统,AS400系统在接收对象获取请求后,可以字节流的形式反馈与对象获取请求对应的待处理源码,转换设备可通过上述输出接口程序模块接收AS400系统输出的待处理源码,其中,每一个输出均可表示一行RPGLE格式的代码,本实施例可汇总与一个对象获取请求对应的所有输出接口,即可对应获取与一个待处理对象相关的RPGLE格式的源码文件,即上述各待处理对象对应的待处理源码。
步骤S30:根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码。
需要说明的是,上述各待处理源码的文件类型可包括:PF文件、LF文件和/或RPGLE程序,因此本实施例可根据各待处理源码的文件类型将各待处理源码转换为对应的目标代码,本实施例中目标代码可以为JAVA语言风格的源码或伪代码,从而批量将AS400源码库的代码,逐项转换成JAVA语言的伪代码,避免出现代码转换错误和遗漏的情况,提高代码转换的准确率。
可以理解的是,上述经过文件类型判别后获得的目标代码已尽可能的接近JAVA风格的代码,但为了保证最后代码的准确性,本实施例在将各待处理源码转换为对应的目标代码后,可由相关开发人员对目标代码进行微调。但相较于现有代码转换方法而言,本申请在通过代码转换设备进行核心系统的迁移过程中,只需要少量熟悉AS400/RPGLE开发的人员即可,因此本实施例的代码转换耗时减少,进而提高了代码转换效率。
需要理解的是,本实施例中转换设备可适用于其他AS400/RPGLE程序的转换,也可以扩展到除JAVA语言之外的其他的编程语言和平台,上述目标代码的具体类型,本实施例对此不加限制。
在实际应用中,如图4所示,图4为本发明代码转换方法第一实施例的代码传输示意图,本实施例的代码转换设备可在接收到用户输入的目标转译路径后生成对应的路径获取请求,并通过TCP通讯发送至AS400系统,AS400系统在接收到路径获取请求后,找到对应代码数据库路径,并反馈与路径获取请求对应的所有对象清单;代码转换设备在接收到对象清单后,可对接收对象清单进行遍历解析,获得各待处理对象,然后逐个对各待处理对象进行转译。具体地,本实施例可根据待处理对象的路径和名称生成对应的对象获取请求并通过TCP通讯发送至AS400系统,AS400系统在接收到对象获取请求后,根据待处理对象的名称找到对应代码路径,并以字节流的形式反馈与对象获取请求对应的待处理源码。代码转换设备可在接收到待处理源码后根据各待处理源码的文件类型,将各待处理源码转换为对应的目标代码。最后,直至代码转换设备检测到不存在未处理的待处理对象,即表示转换完毕,停止从AS400系统中获取对象。
本实施例公开了一种代码转换方法,该代码转换方法包括:基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,待转换数据库在接收路径获取请求后,反馈与路径获取请求对应的对象清单;对接收的对象清单进行遍历解析,获得所有待处理对象的路径和名称;根据各待处理对象的路径和名称生成对应的对象获取请求发送至待转换数据库,待转换数据库在接收对象获取请求后,以字节流的形式反馈与对象获取请求对应的待处理源码;接收与各待处理对象对应的待处理源码;根据各待处理源码的文件类型,将各待处理源码转换为对应的目标代码。因此,相比于现有的代码转换方法,本实施例可根据目标转译路径从待转换数据库,即AS400系统,中批量获取待处理源码,再根据各待处理源码的文件类型自动将待处理源码批量转换为目标代码。因此,本实施例可以字节流的形式从待转换数据库中逐项获取待处理源码,并根据各待处理源码的文件类型对其中的代码行进行自动的代码逐行解析和代码逐行转换,避免出现代码转换错误和遗漏的情况,提高代码转换的准确率。同时相较于现有的人工代码转换方法,本实施例的代码转换耗时减少,因此提高了代码转换效率。
参照图5,图5为本发明代码转换方法第二实施例的流程示意图,基于上述图2所示的实施例,提出本发明代码转换方法的第二实施例。
需要理解的是,本实施例中转换设备可将目标转译路径下的各待处理对象,如接口、文件和/或可执行程序按照预设的转换逻辑及关系,直接转换成对应的数据传输对象(Data Transfer Object,DTO)、实体(Entity)以及基于JAVA语言的伪代码。具体地,在AS400系统中,接口的命名规范为:2位系统代码+3位产品代码+3位业务模块+2位后缀,可以映射为JAVA下的数据传输对象,其中,2位后缀中的第一位若为X则表示输入接口,若为Y则表示双向接口,若为Z则表示输出接口;文件的命名规范为:2位系统代码+3位产品代码+3位业务含义+P,可以映射为JAVA下的实体;可执行程序的命名规范为:2位系统代码+3位产品代码+3位业务模块+RP,可以映射为JAVA下的伪代码。
需要理解的是,本实施例在进行待处理源码的文件类型的判断前,即可预先配置转化设备与AS400系统之间的字段或接口映射关系,为了便于理解,以图6所示进行举例说明,图6为本发明代码转换方法第二实施例的接口或字段映射示意图,如图6所示,AS400系统的ISILCMSTP数据接口,可对应映射为JAVA下的IMPORT_LETTER_CREDIT_T;AS400系统的字段LCM_ILC_NBR,可对应映射为JAVA下的BIZ_NO等,以便于后续进行接口的转换或可执行程序中变量的转换。
进一步地,作为一种可实施方式,所述目标代码包括:实体,所述目标代码包括:数据传输对象,如图5所示,本实施例中,步骤S30可包括:
步骤S301:当所述待处理源码的文件类型为PF文件时,判断所述待处理源码是否为文件;
步骤S302:若是,则将所述待处理源码转换为实体。
步骤S303:若否,则将所述待处理源码转换为数据传输对象。
需要说明的是,上述PF文件(Physical File,物理文件)为AS400的特殊文件。本实施例中,当检测到待处理源码的文件类型为PF文件时,本实施例可首先判断获取的PF文件的实际类型是文件还是接口。具体可根据命名规范的第九位来识别,若第九位为P,则为文件;若为XYZ,则为接口。在确定PF文件的实际类型后,若为文件,则可对应转换为实体;若为接口,则可对应转换为数据传输对象,然后再进一步根据PF文件对应的转换逻辑进行代码转换。
需要理解的是,本实施例中PF文件的处理逻辑可以是:首先第一遍遍历所有源码,以排除无用行,只保留有效行。具体地,若字节流中存在一行代码第7位是*号或者空格,则该行代码表示注释行,可以首先把这些代码行排除,保留其中第7位是A的有效代码行。然后,本实施例可第二遍遍历剩余源码,其中,若代码行的第8-46位是空格且第47位开始是REF的,则表示该代码行引用了外部文件,可起到数据字典的效果;若代码行的第18位是R,则代表该代码行表示定义数据格式名称,对应的第20-29为表示此文件对应代码中的数据格式名;若代码行的第18位是空格,则该代码行对应的第20-29位为当前PF文件定义的字段,此时,需要把当前行号及其下面连续第8-46位是空的代码行的内容拼接在一起,对应表示这个字段引用了多个RPGLE的FUNCTIONS关键字)。
可以理解的是,若代码行的第18位是空格,可做进一步分析,若该代码行的第30位为R,则表示该字段的定义参照外部文件,此时需要找到该代码行的第46位开始之后的内容,找到REFFLD的关键字,并识别后续小括号里引用的内容,从而根据应用内容到存在数据字典的代码行中寻找对应的字段定义,设为当前字段的属性;如果字节流第30位如果是空,则表示该代码行为自定义字段,可以通过31-35位表示字段的长度,第36位表示字段类型(A:只允许单字节字符;O:允许中文等双字节字符,S、P表示数字类型等),第37-38位表示小数位数。
进一步地,作为一种可实施方式,如图5所示,本实施例中,所述目标代码包括:索引;步骤S30还包括:
步骤S311:当所述待处理源码的文件类型为LF文件时,则将所述待处理源码转换为索引。
需要理解的是,当待处理源码的文件类型为LF文件时,可直接由相关开发人员将其转换为索引。
进一步地,作为一种可实施方式,如图5所示,本实施例中,所述目标代码包括:JAVA伪代码;步骤S30还包括:
步骤S321:当所述待处理源码的文件类型为RPGLE程序时,对所述待处理源码进行遍历,获得所述处理源码中各代码行的功能类型和目标代码集合;
需要理解的是,RPGLE程序可以是上述可执行程序,且由于RPGLE程序中包含的关键字较多,而且存在较多子例程(Subroutine),子例程代码块类似于开放平台的内部函数,因此处理起来会比较复杂。因此,本实施例可对一个文件类型为RPGLE程序的源码文件要进行多次遍历处理,才能实现良好的代码转换。
进一步地,作为一种可实施方式,如图7所示,图7为本发明代码转换方法第二实施例的第四流程示意图,本实施例中,步骤S321包括:
步骤S3211:当所述待处理源码的文件类型为RPGLE程序时,根据述待处理源码中各代码行的头代码获得所述各代码行的功能类型;
步骤S3212:当任一代码行的功能类型为预设子例程类型时,获取所述预设子例程类型的代码行对应的代码片段;
步骤S3213:将获取的所有代码片段组合成目标代码集合。
需要说明的是,RPGLE程序中每一个源码文件中可包含很多的子例程,本实施例可对待处理源码进行三次遍历来实现最终的代码转换。其中,当进行第一遍遍历时,转换设备可根据各代码行的头代码获得各代码行的功能类型进行代码的初步转换,功能类型可包括:临时类型、接口定义、文件定义、子例程和/或外部子例程调用,其中,子例程和/或外部子例程即为上述预设子例程类型,第一遍遍历的目的在于识别RPGLE程序中的常量、变量、定义和/或函数并建立映射关系。具体地,在第一遍遍历的过程中,若识别到第一位是F且第二位不是*的代码行,则表示该代码行的功能类型为文件定义,转换设备可识别当前代码行中会涉及到的实体;若识别到D加空格开头的代码行,则表示该代码行为临时变量或临时对象,该代码行的功能类型为临时类型,转换设备可对该代码行进行预处理,即将识别的临时变量或临时对象放置在代码行的最前端,提高可读性,并提高后续的代码转换速度;若识别到以CSR开头的代码行,则表示该代码行为子例程,对于该类代码行,本实施例也可将对其进行抽取并解析,获取与其对应的当前子例程的所有代码片段;若识别到D/DEFINE开头的代码行,则表示引入了外部函数,需要建立一个外部函数库,以对后续的代码行进行一个映射调用转换,该代码行的功能类型为外部子例程调用,需对其对应的外部子例程进行抽取和解析,获取与其对应的外部子例程的所有代码片段。
可以理解的是,本实施例基于上述获得的当前子例程的所有代码片段和外部子例程的所有代码片段以及各当前子例程和外部子例程的名称即可构建上述目标代码集合。
步骤S322:根据所述功能类型确定所述待处理源码中的目标子例程代码行,并根据所述目标代码集合和所述目标子例程代码行对所述待处理源码进行代码替换,获得中间源码;
需要理解的是,本实施例在第一遍遍历结束后可进行第二遍遍历,并对第一遍遍历替换后的程序代码片段逐行进行解析。第一遍遍历替换后的程序代码片段一般是多个子例程的集合,此时可以对第一遍遍历获得的存在子例程的代码行或存在外部子例程调用的代码行,即上述目标子例程代码行,根据目标代码集合进行代码替换,从而将待处理源码解析成不含子例程的源代码集合,即上述中间源码。
步骤S323:基于所述功能类型和预设映射关系对所述中间源码进行关键词替换,获得对应的JAVA伪代码。
需要说明的是,在基于第二遍遍历获得中间源码后,本实施例即可对其进行第三遍遍历,并对中间源码进行逐行关键字转换,获得最终的JAVA伪代码。在实际应用中,若遍历到的关键字是EVAL,表示赋值逻辑,如果是对文件字段进行操作,则直接转译成BUILDER模式的对象赋值逻辑;如果是临时变量赋值,则直接赋值,而若遍历到的关键字是SELECT,表示后续代码是IF-ELSEIF-ELSE的关系,SELECT和后续的ENDSL两个关键字中的代码进行转译。需要理解的是,有可能SELECTL里面还有嵌套的SELECT语句,因此我们需要利用堆栈的原理,对这些代码行进行一个转换。在转换的同时,还需要注意代码行的缩进,已保持代码的整洁。IF/WHILE等关键字也同理。
本实施例中当所述待处理源码的文件类型为PF文件时,判断所述待处理源码是否为文件;若是,则将所述待处理源码转换为实体;若否,则将所述待处理源码转换为数据传输对象。当所述待处理源码的文件类型为LF文件时,则将所述待处理源码转换为索引。当所述待处理源码的文件类型为RPGLE程序时,根据述待处理源码中各代码行的头代码获得所述各代码行的功能类型;当任一代码行的功能类型为预设子例程类型时,获取所述预设子例程类型的代码行对应的代码片段;将获取的所有代码片段组合成目标代码集合;根据所述功能类型确定所述待处理源码中的目标子例程代码行,并根据所述目标代码集合和所述目标子例程代码行对所述待处理源码进行代码替换,获得中间源码;基于所述功能类型和预设映射关系对所述中间源码进行关键词替换,获得对应的JAVA伪代码。本实施例可基于待处理源码的文件类型将待转换数据库中的待处理源码批量转换为JAVA语言的伪代码,即本实施例可基于待处理源码原有的功能逻辑进行程序的平移转换,在不影响待处理源码的功能逻辑下实现代码转换。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有代码转换程序,所述代码转换程序被处理器执行时实现如上文所述的代码转换方法的步骤。
参考图8,图8为本发明代码转换装置第一实施例的结构框图。
如图8所示,本发明实施例提出的代码转换装置包括:
清单获取模块801,用于基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,所述待转换数据库在接收所述路径获取请求后,反馈与所述路径获取请求对应的对象清单;
源码获取模块802,用于对接收的所述对象清单进行遍历解析,获得各待处理对象对应的待处理源码;
代码转换模块803,用于根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码。
进一步地,作为一种可实施方式,所述源码获取模块802,还用于对接收的所述对象清单进行遍历解析,获得所有待处理对象的路径和名称;
所述源码获取模块802,还用于根据各待处理对象的路径和名称生成对应的对象获取请求发送至待转换数据库,所述待转换数据库在接收所述对象获取请求后,以字节流的形式反馈与所述对象获取请求对应的待处理源码;
所述源码获取模块802,还用于接收与所述各待处理对象对应的待处理源码。
本实施例基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,待转换数据库在接收路径获取请求后,反馈与路径获取请求对应的对象清单;对接收的对象清单进行遍历解析,获得所有待处理对象的路径和名称;根据各待处理对象的路径和名称生成对应的对象获取请求发送至待转换数据库,待转换数据库在接收对象获取请求后,以字节流的形式反馈与对象获取请求对应的待处理源码;接收与各待处理对象对应的待处理源码;根据各待处理源码的文件类型,将各待处理源码转换为对应的目标代码。因此,相比于现有的代码转换方法,本实施例可根据目标转译路径从待转换数据库,即AS400系统,中批量获取待处理源码,再根据各待处理源码的文件类型自动将待处理源码批量转换为目标代码。因此,本实施例可以字节流的形式从待转换数据库中逐项获取待处理源码,并根据各待处理源码的文件类型对其中的代码行进行自动的代码逐行解析和代码逐行转换,避免出现代码转换错误和遗漏的情况,提高代码转换的准确率。同时相较于现有的人工代码转换方法,本实施例的代码转换耗时减少,因此提高了代码转换效率。
基于本发明上述代码转换装置第一实施例,提出本发明代码转换装置的第二实施例。
在本实施例中,作为一种可实施方式,所述代码转换模块803,还用于当所述待处理源码的文件类型为PF文件时,判断所述待处理源码是否为文件;
所述代码转换模块803,还用于若是,则将所述待处理源码转换为实体。
所述代码转换模块803,还用于若否,则将所述待处理源码转换为数据传输对象。
进一步地,作为一种可实施方式,所述代码转换模块803,还用于当所述待处理源码的文件类型为LF文件时,则将所述待处理源码转换为索引。
进一步地,作为一种可实施方式,所述代码转换模块803,还用于当所述待处理源码的文件类型为RPGLE程序时,对所述待处理源码进行遍历,获得所述处理源码中各代码行的功能类型和目标代码集合;
所述代码转换模块803,还用于根据所述功能类型确定所述待处理源码中的目标子例程代码行,并根据所述目标代码集合和所述目标子例程代码行对所述待处理源码进行代码替换,获得中间源码;
所述代码转换模块803,还用于基于所述功能类型和预设映射关系对所述中间源码进行关键词替换,获得对应的JAVA伪代码。
进一步地,作为一种可实施方式,所述代码转换模块803,还用于当所述待处理源码的文件类型为RPGLE程序时,根据述待处理源码中各代码行的头代码获得所述各代码行的功能类型;
所述代码转换模块803,还用于当任一代码行的功能类型为预设子例程类型时,获取所述预设子例程类型的代码行对应的代码片段;
所述代码转换模块803,还用于将获取的所有代码片段组合成目标代码集合。
本实施例通过当所述待处理源码的文件类型为PF文件时,判断所述待处理源码是否为文件;若是,则将所述待处理源码转换为实体;若否,则将所述待处理源码转换为数据传输对象。当所述待处理源码的文件类型为LF文件时,则将所述待处理源码转换为索引。当所述待处理源码的文件类型为RPGLE程序时,根据述待处理源码中各代码行的头代码获得所述各代码行的功能类型;当任一代码行的功能类型为预设子例程类型时,获取所述预设子例程类型的代码行对应的代码片段;将获取的所有代码片段组合成目标代码集合;根据所述功能类型确定所述待处理源码中的目标子例程代码行,并根据所述目标代码集合和所述目标子例程代码行对所述待处理源码进行代码替换,获得中间源码;基于所述功能类型和预设映射关系对所述中间源码进行关键词替换,获得对应的JAVA伪代码。本实施例可基于待处理源码的文件类型将待转换数据库中的待处理源码批量转换为JAVA语言的伪代码,即本实施例可基于待处理源码原有的功能逻辑进行程序的平移转换,在不影响待处理源码的功能逻辑下实现代码转换。
本发明代码转换装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种代码转换方法,其特征在于,所述代码转换方法包括:
基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,所述待转换数据库在接收所述路径获取请求后,反馈与所述路径获取请求对应的对象清单;
对接收的所述对象清单进行遍历解析,获得各待处理对象对应的待处理源码;
根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码。
2.如权利要求1所述的代码转换方法,其特征在于,所述对接收的所述对象清单进行遍历解析,获得各待处理对象对应的待处理源码的步骤,包括:
对接收的所述对象清单进行遍历解析,获得所有待处理对象的路径和名称;
根据各待处理对象的路径和名称生成对应的对象获取请求发送至待转换数据库,所述待转换数据库在接收所述对象获取请求后,以字节流的形式反馈与所述对象获取请求对应的待处理源码;
接收与所述各待处理对象对应的待处理源码。
3.如权利要求2所述的代码转换方法,其特征在于,所述目标代码包括:实体,所述根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码的步骤,包括:
当所述待处理源码的文件类型为PF文件时,判断所述待处理源码是否为文件;
若是,则将所述待处理源码转换为实体。
4.如权利要求3所述的代码转换方法,其特征在于,所述目标代码包括:数据传输对象;所述当所述待处理源码的文件类型为所述PF文件时,判断所述待处理源码是否为文件之后,还包括:
若否,则将所述待处理源码转换为数据传输对象。
5.如权利要求2所述的代码转换方法,其特征在于,所述目标代码包括:索引;所述根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码的步骤,还包括:
当所述待处理源码的文件类型为LF文件时,则将所述待处理源码转换为索引。
6.如权利要求2所述的代码转换方法,其特征在于,所述目标代码包括:JAVA伪代码;所述根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码的步骤,还包括:
当所述待处理源码的文件类型为RPGLE程序时,对所述待处理源码进行遍历,获得所述处理源码中各代码行的功能类型和目标代码集合;
根据所述功能类型确定所述待处理源码中的目标子例程代码行,并根据所述目标代码集合和所述目标子例程代码行对所述待处理源码进行代码替换,获得中间源码;
基于所述功能类型和预设映射关系对所述中间源码进行关键词替换,获得对应的JAVA伪代码。
7.如权利要求6所述的代码转换方法,其特征在于,所述当所述待处理源码的文件类型为RPGLE程序时,对所述待处理源码进行遍历,获得所述处理源码中各代码行的功能类型和目标代码集合的步骤,包括:
当所述待处理源码的文件类型为RPGLE程序时,根据述待处理源码中各代码行的头代码获得所述各代码行的功能类型;
当任一代码行的功能类型为预设子例程类型时,获取所述预设子例程类型的代码行对应的代码片段;
将获取的所有代码片段组合成目标代码集合。
8.一种代码转换装置,其特征在于,所述代码转换装置包括:
清单获取模块,用于基于用户输入的目标转译路径生成对应的路径获取请求发送至待转换数据库,所述待转换数据库在接收所述路径获取请求后,反馈与所述路径获取请求对应的对象清单;
源码获取模块,用于对接收的所述对象清单进行遍历解析,获得各待处理对象对应的待处理源码;
代码转换模块,用于根据各待处理源码的文件类型,将所述各待处理源码转换为对应的目标代码。
9.一种代码转换设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码转换程序,所述代码转换程序配置为实现如权利要求1至7中任一项所述的代码转换方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有代码转换程序,所述代码转换程序被处理器执行时实现如权利要求1至7任一项所述的代码转换方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310947207.9A CN116954609A (zh) | 2023-07-28 | 2023-07-28 | 代码转换方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310947207.9A CN116954609A (zh) | 2023-07-28 | 2023-07-28 | 代码转换方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116954609A true CN116954609A (zh) | 2023-10-27 |
Family
ID=88452629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310947207.9A Pending CN116954609A (zh) | 2023-07-28 | 2023-07-28 | 代码转换方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116954609A (zh) |
-
2023
- 2023-07-28 CN CN202310947207.9A patent/CN116954609A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
CN110554875B (zh) | 代码转换方法及装置、电子设备、存储介质 | |
CN112540862A (zh) | 一种接口文档数据生成方法、装置、设备及存储介质 | |
CN112398809B (zh) | 协议规则转换方法、装置、计算机设备和存储介质 | |
CN113703779B (zh) | 一种跨平台的多语言编译方法和超轻量物联网虚拟机 | |
CN109947711B (zh) | 一种对ios项目开发过程中的多语言文件自动化管理方法 | |
CN115576603B (zh) | 一种获取代码片段中的变量值的方法及装置 | |
CN116954609A (zh) | 代码转换方法、装置、设备及存储介质 | |
CN115809442A (zh) | 一种反逆向代码混淆方法、装置、设备及可读存储介质 | |
CN116243901A (zh) | 一种用于前端页面多语言项目快速开发的方法及系统 | |
CN116028062A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
CN111151008B (zh) | 游戏运营数据的校验方法、装置、配置后台及介质 | |
CN113297425A (zh) | 文档转换方法、装置、服务器及存储介质 | |
CN113050935A (zh) | 生成混入对象的方法、装置、计算设备及计算机可读存储介质 | |
CN111563065A (zh) | 一种文档保存方法、装置及计算机可读存储介质 | |
CN110737431A (zh) | 软件开发方法、开发平台、终端设备及存储介质 | |
CN115796190B (zh) | 基于vue和webpack的前端国际化多语言转换方法及系统 | |
CN114003489B (zh) | 一种前端代码文件检测方法、装置及电子设备和存储介质 | |
CN111310414B (zh) | Rdf格式文件的解析方法及生成方法 | |
CN112988164A (zh) | 文本转换方法、文本转换装置、文本转换设备及存储介质 | |
CN117908952A (zh) | 一种生成接口函数定义的方法、系统及装置 | |
CN116522915A (zh) | 支持二进制数据字面值的词法分析方法、系统及响应方法 | |
CN116126300A (zh) | 代码生成方法及装置、电子设备及计算机可读存储介质 | |
CN114791810A (zh) | 数据转换方法及装置 | |
CN114201179A (zh) | 接口文档的代码转化方法、装置、终端设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |