【问题标题】:What are the things to take care of when changing RPG Program variable sizes?更改 RPG 程序变量大小时需要注意哪些事项?
【发布时间】:2017-01-13 16:33:00
【问题描述】:

我有一个任务,我需要在几个 RPG 程序中增加一些字段的大小。我首先要做的是更改定义中的字段大小(最明显的一个)。 下一步是搜索使用更改字段的所有实例(例如分配给另一个变量或算术运算),并且如果分配给更改变量的值的变量的大小较小,则接收变量为放大。 最后一步是遵循第二步中识别的接收器变量,并识别它们所使用的任何算术运算,依此类推..

除此之外,如果还有更多需要做的事情,更有经验的程序员可以提供任何建议吗?

【问题讨论】:

    标签: ibm-midrange rpgle


    【解决方案1】:

    在我目前的职位上,我们使用字段参考文件 (FRF) 来保存我们使用的字段的定义。然后我可以从更改字段参考文件中的定义开始。如果我的 FRF 定义设置正确,并且使用得当,除了重新编译受影响的程序外,应该没什么可做的了。现在确定受影响的是另外一锅鱼。有像鹰眼探路者这样的工具可以提供巨大的帮助。否则,您将在整个代码库中手动搜索给定字段的用途。

    最后,您必须确保任何 5250 屏幕或打印文件都可以成功包含扩展字段。这可能不是问题,也可能需要重新格式化显示或报告。

    【讨论】:

    • 感谢您的评论。我对打印机文件有疑问,因为我以前从未使用过它。因此,我确实遇到了一些将修改后的字段写入较小尺寸的打印机文件字段的情况。例如,打印机文件中有如下文件: N25 TLAACR 9 2 71 TLAACR 字段的长度必须更改为 15.2 以匹配源变量。如何确认这是好的?
    • 这似乎是一个永无止境的循环!随着我越来越深入,有更多的程序和更多需要改变的领域被确定。以至于我怀疑什么是正确的??
    • RDi,您正在使用 RDi,不是吗,有一个比 RLU 更好的打印文件编辑器,或者您可以在一些方格纸上以老式的方式手动布置报告。
    • 是的,一个常用的字段比只在一个地方使用的字段更难更改。请注意,有时不同的字段在不同的程序中可能会被命名为相同的名称。
    • 我对此有进一步的疑问。考虑算术运算 TOTINVAMT += (WDQTYS * WDPERU);这里我需要将 WDPERU 的大小从之前的 9.2 增加到 15.2。所以显然 TOTINVAMT 需要增加到 15.2。我认为没有必要改变WDQTYS。这种理解正确吗?
    【解决方案2】:

    当我的库列表包含所有包含使用受影响文件的程序的库时,我会使用 DSPPGMREF PGM(*USRLIBL/*ALL) OUTPUT(*OUTFILE) OUTFILE(LIB/NAME)。查询此文件以查找所有引用受影响文件的程序。扫描这些程序以查找所有出现的受影响字段。此扫描还会将您指向引用这些字段的任何显示或打印机文件。

    【讨论】:

      【解决方案3】:

      在定义规范中的许多地方,考虑相对大小可能有什么用处:

      D ap_asp                        +4    like( APASP  )
      

      在该规范中,变量 ap_asp 被定义为 LIKE() 一个名为 APASP 的数据库字段。数据库字段定义为 3P 0,压缩十进制,三位数字,没有小数部分。 ap_asp 的编译定义则为 7P 0,即大 4 个位置(“+4”)。

      如果将来APASP 发生变化,几乎可以肯定ap_asp 不需要被触及。它的大小会在编译时自动调整。

      这并不适用于所有情况。例如,您的打印机文件字段可能无法更改。因此,仅分配给最终打印字段的 MONITOR 可能是程序中唯一需要的。

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 1970-01-01
        • 2016-02-23
        • 1970-01-01
        • 1970-01-01
        • 2016-04-09
        • 1970-01-01
        • 2015-12-06
        • 1970-01-01
        相关资源
        最近更新 更多