-
MCH3601 in Prozedur
Hallo zusammen,
ich poste die Anfrage hier noch einmal; beim ersten Mal habe ich das falsche Forum erwischt.
Beim Aufruf einer Prozedur (steht in einem Service Programm) erhalte ich die Fehlermeldungen
Pointer not set for location referenced.
Function check. MCH3601 unmonitored by QDBGETKY at statement *N,
instruction X'0CD1'.
The call to ADDORD2SHP ended in error (C G D F).
die Prozedur sieht so aus:
Code:
P AddOrd2ShpmOrd B export
d PI 2
d pcusno 6 0 value
d pShipment 7 0 value
d pOrdno 6 0 value
c Key klist
c kfld pcusno
c kfld pordno
c key setll ssshlc30
c if %found(ssshlc30)
c return '1'
c else
c eval CUSNO = pcusno
c eval SSSHPMID = pShipment
c eval ORDNO = pOrdno
c write SSHC30
c
c return '0'
c endif
p e
Im Debugger habe ich lokalisiert, dass der Fehler beim SETLL auftritt. Hat jemand eine Idee, was da falsch läuft?
Danke
Hubert
-
Wo wird denn die Datei definiert ?
Wann wird diese eröffnet ?
Eine Serviceprocedure muss alle benötigten Ressourcen beinhalten.
Eine globale Definition reicht nicht aus.
-
Die Datei wird im Serviceprogramm geöffnet. Ich habe auch versucht, ob der Fehler mit USROPN vermieden wird, hatte damit aber auch keinen Erfolg.
Das Service Programm enthält 13 (ob das ein böses Omen ist? ) Prozeduren. Ich habe diese Prozedur testweise in einem anderen Serviceprogramm isoliert. Die Fehlermeldung blieb dann aus, aber eine andere Prozedur meldete dann den gleichen Fehler.
-
Dann tippe ich auf die Parameterübergabe.
Das rufende Programm übergibt die Wert ggf. nicht per Value oder zuwenig Parameter.
Prüfe den Inhalt der Parameter im Debugger.
-
Anzahl und Art der parameter sind identisch, sie werden alle by value übergeben. Beim debuggen werden auch die erwarteten Werte in den Schlüsselfeldern angezeigt.
-
Hallo Hubert,
ich kann nicht genau sagen ob es daran liegt,
aber deine Prozedur gibt 2 Stellen zurück.
Gefüllt wird aber von Dir nur 1n
Vielleicht stört das ?????
Gruss
Michael
-
@MK
Der "return" funktioniert hier wie der "eval", linksbündig mit blanks füllen.
-
ggf. kommt der Compiler (bzw. die Runtime) an dieser Stelle nicht mit den Parametervariablen (value!) zurecht.
Übertrage diese doch mal in Hilfsfelder, da die Runtime grundsätzlich "Call by reference" benötigt.
"Call by value" mag aber vom Compiler anders aufgelöst sein, so dass die Runtime hier keinen Zugriff auf die Variablen hat.
-
Ich habe den Fehler gefunden:
In dem Programm wird eine Prozedur eines Service Programms aufgerufen. In dieser Prozedur wird eine Prozedur eines anderen Service Programms aufgerufen. Diese Prozedur hatte ich um einen Parameter (by Reference) erweitert und diese Erweiterung bei einem Prozeduraufruf nicht nachgezogen. Obwohl die Anzahl der Parameter (keine optionalen) abwich hat das Binden problemlos funktioniert. Nur die Ausführung ließ dann zu wünschen übrig.
@MK Der Parameter war ursprünglich einstellig. in einem anderen Thread hatte ich gelesen, dass es damit manchmal Probleme gibt (ebenfalls MCH3601) und deshalb hatte ich es geändert.
Danke für eure Unterstützung
Hubert
-
Das Binden klappt auch deshalb problemlos, da die Anzahl der Parameter leider immer variabel ist (max. 255).
Dies lässt sich per %-Funktion oder SDS abfragen.
Einzig der Compiler prüft die Anzahl der Parameter durch das Prototyping.
Nicht neu erstellte Programme betrifft das leider nicht.
Deshalb sollte man bei Parameteränderungen liber eine neue Prozedur erstellen und die alte ruft dann die neue mit der Konvertierung auf.
Neue Programme werden mit dem neuen Prototyp (gleicher Definitions-Name, aber andere externe Prozedur) gewandelt, der alte Prototyp entfällt.
Wandelt man nun alte Programme, meldet der Compiler einen Fehler.
Similar Threads
-
By HPKahn in forum NEWSboard Programmierung
Antworten: 16
Letzter Beitrag: 30-01-07, 14:22
-
By loeweadolf in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 06-11-06, 15:05
-
By COS in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 23-02-06, 16:01
-
By BUG in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 18-10-04, 13:55
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