- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2005 t 6 $June 2005? ? ? T ?Computer Engineering? 31 Q ? 12 ?? 12Vol.31·???$????·
2005 t 6 $
June 2005
? ? ? T ?
Computer Engineering
? 31 Q ? 12 ?
? 12
Vol.31
·???$????·
$?щ?:1000—3428(2005)12—0067—03
$????:A
$????:TP311
自动化的
Cobol 2 Java
遗产代码迁移技术
石学林,张兆庆,武成岗
(中国科学院计算技术研究所,北京 100080)
摘 要:随着下一代网格环境的来临,如何将遗产代码迁移到新的平台成为一个亟待解决的问题,该文提出了一种将 Cobol 源代码自动地,
功能等价地迁移到 Java 平台的方法。
关键词:Cobol 2 Java;遗产代码;源源变换;类型转换;控制流变换
Legacy Code Automatic Migrating Technology of Cobol 2 Java
SHI Xuelin, ZHANG Zhaoqing, WU Chenggang
(Institute of Computing Technology, CAS, Beijing 100080)
【Abstract】How to migrate the legacy code to the next generation platform is becoming a problem to solve. This paper presents an automatic
method to translate Cobol source to Java source with functional equivalence.
【Key words】Cobol 2 Java; Legacy code; Source-to-source; Type conversion; Control flow translation
Cobol 语言在数据类型和控制结构的设计上都和现代语
言有显著的不同,怎样跨越这种巨大差异将遗产代码自动化 地、功能等价地迁移到新的平台成为遗产代码迁移必须首要 解决的基本问题[3]。
本文提出了一种基于语言转换的自动化源-源变换方法 将采用 Cobol 语言编写的软件自动迁移到 Java 平台,采用此
方法,我们实现了一个自动化的 Cobol 2 Java 翻译器—— C2J,并且成功地将近 400 万行源代码的真实商用 Cobol 程 序无人工干预、功能等价地转换到 Java 平台。
1 C2J 翻译器的转换过程
perform 语句;最后从 IR2 生成在 C2J 平台上运行的 Java 源
代码。整个系统的框架如图 1 所示,图中实线箭头表示控制 流方向,虚线箭头表示数据流方向。
2 数据类型转换技术
由于 Cobol 语言诞生时代的局限性以及面向商业应用的
特定性导致了 Cobol 语言在数据对象的定义和使用上和现代 语言具有很大的不同。Cobol 语言采用描述性的语句来描述 程序中将要用到的每一个数据,它决定了数据在内存中的编 码方式,定浮点特性,数据宽度,数据范围和精度等特征,
一个典型的 Cobol 数据声明如下:
77 AMOUNT PIC S9(8)V99 USAGE IS COMP-3 SIGN IS LEADING SEPARATE CHARACTER.
在上面的例子中程序定义了一个带符号的定点数据,整
数部分有 8 位,小数部分有 2 位,数据使用 BCD 码表示, 符号位放在数据前面,并且在内存中占据一个独立的字节存 储。由 BCD 编码方式可知,两个十进制位占据 1B,9(8)V99
占 5B,加上一个独立的符号位字节,整个数据宽度为 6。V
表示小数点的位置,从而数据精度为 0.01。从以上的 Cobol 数据声明方式可以看出,它显然不能对应到现代语言的 int 数据类型,因为它带有小数部分,另外它也不能对应到 float 类型,因为 float 类型是一个浮点数据,数据的精度根据小数 点的位置而变,而不是一个确定的定点类型。鲁莽地把 Cobol
中描述的数字数据根据其表示的数据范围对应到现代语言
的 char、, short、 int、long 等基本数据类型将是粗糙的,非 功能等价的,不能保证 Cobol 数据运算的精度要求。忽略这 些类型特征上的差异将不能保证程序转换语义的正确性,反
Cobol 源程序
IR1
IR2
C2J 平台
Java 源程序
图 1 C2J 翻译器结构图
在我们实现的 C2J 翻译器中,整个翻译过程分为 4
原创力文档


文档评论(0)