Поскольку программа работает на удаленном сервере, вы не можете вызвать ее напрямую из RPG. Учитывая, что это веб-служба, я бы создал программу Java для работы в iSeries и вызвал ее из RPG. В настоящее время RPG может напрямую взаимодействовать с Java. Вы должны создать некоторые D-спецификации, чтобы объявить класс и прототипировать вызовы методов. В следующем примере предположим, что существует класс Java с именем ServiceCaller в пакете tools. У него есть единственный метод getServiceReply, который принимает три символьных поля и возвращает целое число.
*Define the Java class locally.
DServiceCaller S O CLASS(*JAVA:'tools.ServiceCaller')
*Class constructor. No parameters.
DnewServiceCaller PR O EXTPROC(*JAVA:
D 'tools.ServiceCaller':
D *CONSTRUCTOR)
D CLASS(*JAVA:'tools.ServiceCaller')
*GetServiceReply.
*public int getServiceReply(byte[] parm1, byte[] parm2, byte[] parm3)
DgetServiceReply PR 10I 0 EXTPROC(*JAVA:
D 'tools.ServiceCaller':
D 'getServiceReply')
D Parm1 400A CONST
D Parm2 400A CONST
D Parm3 400A CONST
Ваши спецификации RPG calc будут выглядеть примерно так:
/free
ServiceCaller = newServiceCaller();
iReply = getServiceReply(ServiceCaller:'Parm1':'Parm2':'Parm3');
/end-free
Внутри java-кода в методе getServiceReply преобразуйте эти байтовые массивы в такие строки:
sParm1 = new String(parm1);
sParm2 = new String(parm2);
sParm3 = new String(parm3);
Конечно, это слишком упрощенный пример, и потребности вашего приложения будут немного другими. Вы захотите добавить код обработки ошибок, если веб-служба не отвечает. Вы также можете использовать в своем классе методы получения и установки. Все зависит от потребностей вашего приложения и требований удаленной веб-службы.
Некоторые примечания по типам RPG к типам Java:
RPG Type Java Type
10I 0 int
3I 0 byte
5I 0 short
20I 0 long
N boolean
A byte[]
Если вы чувствуете себя особенно амбициозным, вы можете вызывать собственные HTTP-классы Java из своей RPG. Но я обнаружил, что специальная программа на Java, которая действует как промежуточное звено, написанная специально для взаимодействия с RPG, является более простым способом. Хотя RPG может разговаривать с Java, это не так красиво, как Java с Java.
Дополнительную информацию о вызове Java из RPG можно найти в Руководстве программиста ILE RPG. Версию V5R4 можно найти здесь: http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/books/sc092507.pdf
person
Tracy Probst
schedule
17.08.2009