Hallo,
wir schreiben häufig User Defined Functions in SQL, um damit Serviceprogramme aufzurufen. Manchmal erwarten die Serviceprogramme ein Datumsfeld als Input-Parameter. Datumsfelder sind bei uns grundsätzlich im *EUR Format definiert.

Ein Datumsfeld in SQL scheint aber nicht gleich einem Datumsfeld in RPG zu sein. Deshalb behelfen wir uns immer damit, ein zusätzliches RPG-Serviceprogramm zu erstellen, das als Adapter zwischen die SQL-Funktion und das eigentliche RPG-Serviceprogramm eingefügt wird. Das Adapterprogramm empfängt das Datum von SQL dann als Varchar(10), wandelt es in ein echtes RPG-Date um und übergibt es an das eigentliche Serviceprogramm.
Das ist natürlich sehr umständlich.

Hier mal ein Beispiel für eine SQL-Funktion, die ein Datum (i#Stand) als Varchar übernimmt.
Code:
create function EDPGMLIB/BVS9VS_ermIndexfaktor(           
 i#Code varchar(3),                                       
 i#_vs_vbnr decimal(15, 0),                               
 i#_vs_nach decimal(9, 0),                                
 i#stand varchar(10))                                     
 returns decimal(15, 7)                                   
 language RPGLE                                           
 specific EDPGMLIB/BVS9VS_ermIndexfaktor                  
 deterministic                                            
 reads sql data                                           
 called on null input                                     
 disallow parallel                                        
 external name 'EDPGMLIB/BVS9VSF15(BVS9VS_ERMINDEXFAKTOR)'
 parameter style general;
Hat vielleicht jemand eine bessere Idee?
Dieter