View Full Version : RPG und Modul
Hallo zusammen,
wieweit besteht die Möglichkeit, von RPG aus mit ILE-Modulen zu arbeiten?
vielen Dank und Gruss
stoerfang
Moin,
die Möglichkeit besteht :) Allerdings benötigst du eine RPGLE-Quelle. In diesem Programm kannst du dann eine Procedure aus einem Modul aufrufen (Procedureheader muss im Programm angegeben werden). Wenn du das Programm erstellst, musst du angeben wo sich das Modul befindet. Entweder bindest du das Modul beim Erstellen des Programms direkt über einen Verweis im Parameter MODULE oder das Modul ist in ein Serviceprogramm (dies ist zu bevorzugen!) eingebunden. In diesem Fall kannst du das Serviceprogramm beim erstellen des PGM angeben.
Gruß
Sascha
danke erstmal,
also, wenn ich dich richtig verstanden habe, muss aus dem RPG ein ILE-PGM aufrufen (über CALL ) , in dem ich dann ein MODUL aufrufe....
gruss stoerfang
Hi,
also du brauchst in deinem Programm was die Procedure aufrufen soll den Procedureheader (D MeineProc PR).
Um die Procedure des Moduls aus einem anderen Programm aufrufen zu können, MUSS! die Procedure in der Zeile "B MeineProc" das Keyword "Export" haben. Dann sollte es eigentlich ein Problem sein die Procedure aus dem Modul aufzurufen.
Falls doch poste doch mal die Meldung.
Gruß
Sascha
also,
das ILE-Modul bzw. das Service-PGM besteht.
wie sage ich im RPG, dass er ein Modul aufrufen soll, da es ja keine D-Bestimmung in RPG gibt...
gruss stoerfang
Hi,
Wenn in der Quelle zu Deinem Modul das Schlüssel-Wort NOMAIN nicht in den H-Bestimmungen angegeben wurde, kannst Du die Quelle auch über 14 in ein Programm umwandeln.
Du hast also sowohl ein Modul (welches Du in ILE verwenden kannst) als auch ein Programm welches Du mit CALL aus einem RPGIII oder auch aus einem CL-Programm aufrufen kannst. Solltest Du aus dem Modul ein Service-Programm gemacht haben, wird natürlich das Service-Programm in ILE verwendet. Das Modul kannst Du dann löschen, da es nicht mehr gebraucht wird. Ob in ILE das Service-Programm oder das Programm aufgerufen wird, hängt davon ab, ob im Prototyp das Schlüssel-Wort EXTPGM oder EXTPROC angegeben wurde. Wurde EXTPGM angegeben erfolgt ein dynamischer Programm-Aufruf, bei EXTPROC oder falls keines der beiden Schlüssel-Worte angegeben wurde erfolgt ein statischer Prozedur-Aufruf.
Für den Aufruf aus RPGIII wird natürlich keine D-Bestimmung und auch kein Prototyp benötigt. Einfach das Programm über CALL mit den erwarteten Parametern aufrufen.
Wenn allerdings NOMAIN in den H-Bestimmungen angegeben wurde, funktioniert dies allerdings nicht. Dann brauchst Du für JEDE exportierte Prozedur ein Wrapper-Programm (wie bereits zuvor beschrieben).
Birgitta
Das geht im RPG überhaupt nicht.
RPG kann ausschließlich OPM-Call's !
Möchte man solche Konstrukte verwenden, muss das RPG eine ILERPG aufrufen mit den Parametern des gew. Prozedurnamens und den dazugehörenden Parametern.
Dieses ILERPG kann dann entweder per SELECT/WHEN die gewünschte Prozedur statisch aufrufen oder mittels Benders Freeware die Prozedur dynamisch ermitteln und aufrufen.
Hallo,
bei NoMain-Modulen wäre dann der Mindestaufbau so.
Modul:
H Nomain
P MeineProcedure B Export
D MeineProcedure PI
//Mach was
P MeineProcedure E
rufendes Programm:
D MeineProcedure PR
C CallP MeineProcedure
Ok, vielen Dank an alle !!!
... tja, dann müssen wohl meine Kollegen langsam auf "ILE umsteigen..." :)
Gruss stoerfang
sorry, aber nochmal eine grundlegende Frage:
ist es besser, einzelne Module mit einzelnen Prozeduren zu haben und diese entsprechend nach bestimmten Kriterien zu einem Serviceprogramm zusammenzufassen,
oder
ein Modul mit mehreren Prozeduren und das dann in ein Serviceprogramm einzubinden.
Gruss stoerfang