Как я могу использовать Java для вызова существующей экранной программы RPG?

У меня есть программы RPG4 с зелеными экранами, я хотел бы иметь возможность вызывать программы RPG с Java и обходить зеленые экраны.

Я провел некоторое исследование по этому поводу, и IBM OAR (Open Access: RPG) продолжает появляться. но я еще не нашел рабочего примера.

Моя цель - создать веб-приложение для сбора той же информации и передачи ее в серверную RPG.

любая помощь будет принята с благодарностью


person Lightning    schedule 08.06.2015    source источник


Ответы (3)


ИЗМЕНИТЬ

Удалить: нельзя.

Вставка: Новичку нужно будет освоить несколько новых сложных концепций, прежде чем взяться за это.

КОНЕЦ-РЕДАКТИРОВАНИЕ

По крайней мере, не без изменения программы РПГ. Веб-запросы обрабатываются серверными заданиями, которые выполняются пакетно - они не подключены к терминалу 5250. Поскольку они не подключены к терминалу, когда программа RPG пытается открыть файл отображения, он упадет, потому что нет терминала, к которому можно было бы подключиться.

Чтобы это сработало, вам придется изменить программу RPG, чтобы не пытаться отображать ввод-вывод файла, если он вызывается пакетным процессом, таким как приложение Java (хотя Java не требуется в этом веб-сценарии).

Один из способов изменить программу RPG - использовать входные параметры; если они у вас есть, то не пытайтесь открыть файл отображения, а заполните входные параметры в тех полях, где файл отображения должен был бы быть выполнен. Поскольку файл отображения также выводится из программы, вам также необходимо зарезервировать некоторые параметры для выходной информации. Это может стать очень неприятным, если задействован подфайл, так как потенциально могут быть тысячи параметров.

OAR входит в картину, потому что можно написать обработчик OAR, который продолжает использовать те же операции ввода-вывода файла отображения, но направлять фактический ввод-вывод в другом месте, например, STDIN и STDOUT для приложения типа HTTP. Джон Пэрис и Сьюзан Гантнер написали статью под названием Работа с открытым доступом к RPG, который может оказаться полезным. Он находится в электронном выпуске журнала IBM Systems Magazine за июль 2010 года.

Возможно, лучше извлечь бизнес-логику в программу RPG, реализовать ее как хранимые процедуры, которые могут быть вызваны веб-приложением через традиционный ODBC / JDBC. В RPG можно писать хранимые процедуры, так что это не так сложно, как может показаться.

