PDA

View Full Version : Prozedur in CLLE



Seiten : [1] 2

Hubert
21-09-21, 10:13
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

prsbrc
21-09-21, 10:30
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)

Hubert
21-09-21, 10:59
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.

Fuerchau
21-09-21, 11:22
Schau dir die Exporte mal per DSPPGM genau an.
Die Aufrufe sind Casesensitive.

BenderD
21-09-21, 11:48
_______________________ Das Modul heißt BERPRU_P.
CRTPGM PGM(MSPBH02) MODULE(MSPBH02 BER_PRU)
Hubert

... meistens hat der Blechkasten Recht!!!

prsbrc
21-09-21, 11:51
Blöde Frage... müsstest du das CLLE nicht mittels CRTBNDCL umwandeln?

BenderD
21-09-21, 12:04
Blöde Frage... müsstest du das CLLE nicht mittels CRTBNDCL umwandeln?

... einfache Antwort: Nein!!!

prsbrc
21-09-21, 12:12
Klar. Bin noch im Mittagsschlafmodus. Wenn alles schon fix fertig in Module verpackt ist dann nicht, hast recht :-)

B.Hauser
21-09-21, 12:20
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

BenderD
21-09-21, 12:37
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.