Я разработчик Informix 4GL. Из-за ремонтопригодности мне было поручено написать оболочку для автоматизации некоторых задач в приложении командной строки на основе форм 4GL.
Кто-нибудь знает, как это можно сделать на питоне? (Я возьму и другие языки, но предпочитаю Python).
Моя идея заключалась в том, чтобы использовать «клавиатуру» для имитации нажатия клавиш... (уродливо, я знаю).
Проблема в том, что, как я и предлагал, переписать все приложение на питоне или другом языке не согласуется с моим боссом. (Приложению около 30 лет, так же как и dbs... это грязно)
20 лет назад у меня были настроены cron-jobs как
fglgo program-name < keystrokes.txt
где keystrokes.txt, как следует из названия, были просто нажатиями клавиш, которые необходимо было ввести для запуска программы вручную. Обычно это использовалось для создания отчетов или запуска пакетных процессов посреди ночи.
Быстрый текст с Four 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), т.е. Escape Хитрость заключается в том, чтобы ввести ASCII(27) в файл .txt.
С FourJs Genero вы все еще можете делать то же самое с вашей программой Informix-4gl, если вы не добавили какие-либо виджеты с графическим интерфейсом. Если вы добавили виджеты с графическим интерфейсом, вы также можете использовать наш инструмент автоматического тестирования (Genero Ghost Client) для выполнения программы 4gl с использованием тестового сценария для ее автоматизации. Поэтому, если вы не хотите переписывать эти программы, но хотите скомпилировать и запустить их на современном сервере и т. д., это может быть вариантом.