我有一个作业,我需要在几个RPG程序中增加许多字段的大小。我首先要做的是更改定义中的字段大小(最明显的一个)。下一步是搜索使用已更改字段的所有实例(例如分配给另一个变量或算术运算),如果变量的大小较小,则接收变量将放大。最后一步是遵循第二步中确定的接收器变量,并确定它们使用的任何算术运算等等。
除此之外,如果还有什么需要做的,更有经验的程序员可以提供任何建议吗?
在我目前的职位上,我们使用字段引用文件(FRF)来保存我们使用的字段的定义。然后,我可以从更改字段引用文件中的定义开始。如果我的 FRF 定义设置正确且使用正确,那么除了重新编译受影响的程序之外,应该没有什么可做的了。现在确定受影响的是另一壶鱼。有像鹰眼探路者这样的工具可以提供巨大的帮助。否则,您将手动搜索整个代码库以查找给定字段的使用。
最后,您必须确保任何 5250 屏幕或打印文件都可以成功包含扩展字段。这可能不是问题,或者可能需要重新格式化显示或报表。
的库列表包含包含使用受影响文件的程序的所有库时,我会使用 DSPPGMREF PGM(*USRLIBL/*ALL) OUTPUT(*OUTFILE) OUTFILE(LIB/NAME)。查询此文件以查找引用受影响文件的所有程序。 扫描这些程序以查找受影响字段的所有匹配项。 此扫描还会将您指向引用这些字段的任何显示或打印机文件。
在定义规范中的许多地方,请考虑相对大小调整可能有何用处:
D ap_asp +4 like( APASP )
在该规范中,变量ap_asp被定义为名为APASP的数据库字段LIKE()。数据库字段定义为 3P 0,包含三位数字的打包十进制,没有小数。ap_asp的编译定义是 7P 0,它大了四个位置 ("+4")。
如果APASP在未来发生变化,几乎可以肯定ap_asp不需要接触。它的大小将在编译时自动调整。
这并不适用于所有情况。例如,您的打印机文件字段可能无法更改。因此,仅用于分配给最终打印字段的监视器可能是程序中唯一需要的监视器。