HI Andreas,
also erstens muss ich klären wie man eine Konstante
über die UDF an das Serviceprogramm übergeben kann.
Wenn ich statt der Konstante eine Variable übergebe
wird zwar die Prozedur im Serviceprogramm aufgerufen
aber mit Fehler beendet:
PHP-Code:
Nachrichten-ID . . . . : MCH3601 Bewertung . . . . . . : 40
Nachrichtenart . . . . : Abbruch
Sendedatum . . . . . . : 16.06.10 Sendezeit . . . . . . : 16:34:36
Nachricht . . . : Zeiger für angegebene Position nicht gesetzt.
Ursache . . . . : Es wurde ein Zeiger, entweder direkt oder als ein
Basiszeiger verwendet, für den keine Adresse festgelegt worden war.
PHP-Code:
Nachrichten-ID . . . . : CPF503E Bewertung . . . . . . : 30
Nachrichtenart . . . . : Hinweis
Sendedatum . . . . . . : 16.06.10 Sendezeit . . . . . . : 16:34:36
Nachricht . . . : Fehler bei benutzerdefinierter Funktion in Teildatei
STMASTP.
Ursache . . . . : Beim Aufrufen der benutzerdefinierten Funktion HTCOST in
Bibliothek MK ist ein Fehler aufgetreten. Der Fehler trat beim Aufrufen des
zugeordneten externen Programms oder Serviceprogramms BY100SR in Bibliothek
TSTLIBEDC, Programmeingangspunkt bzw. externem Namen Get_HangTag_Cst,
spezieller Name HTCOST, auf. Der Fehler trat bei Teildatei STMASTP Datei
STMASTP in Bibliothek TSTDTAEDC auf. Der Fehlercode ist 2. Fehlercodes und
ihre Bedeutung:
1 -- Das externe Programm oder Serviceprogramm hat SQLSTATE 00000
zurückgegeben. Die vom Programm zurückgegebene Textnachricht ist: .
2 -- Das externe Programm ist vor seiner Beendigung fehlgeschlagen.
3 -- Bei der Datenbank trat ein Zeitüberschreitungsfehler beim Warten auf
die Rückkehr zum Hauptprogramm auf. Der von der Datenbank verwendete
Zeitüberschreitungswert betrug 0 Minuten und 30 Sekunden.
4 -- Das externe Programm ist nicht mehr vorhanden oder wurde nicht
gefunden.
5 -- Bei einem der Eingabeparameter der Funktion ist ein
Datenabgleichungsfehler aufgetreten.
6 bis 20 -- Die vorangegangenen Nachrichten im Jobprotokoll beachten.
Für ein externes Programm ist der angezeigte Programmeingangspunkt *N.
ehlerbeseitigung: Bei Fehlercodes 1 und 2 die Fehlerursache anhand von
SQLSTATE oder einer zuvor aufgelisteten Nachricht feststellen.
Bei Fehlercode 3 entweder den Zeitüberschreitungswert mit Hilfe der
QAQQINI-Dateieinstellung erhöhen oder feststellen, weshalb das externe
Programm oder das Serviceprogramm nicht innerhalb der zugeordneten Zeit
zurückgekehrt ist.
Bei Fehlercode 4 sicherstellen, dass das Programm oder Serviceprogramm für
die Dauer der Abfrage vorhanden ist.
Bei Fehlercode 5 die Ursache für den Datenabgleichungsfehler bestimmen.
Bei Fehlercode 6 bis 22 die vorangegangenen Nachrichten im Jobprotokoll
beachten.
Weitere Informationen über benutzerdefinierte Funktionen enthält das Thema
"DB2 UDB for iSeries SQL Programming" im Information Center unter
http://www.ibm.com/eserver/iseries/infocenter.
Also stimmt etwas mit der Übergabe der Parameter noch nicht.
Im Debugger kommen bis auf die Currency alle Werte an.
Gruß
Michael
Bookmarks