person Buck Calabro    schedule 08.06.2015
comment
Бак прав в том, что для использования OAR у вас должен быть исходный код программы RPG. Также обратите внимание, что это должна быть программа RPG IV. Вам нужно всего лишь изменить пару строк кода, чтобы использовать OAR, но они должны быть изменены. Очистку экрана можно выполнить для программы, для которой у вас нет исходного кода. - person Charles; 08.06.2015
comment
Обратите внимание, что программе OAR, которая обрабатывает DSPF, не требуется подключенный сеанс рабочей станции. Я изменил OARDEMO SUBF_HBUF * МОДУЛЬ для связи с моим пользователем * MSGQ путем замены кодов операций DSPLY на вызовы процедуры dsplyMQ (), которую я написал, которая использует QMHSNDM API. Отправка SUBF_BUF * PGM в пакетную обработку работала чисто. - person user2338816; 09.06.2015
comment
Да, OAR может перенаправить ввод-вывод. Но использовать OAR не так просто, как (скажем) OVRDSPF; это требует изменений (пусть незначительных) в программе RPG. - person Buck Calabro; 09.06.2015
comment
У меня есть полный доступ к исходному коду RPG IV. Я понимаю, что мы можем добавлять в программы пармы. у нас просто есть огромное количество интерактивных RPG-программ, которые мы хотим представить в Интернете. Итак, если я смогу найти способ ограничить, насколько мы изменим существующие программы RPG, которые помогут мне прочитать статью Джона Пэрис, но я ничего не видел о перенаправлении взаимодействий с экраном. - person Lightning; 09.06.2015
comment
Это совсем другой вопрос, чем то, что было задано. См. Ответ @Charles. OAR позволяет перенаправлять ЛЮБОЙ ввод / вывод. В статье Джона конкретно не рассматриваются файлы отображения, но с чего-то нужно начинать ... - person Buck Calabro; 09.06.2015
comment
@Lightning, Бак прав, ORA позволяет перенаправить все, что угодно, всего лишь с несколькими изменениями в RPG. Но вы должны купить или построить программу-обработчик. ORA просто позволяет использовать обработчик. Взгляните на инструменты и справочник по модернизации, на который я предоставил ссылки. - person Charles; 09.06.2015
comment
Независимо от того, какие методы используются, модификации должны быть сделаны на разные вещи. (Разве OVRxxxF HANDLER () не станет отличным дополнением к командам OVRxxx?) Члены исходного кода RPG с F-спецификациями WORKSTN могут быть дублированы, так что новые OAR * PGM могут быть созданы без модификации текущего источника. По мере того, как метод будет изучен / понят, можно будет постепенно отказаться от дублирования. Часто нужно добавить всего лишь одно ключевое слово F-spec, и его можно настроить с помощью / IF DEFINED (...). HANDLER () сложнее, но полностью отделен. - person user2338816; 10.06.2015
comment
Кроме того, API виртуального терминала могут включать пакетное управление 5250 программами. Однако TNAPI Альберта Йорка было бы проще и по-другому потенциально, чтобы избежать изменения программ. И, конечно же, всегда (почти всегда) можно написать собственный telnet-клиент, запускающий интерактивные программы. (Когда спрашивают о программировании, часто сложно сказать, что нельзя.) - person user2338816; 10.06.2015
comment
С уважением, если бы общая проблема «Я хочу быстро преобразовать в Интернет тысячи программ RPG» была бы решена с помощью программиста, использующего несколько сообщений в Stackoverflow, Profound не продержался бы в бизнесе очень долго. Я отредактировал свой ответ, чтобы было понятнее. - person Buck Calabro; 10.06.2015
comment
Я думаю, здесь делаются некоторые предположения, я не ищу легкого решения, я просто ищу способ прямого ввода в rpg без использования экранов 5250. Я уже создал множество java-приложений на удаленных машинах, вызывая back-end RPG на iseries, используя jt400.jar. этот метод сработал для нас очень хорошо. но если я могу, как прямой ввод в программы, не выпотрошив экраны, это сэкономило бы некоторое время. Я читал во многих местах, что это можно сделать, но нет реальной информации о том, как это сделать. - person Lightning; 10.06.2015
comment
И, что более уважительно, я слегка дергаю за тебя, Бак, потому что прошло 3-4 года с тех пор, как мы общались напрямую. Этот идентификатор пользователя должен был быть временным, как и анонимность. Но быть неизвестным, учитывая другие требования времени, было кстати. В любом случае, вы ответили хорошо; и последнее изменение сделало его лучше на будущее. - person user2338816; 11.06.2015

OAR, вероятно, будет вашим лучшим выбором ....

Однако каждый пример, который я видел, сводился к созданию обработчика для замены файла принтера (PRTF) или физического файла (PF).

Замена файла дисплея (DSPF) - это совсем другая игра. В первую очередь потому, что протокол 5250 является «интеллектуальным» протоколом; в отличие от протоколов бессмысленных символьных типов, таких как используемые в ANSI / VT100.

Конечно, это возможно, и это было сделано. Если у вас есть один базовый экран, возможно, вы сможете это сделать. Но для сложного приложения с несколькими экранами и подфайлами вам, вероятно, придется нелегко. Особенно, если у вас нет глубокого понимания протокола 5250.

Я бы порекомендовал вам взглянуть на один из наборов инструментов поставщика, предназначенный для использования OAR для замены экрана 5250 веб-страницей. Эти поставщики потратили годы и усилия на разработку необходимого обработчика.
http://www.profoundlogic.com/solutions/rpg-application-modernization.html
https://asna.com/us/products/wings

Возможно, вам пригодится следующая публикация:
Модернизация приложений IBM i

Наконец, обратите внимание, что ROA - не единственный вариант. Существует более старая техника, «очистка экрана», при которой ваше приложение в основном эмулирует терминал 5250. Это проще, чем полный обработчик ROA, но и конечный результат также проще. У IBM есть собственный инструмент, HATS. И, например, «Глубокая логика» также имеет инструмент, GENIE. Но вы могли бы создать свой собственный скребок экрана, начать с TN5250J с открытым исходным кодом. Но даже это было бы нетривиально.

person Charles    schedule 08.06.2015

Вы должны использовать сочетание parsin json на iseries (это устраняет проблемы с подфайлами ), один хороший фреймворк javascript (я использовал Extjs) и Сервер Apache для I.

Я разработал структуру служб HTTP, основанную на параметрах json, отправляемых непосредственно из браузера с использованием Ajax, обрабатывая каждый запрос любой программой на языке ILE (в основном rpgle) и возвращая результат в чистом json, созданном внутри программы. При таком подходе вы просто отправляете / получаете бизнес-данные, оставляя интерфейс на фреймворке Javascript.

Надеюсь это поможет. Свяжитесь со мной, если вам понадобится дополнительная помощь.

person Jairo R. Flores    schedule 08.06.2015