我是Informix 4GL开发人员。由于可维护性,我受命编写一个包装程序来自动化基于4GL表单的命令行应用程序上的某些任务。

有谁知道如何在python上完成此操作? (我也会选择其他语言,但Python是我的首选)。

我的想法是使用“键盘”来模拟按键...(我知道这很丑)。

问题是,正如我所建议的那样,用python或另一种语言重写整个应用程序并不适合我的老板。 (该应用程序已有30年的历史了,数据库也是如此...很杂乱)

最佳答案

20年前,我将cron-jobs设置为

    fglgo program-name < keystrokes.txt


顾名思义,这里的keystrokes.txt只是键入以手动运行程序所需的击键。通常用于在深夜生成报告或启动批处理过程。

带有四个Js Genero的简短文字表明,相同的主体仍然有效。我的小测试程序是

    #! keystroketest.4gl
    MAIN
    DEFINE where_clause CHAR(100)
        OPEN FORM f FROM "keystroketest"
        DISPLAY FORM f
        MENU ""
            COMMAND "Query"
                CONSTRUCT BY NAME where_clause ON field1, field2, field3
                DISPLAY where_clause
                EXIT MENU
        END MENU
    END MAIN

    #! keystroketest.per
    SCREEN
    {
    Field 1  [f01      ]
    Field 2  [f02      ]
    Field 3  [f03      ]
    }
    END
    ATTRIBUTES
    f01 = formonly.field1;
    f02 = formonly.field2;
    f03 = formonly.field3;


    od -x keystroketest.txt
    0000000      3151    3030    0d1b    000a
    0000007

    fglrun keystroketest < keystroketest.txt
    field1='100'


因此,keystroketest.txt发送Q(选择查询),100(向字段中输入一些数据),ASCII(27)(即转义)
棘手的一点是使ASCII(27)进入.txt文件。

如果您尚未添加任何GUI小部件,那么使用FourJs Genero,您仍然可以对Informix-4gl程序执行上述操作。如果您添加了GUI窗口小部件,则还可以使用我们的自动化测试工具(Genero Ghost Client)使用测试脚本来执行4gl程序,以使其自动化。因此,如果您不想重写这些程序,而是希望在现代服务器等上编译并运行它们,则可以选择。

07-26 05:55