View Full Version : Prozedur in CLLE
Guten Tag,
wir haben ein Modul zur Prüfung, ob ein Benutzer bestimmte Funktionen benutzen darf. Es ist in RPGLE geschrieben. Das Modul heißt BERPRU_P. Darin ist die Prozedur ber_pru.
P ber_pru b export
Diese möchte aus aus einem CLLE Programm aufrufen. Ich erstelle das CLLE Modul und versuche dann dann das Programm zu erstellen.
CRTPGM PGM(MSPBH02) MODULE(MSPBH02 BER_PRU)
Dabei erhalte ich den Fehler
CPD5D02
Definition für Symbol 'BER_PRU' nicht gefunden.
Kann mir jemand sagen, was ich ändern kann/muss, um das Programm zu erstellen?
Herzlichen Dank im Voraus
Hubert
Ich habe das immer mit einer BNDDIR in ein CLLE eingebunden. Versuch es mal damit.
DCLPRCOPT LOG(*NO) USRPRF(*OWNER) AUT(*EXCLUDE) DFTACTGRP(*NO) ACTGRP(*NEW) +
BNDDIR(MYLIB/MYBND)
Leider nicht.
Ich habe ein BNDDIR angelegt:
Objekt Art Bibliothek
MSPBH02 *MODULE *LIBL
BER_PRU *MODULE *LIBL
und versucht, das Programm zu erstellen:
CRTPGM PGM(MSPBH02) MODULE(*PGM) ENTMOD(*PGM) BNDDIR(MSPBH02)
Das Ergebnis ist das gleiche.
Schau dir die Exporte mal per DSPPGM genau an.
Die Aufrufe sind Casesensitive.
_______________________ Das Modul heißt BERPRU_P.
CRTPGM PGM(MSPBH02) MODULE(MSPBH02 BER_PRU)
Hubert
... meistens hat der Blechkasten Recht!!!
Blöde Frage... müsstest du das CLLE nicht mittels CRTBNDCL umwandeln?
Blöde Frage... müsstest du das CLLE nicht mittels CRTBNDCL umwandeln?
... einfache Antwort: Nein!!!
Klar. Bin noch im Mittagsschlafmodus. Wenn alles schon fix fertig in Module verpackt ist dann nicht, hast recht :-)
Module können nur direkt gebunden werden, wenn es sich bei der aufzurufenden Prozedur um die Main-Procedure handelt (globale C-Bestimmungen).
Bei sonstigen exportierten Prozeduren, muss das Modul zunächst in einem Service-Programm gebunden werden.
Wenn dann das Service-Programm in einem Binderverzeichnis eingetragen ist, kann man das Programm direkt mit CRTBNDCL erstellen.
Voraussetzung ist allerdings, dass das Programm nicht in der Default-Aktivierungsgruppe erstellt wird und dass das Binder-Verzeichnis angegeben wird. Beides kann man beim CRTBNDCL angeben. Besser ist allerdings, man hinterlegt die Aktivierungsgruppe und das Binder-Verzeichnis im DCLPRCOPT-Befehl im CL-Quellcode.
... ich würde allerdings eine benannte Aktivierungsgruppe der Aktivierungsgruppe *NEW vorziehen.
Birgitta
Module können nur direkt gebunden werden, wenn es sich bei der aufzurufenden Prozedur um die Main-Procedure handelt (globale C-Bestimmungen).
Bei sonstigen exportierten Prozeduren, muss das Modul zunächst in einem Service-Programm gebunden werden.
Birgitta
... noch jemand im Mittagsschlafmodus?!
Ich sage nur: Bind by Copy, bind by Reference.