Обадих се на програма cobol от rpgle. Искам да върна стойност от програмата cobol на rpgle. Аз съм нов за тези и не съм сигурен дали правя по правилния начин. Може ли някой да ми обясни процедурата за това. по-долу е командата, която използвах в rpgle, за да се обадя на cobol.
callp prog(id:name);
и в кобол, използван
working storage section.
linkage section.
01 newid.
01 newname.
procedure division using newid, newname.
Ако стойностите се редактират в cobol, стойността ще бъде newid
и newname
да се предава автоматично на RPG или има ли друг начин? как да предадете стойността в cobol обратно на rpgle.
Отговори:
4 за отговор № 1Имате право основите. Това би трябвало да е наред, стига да предоставяте съответстващи дефиниции на полета и в двете програми. В секцията за свързване на ILE COBOL трябва да добавите дефиницията на имената на вашите параметри. Ти нямаш PIC
или LIKE
клауза.
Във вашата ILE RPG програма ще трябва да дефинирате прототип за повикване към вашия COBOL код. Определенията на параметрите в прототипа трябва съответстват на формата на параметрите в COBOL. Ако използвате едностранно опаковани, двойки или двоични числа от едната страна, тогава трябва да използвате същото за този парма от другата.
(виж http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzase%2Fsc092540419.htm)
Например, в RPG PROG1 обикновено имате нещо като:
D someID 7p 0
D someName 10a
D addInfo PR EXTPROG("PROG2")
D 7p 0
D 10a
callp addInfo (someID:someName);
// or omit the optional callp opcode
addInfo (someID:someName);
След това в COBOL PROG2 може да имате нещо като:
working storage section.
linkage section.
01 newid pic s9(7) packed-decimal.
01 newname pic x(10).
procedure division using newid, newname.
Вашата най-проста опция в този момент е да компилиратеи двете като индивидуални програми. Но също така е възможно да използвате техники ILE, за да комбинирате процедурата COBOL в крайния обект на програмата RPG. Но освен това за друг път.