PDA

View Full Version : UDF nach CONNECT auf Zielsystem nicht gefunden



Edti
23-05-12, 10:09
Hallo Forum!
Ich habe eine externe UDF rate_str() erstellt und nutze diese in SQL-Statements die ich in einem RPG Programm eingebaut habe. Das Statement sieht ca. so aus.
select zkdznam, rate_str(char('edt'), zkdznam) from twsf/zkd. Das funktioniert auch.

Jetzt mein Problem:
Ich habe die obige UDF auch auf anderen Systemen (i5) im selben Schema erstellt.
Ich möchte in dem RPG-Programm auch ein CONNECT auf ein anderes System machen und das obige SQL-Statement dort ausführen. Hier bekomme ich aber dann die Fehlermeldung " RATE_STR der Art *N in *LIBL nicht gefunden".

Hat jemand einen Tip für mich?
Vielen Dank im Voraus!

Fuerchau
23-05-12, 10:16
Du erwartest die UDF in einer bestimmten Lib.
Beim Connect wird aber auf dem Zielsystem die LIBL nicht automatisch mit deiner UDF-Lib gesetzt, somit kann die UDF nicht gefunden werden.

Du musst also nach dem Connect per "ADDLIBLE MYLIB" deine Lib noch dazufügen. Dies erreichst du z.B. per
exec sql 'CALL QCMDEXC ...';

Alternativ kannst du auf dem Zielsystem den Systemwert QUSRLIBL ja ergänzen.

Eine andere Variante ist:
Da deine Lib ja statisch scheint, kannst du per
exec sql set option naming=*sql;
auf SQL-Syntax umschalten.

Im SQL musst du dann allerding die Lib mit einem Punkt qualifizieren.
Zusätzlich besteht dann die Möglichkeit, UDF's qualifiziert zu verwenden:

select zkdznam, twsf.rate_str(char('edt'), zkdznam) from twsf.zkd

Edti
24-05-12, 07:21
Ich habs mit exec sql 'CALL QCMDEXC ...'; gemacht. Funktioniert! Danke!:)