Ibm midrange RPGLE中整数类型的标准选择是什么?

Ibm midrange RPGLE中整数类型的标准选择是什么?,ibm-midrange,rpgle,Ibm Midrange,Rpgle,当我在RPGLE程序中需要一个整数时,我应该选择什么数据类型?我说的是一个与数据库中的任何字段都不对应的整数,它只是一个普通的通用整数——相当于Java中的int。您可以使用二进制(有符号整数)(B)或整数(无符号整数)(I)类型。您可以使用数字值3(1字节)、5(2字节)、10(4字节)或20(8字节)来指定大小。Java int的等效值为10B 以下是ILE RPG程序员参考指南中的图表: byte - 3I 0 (1-byte integer) short- 5I 0 (2-byt

当我在RPGLE程序中需要一个整数时,我应该选择什么数据类型?我说的是一个与数据库中的任何字段都不对应的整数,它只是一个普通的通用整数——相当于Java中的
int

您可以使用二进制(有符号整数)(B)或整数(无符号整数)(I)类型。您可以使用数字值3(1字节)、5(2字节)、10(4字节)或20(8字节)来指定大小。Java int的等效值为10B

以下是ILE RPG程序员参考指南中的图表:

byte -  3I 0  (1-byte integer)
short-  5I 0  (2-byte integer)
int  - 10I 0  (4-byte integer)
long - 20I 0  (8-byte integer)

我最常使用整数的10i0形式。您会发现它也用于大多数API调用。

注意,10B和10I并不完全等效。10B可容纳10位十进制数字值,即最多9999999,而10I可容纳2147483647。(从技术上讲,你不能有一个“10B”。最大值是9B。)“B”数据类型的唯一真正用途是当需要小数位数时。否则,它们可能永远不应该被使用。此外,integer是“I”数据类型,并且是有符号的;无符号是“U”。顺便说一句,“B”表示的“整数”可能比“P”或“S”多。B只是表示内存格式。对于“B”,就像“S”或“P”一样,“整数”表示的是指定(0)个小数点位置。“I”和“U”数据类型只允许(0)个小数点位置,直接用作“整数”“值。@user2338816是正确的,(B)inary指数据的存储方式。这是最接近RPG III的整数类型。今天不应该使用它。而是使用RPG IV的true(I)nteger和(U)nsigned Integer类型。有趣的小贴士,(B)一次值转换为(P)确认的十进制值进行数学运算;然后回到第二节。而真正的整数类型则直接使用。注:令人困惑的是,当指定0位小数时,DDS文件规范中使用的二进制类型是一个真整数,对应于RPG IV(I)nteger类型