我是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程序,以使其自动化。因此,如果您不想重写这些程序,而是希望在现代服务器等上编译并运行它们,则可以选择。