有没有使用线性主程序在 RPG 中编写用户定义表函数的示例?

问题描述 投票:0回答:1

我一直在根据 Brigitta Houser 的内容丰富的文章“UDTF 的力量”编写用户定义表函数作为 RPG 循环程序。表函数的性质,即在每次获取时(至少)多次调用它们,似乎非常适合循环主程序,因为您可以使用“RETURN”退出而无需设置指示符“*LR” ' 打开,您的程序将不会被卸载,并且任何模块级变量仍将具有其值。

我很好奇是否建议将它们编写为线性主程序,根据 C 语言示例,这应该是可能的。这可能是一个没有循环逻辑的较小程序,甚至可以作为过程而不是独立程序存储在服务程序中,但我不清楚如何在不卸载程序的情况下退出该过程(我认为“返回”) ' 也会在这种情况下卸载它,而不仅仅是退出)。我也不清楚如何在调用之间将数据保存为静态变量,但最终会导致变量的实际卸载。

一个例子可能比任何解释更能阐明其工作原理的细节,但我找不到一个。这可能是不明智的吗?

user-defined-functions ibm-midrange rpgle
1个回答
0
投票

当然,您可以使用线性主程序或服务程序......

您忽略的一点是,直到激活组结束后才会卸载 ILE 代码。

因此,即使使用循环 main(以 LR *ON 返回),程序仍然会加载。看起来好像它被卸载了,因为如果你再次调用它,循环代码会重置东西。

请注意,在“OPM 兼容模式”下运行的 RPG IV 程序实际上会被卸载。 “OPM 兼容模式”意味着使用(恕我直言,名字很糟糕)

DFTACTGRP(*YES)
进行编译,因此不能使用任何过程调用;包括任何本地程序。认为 RPG III 源代码通过 CVTRPGSRC 运行,并添加了一些 RPG IV 操作码、语法,甚至添加了自由格式代码。但仍然使用子例程而不是子过程。

© www.soinside.com 2019 - 2024. All rights reserved.