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
Bookmarks