如何在进度4GL上从内部过程持久地调用外部过程?

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

我如何持久调用外部过程以获取输出值。如果我在主块代码部分中调用它,则它仅调用一次并给出一次输出。在这种情况下,能否请您提供示例示例来帮助我?我是新来的。任何帮助都会很棒。

openedge progress-4gl
2个回答
2
投票

关于如何使用持久性过程,可能会有一些困惑。您不会重复调用外部过程。您可以使用“持久”选项调用外部过程一次,以将其保留在内存中。然后,您可以重复调用持久性过程的内部过程,以完成任务。

对象的类似调用方法的排序。

[如果您不想避免处理持久性过程句柄,则可以将持久性过程自身安装为“会话超级过程”。然后可以在不引用特定句柄的情况下运行内部过程。 (只要您具有唯一的内部过程名称,并且不希望执行“重载”之类的操作,这就会很好并且不会引起混淆。)

main.p:

/* main.p
 */

define variable i as integer no-undo.

run pp.p persistent.

do while lastkey <> asc('q'):
  run random1to10( output i ).
  message i.
  readkey.
end.

pp.p:

/* pp.p
 */

/* Install self as a session super-procedure */

session:add-super-procedure( this-procedure ).

return.

procedure random1to10:
  define output parameter x as integer no-undo.
  x = random( 1, 10 ).
end.

4
投票

main.p

DEFINE VARIABLE hp AS HANDLE NO-UNDO.
DEFINE VARIABLE cc AS CHARACTER NO-UNDO.

RUN foo.p PERSISTENT SET hp. // persistent keeps it, SET hp makes it accessible
RUN bar IN hp ( OUTPUT cc ).

DELETE OBJECT hp.

MESSAGE cc.

foo.p

PROCEDURE bar:
   DEFINE OUTPUT PARAMETER cc AS CHARACTER NO-UNDO.

   cc = "see sea":u.

END PROCEDURE.

https://abldojo.services.progress.com:443/#/?shareId=5d1f239e4b1a0f40c34b8bd3

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