PROGRESS 4GL - 来自外部程序的输入

时间:2013-12-13 13:47:37

标签: input external handle progress-4gl

我需要使用外部程序或程序更新程序a.p中的字段。 但我不能。 这是a.p的例子:

DEF VAR v1 AS CHAR.
DEF VAR v2 AS CHAR.
DEF VAR v3 AS CHAR.
DEF VAR v4 AS CHAR.

DEF VAR external_program AS CHAR INITIAL 'myexternalprogram.p'.

FORM 
    v1
    v2
    v3
    v4
WITH FRAME f1.


ON F2 OF v1 IN FRAME f1
DO:

    RUN VALUE(external_program) .

END.
REPEAT:
    UPDATE 
        v1
        v2
        v3
        v4
    WITH FRAME f1.
END.
=========================================
myexternalprogram.p :

INPUT FROM VALUE(txt_with_data).

如果我使用内部程序非常容易。但我需要使用外部。我不能修改程序a.p. 我用手柄尝试了一些,但我失败了......

我开始思考,这有可能吗?

感谢您的回答。

当我使用时:

MESSAGE PROGRAM-NAME(2) VIEW-AS ALERT-BOX.
MESSAGE SELF:NAME VIEW-AS ALERT-BOX.

SELF:SCREEN-VALUE = 'w1'.
APPLY "ENTER" TO SELF.

我可以跳到另一个领域,但在程序结束时。 我怎么能用类似的代码跳过我所有的领域知道帧和字段名称?

1 个答案:

答案 0 :(得分:1)

您可以通过运行批处理会话来重定向stdin:

mbpro -db dbname -p program.p< input.file

或者,使用ENTRY事件获取当前字段,检查所需字段的PROGRAM-NAME()和SELF:NAME值,并根据需要修改SELF:SCREEN-VALUE。

要更新框架中的其他字段,请使用widget-handle:PREV-SIBLING和widget-handle:NEXT-SIBLING以遍历框架的窗口小部件树。