Hallo,

ich kämpfe gerade mit meiner ersten User defined function (UDF) herum und komme keinen Schritt weiter.

Ich habe ein SRVPGM erstellt, das 2 Postleitzahlen als Parameter erwartet und als Ergebnis die Entfernung zwischen beiden Postleitzahlen zurückliefert (Der Sinn davon sei jetzt mal dahingestellt). Der Prototyp ist folgendermaßen definiert:

Code:
D DISTANCE        PR             8P 3       
D   PLZ1                         6P 0 VALUE 
D   PLZ2                         6P 0 VALUE
Das SRVPGM selbst funktioniert auch. Das hab ich schon getestet. Die zugehörige UDF hab ich folgendermaßen erstellt:

Code:
CREATE FUNCTION LIB/DISTANCE (           
 PLZ1 DECIMAL(6, 0) ,                      
 PLZ2 DECIMAL(6, 0) )                      
 RETURNS DECIMAL(8, 3)                     
 LANGUAGE RPGLE                            
 PARAMETER STYLE GENERAL                   
 NOT DETERMINISTIC                         
 NO SQL                                    
 EXTERNAL NAME 'LIB/DISTANCE(DISTANCE)';
Die UDF wird auch erstellt. Dann hab ich versucht folgendes SQL abzusetzen:

Code:
select * from kundstam where DISTANCE(DEC(63303, 6, 0), kdplza) < 50
Daraufhin erhalte ich einen Dezimaldatenfehler. Ich hab auch schon versucht die PLZ ohne den CAST anzugeben oder die PLZ per embedded SQL als Host-Variable. Das Ergebnis war immer das gleiche. Es scheint wohl nur an der Parameterübergabe zu liegen. Ich krieg's aber einfach nicht hin. Ich hab die UDF auch schon mit unterschiedlichen Parameter Styles erstellt (SQL, DB2SQL, etc.). Das hat aber alles nichts gebracht.

Was mache ich hier falsch bzw. wie muß ich numerische Parameter an eine UDF übergeben ?

Gruß,
KM