[发明专利]翻译设备、翻译方法和程序存储介质有效
申请号: | 201080013814.9 | 申请日: | 2010-03-26 |
公开(公告)号: | CN102365622A | 公开(公告)日: | 2012-02-29 |
发明(设计)人: | 江口淳 | 申请(专利权)人: | 日本电气株式会社 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 王波波 |
地址: | 日本*** | 国省代码: | 日本;JP |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 翻译 设备 方法 程序 存储 介质 | ||
技术领域
本发明涉及翻译设备、翻译方法和存储介质,适于将以第一编程语 言描述的、能够描述用于保持变量的重叠存储区域的程序翻译为以第二 编程语言描述的、同时分解重叠变量存储区域的程序。
背景技术
在工业界,使用各种类型的编程语言。随着这些年使用许多程序, 在某种程度上确保了这些程序的操作稳定性。
在这些程序中,存在很多以存储区域严重受限的时代创建的编程语 言描述的程序。为了节约存储区域并转换一些变量类型,这些编程语言 中的许多都允许特定变量和另一变量重叠地存储在相同存储区域的描 述。
例如,在C语言中,声明诸如以下联合(union)的描述被用于将表 示公历年的整数和以字符串表示公历年的字符数组重叠地分配给由 RAM(随机存取存储器)实现的存储器:
union{int i;char s[5];}y;
变量y用于存储年。期望该描述将整数变量y.i和字符数组变量y.s 分配给重叠区域,并且将公历年以整数值存储在y.i中并以字符串值存储 在y.s中。
如果针对16比特CPU(中央处理单元)创建该程序,则通常以16 比特表示整数int i,即,2个字节,而以5个字节表示字符数组char s[5]。 在这种情况下,通过与字符数组变量y.s的头两个字节y.s[0]、y.s[1]重叠, 将整数变量y.i分配给存储区域。
假设针对字节序列采用小字节序。为了将整数值赋值为公历年,执 行以下等式:
y.i=2009;
这里,由于以下等式为真:
2009=217+7×256,
通过执行整数值的上述赋值,y.s[0]变为217,y.s[1]成为7。
同时,C语言针对字符串采用ASCIIZ格式,该格式使用值0作为 终结符。为此,特别地当把整数赋值给y.i之前通过如下的等式写入长度 为0或1的ASCIIZ字符串时,
strcpy(y.s,“”);
或
strcpy(y.s,“a”);
终结符被对y.i的赋值所重写。
结果,y.s成为非法的ASCIIZ字符串。
此外,7是ASCII字符中BEL的字符码,217超出ASCII字符的范 围,它是一字节的片假名‘ru’的码,而不是程序员意图所指的‘表示公历 年的字符串’。
此外,尽管如果执行以下等式:
strcpy(y.s,“2009”);
字符数组y.s是有效的ASCIIZ字符串并存储程序员所期望的值,但是由 于‘2’指示字符码50,‘0’指示字符码48,整数y.i具有值
50+48×256=12338,
这不是适于公历年的值。
用于表示整数的其它方法包括:利用比特数组本身并将整数表示为 1的补数或2的补数的方法;使用压缩二进制编码的十进制等式的方法, 其中以半个字节(nibble)存储1个十进制数值(0-9);以及使用分区二 进制编码的十进制等式的方法,该等式使用相应的字符码来表示1个十 进制数值,并可以被解释为整数和字符数组。
例如,在COBOL语言中,不同于C语言,独立于CPU的规范和特 征等,通过以1个字节存储一个数位,针对四位分区二进制编码的十进 制保留4字节区域。
此外,REDEFINES子句用于将针对分区二进制编码的十进制的存 储区域和针对字符串变量的存储区域重叠。
因此,为了以利用重新定义字段的声明的COBOL语言来描述以上 的C语言程序,使用以下描述:
01 Y
02 YI PIC Z(4)
03 YY REDEFINES YI
04 YS PIC X(4)
在添加了这种声明的COBOL语言程序中,如果执行以下等式:
MOVE 2009TO YI,
则分配字符‘2’的字符码作为重叠存储区域中的字符数组变量YS的第一 字符;分配字符‘0’的字符码作为第二字符;分配字符‘0’的字符码作为第 三字符;以及分配字符‘9’的字符码作为第四字符。
结果,在这种情况下,字符数组变量YS和整数变量YI具有有效值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于日本电气株式会社,未经日本电气株式会社许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201080013814.9/2.html,转载请声明来源钻瓜专利网。