Может ли Python общаться с Informix 4GL Forms? - PullRequest
0 голосов
/ 22 марта 2019

Я разработчик Informix 4GL.Из-за удобства обслуживания мне было поручено написать оболочку для автоматизации некоторых задач в приложении командной строки на основе форм 4GL.

Кто-нибудь знает, как это можно сделать на python?(Я возьму и другие языки, но Python мой путь к).

Моя идея заключалась в том, чтобы использовать «клавиатуру» для имитации нажатия клавиш ... (уродливо, я знаю).

Проблема в том, что, как я и предлагал, переписать все приложение на python или другом языке не получится с моим боссом.(Приложению уже около 30 лет, поэтому дбс ... это грязно)

1 Ответ

2 голосов
/ 25 марта 2019

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 (для выбора Query), 100 (для ввода некоторых данных в поле), ASCII (27) т.е. Escape Сложнее всего получить ASCII (27) в файл .txt.

С FourJs Genero вы все еще можете делать это с вашей программой Informix-4gl, если вы не добавили никаких графических элементов. Если вы добавили виджеты с графическим интерфейсом, вы также можете использовать наш инструмент автоматического тестирования (Genero Ghost Client) для запуска программы 4gl с использованием тестового сценария для ее автоматизации. Поэтому, если вы не хотите переписывать эти программы, но хотите скомпилировать и запустить их на современном сервере и т. Д., Это может быть вариантом.

...