-
Dein Fehler ist, dass er das Serviceprogram QZDMMDTA nicht findet.
Das hat mit deinen Programmen ja erst mal nichts zu tun.
Schau also mal, wo du das Programm aufrufst bzw. welche Prozedur in diesem Programm.
-
Ich frage mich, wie er auf den Namen kommt?
Muss ich in dem aufrufenden Programm das Serviceprogramm angeben?
Vllt bei der Wandlung oder so etwas?
-
Ich glaube, dein EXTPROC ist falsch. Das darf nicht der Name der Prozedur im Serviceprogramm sein. Es muss der Name des Programmobjektes sein, in dem sich die exportierte Prozedur befindet.
Also nicht:
dcl-pr D1KO_Chain ind extproc('PR_D1KO_CHAIN');
DS_D1KO likeds(DS_ARTS);
Lock char(1) const;
end-pr;
sondern:
dcl-pr D1KO_Chain ind extproc('D1KO000');
DS_D1KO likeds(DS_ARTS);
Lock char(1) const;
end-pr;
Dieter
-
Dankeschön,
hab das ausprobiert, es läuft aber auf das Gleiche raus
Objekt QZDMMDTA der Art *SRVPGM in Bibliothek QSOC nicht gefunden.
Definition für Symbol 'PR_D1KO000' nicht gefunden.
-
Wie heißt denn nun deine Prozedur?
EXTPROC(Prozedurname) im rufenden und EXPORT(Prozedurname) im gerufenen Programm müssen genau übereinstimmen.
Zur Compilezeit wird das Programm gebunden. Sind Importe (wie EXTPROC) nicht vorhanden, kann das Objekt eigentlich nicht erstellt werden.
Außerdem fällt mir auch auf, dass deine DCL-PROC und DCL-PI unterschiedlich sind.
DCL-PROC definiert den Prototyp incl. Parameter der vom Compiler gebunden wird.
DCL-PI definiert die Aufrufschnittstelle der Prozedur selber.
Eigentlich sollte hier der Compiler schon meckern, wenn der selbe Name unterschiedlich definiert ist.
Ggf. ist das der Fluch des Free-Compilers, dass er da nicht mehr zurechtfindet?
-
ich werde die Groß und Kleinschreibung anpassen.
PR und PI passen jedoch zusammen, die Datenstrukturen heißen zwar unterschiedlich, sind aber identisch. Das verwende ich öfter in so einer Kombination.
Ich verwende DS_D1KO likeds(DS_ARTS); und DS_Input likeds(DS_Datei);
nur mit unterschiedlichen Namen, da das eine Programm generiert wird.
Hatte das ganze schon einmal lauffähig, hab es heute aber Stundenlang nicht hinbekommen
(vermutlich aufgrund der Wandlungsart (Da bin ich aber noch dran)).
-
Ich bezog mich nur auf diese Definition im ersten Post, da fehlte halt die komplette Definition.
Diese muss auch im gerufenen Programm übereinstimmen.
dcl-proc pr_D1KO_chain export ;
-
achso, ja das stimmt.
Hab ich vllt nicht gut aufgeschrieben.
Ich hab mich jetzt doch für ein Bindeverzeichnis entschieden.
Es wäre sonst kompliziert, sich jedes Mal zu merken,
mit welchem Befehl erstellt wurde und
das nächste Serviceprogramm zu ergänzen.
Da finde ich die Bindeverzeichnismethode einfacher.
-
D*B ist da massiv anderer Meinung wobei ich dir da eher zustimme.
BNDDIR's setzen eben Genauigkeit voraus.
-
Das sind zwei verschiedene Fehler, wobei wahrscheinlich nur der zweite ein Problem ist.
Objekt QZDMMDTA der Art *SRVPGM in Bibliothek QSOC nicht gefunden.
Definition für Symbol 'PR_D1KO000' nicht gefunden.
-
Wie erstelltst du denn dein Programm, dass das Service-Programm aufrufen soll?
Dort musst du die Module alle mit aufführen.
Arbeitest du nicht mein einem BNDDIR, musst du dein Programm in 2 Schritten erstellen:
1. CRTRPGMOD (bzw. dei SQL-Variante)
2. CRTPGM ... MODULE( Liste der Module ) ... BNDSRVPGM( Liste der Serviceprogramme)
Bei der Fehlermeldung mal F9 drücken und schauen, an wen denn die Nachricht ging.
Per DSPSRVPGM ggf. mal die Exporte prüfen, hier ist Großkleinschreibung wichtig.
BNDDIR's vereinfacht zwar die Sache, macht es allerdings ein wenig komplexer.
-
F9 sagt:
Von Programm . . . . . . . . . : QBNBIND
Von Bibliothek . . . . . . . : QSYS
Von Modul . . . . . . . . . : QBNBSYMR
Von Prozedur . . . . . . . . : QBNBSYMR__UnresolvedReferenceIterator
Von Anweisung . . . . . . . : 31
An Programm . . . . . . . . . : QBNBIND
An Bibliothek . . . . . . . : QSYS
An Modul . . . . . . . . . . : QBNBSYMR
An Prozedur . . . . . . . . : QBNBSYMR__SignalUnresolvedReferences
An Anweisung . . . . . . . . : 8
Ich hab CRTBNDRPG verwendet.
ich denke CRTRPGMOD war der wichtige Schritt den ich vergessen hatte.
Ich werde jetzt mal versuchen das auf diese Art zu erstellen.
Dankeschön
Similar Threads
-
By Armin in forum NEWSboard Programmierung
Antworten: 16
Letzter Beitrag: 04-03-16, 16:07
-
By Paul_Hofmann in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 20-01-16, 09:23
-
By MR-BN in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 02-10-15, 15:40
-
By hansr in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 28-11-02, 16:38
-
By Markus H in forum NEWSboard Drucker
Antworten: 11
Letzter Beitrag: 12-02-02, 13:22
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks