【问题标题】:What should be my standard choice of integer type in RPGLE?我在 RPGLE 中整数类型的标准选择应该是什么?
【发布时间】:2009-06-19 09:37:01
【问题描述】:

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

【问题讨论】:

    标签: ibm-midrange rpgle


    【解决方案1】:

    这是 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)
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 请注意,10B 和 10I 并不完全相同。 10B 可容纳 10 个十进制数字值,即最多 999999999,而 10I 最多可容纳 2147483647。(从技术上讲,您不能有“10B”。最大值是 9B。)“B”的唯一真正用途数据类型是需要小数位时。否则,它们可能永远不应该被使用。此外,整数是“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)inary 值被转换为(P)acked 十进制值以进行数学运算;然后回到(B)inary。而直接使用真正的整数类型。 注意:令人困惑的是,当指定 0 位小数时,DDS 文件规范中使用的二进制类型是一个真正的整数,并且对应于 RPG IV (I) 整数类型
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-28
      • 2010-10-22
      相关资源
      最近更新 更多