Also es könnte ungefähr so aus sehen, du musst das nur für dein Programm adaptieren

SQL:

CREATE PROCEDURE USMOD_16/ORAPERIODDATES
(IN FIRM VARCHAR(1)
,IN WKNR VARCHAR(3)
,IN ACTDATE DATE
,OUT PERIODE DECIMAL(6, 0)
,OUT FROMDATE DATE
,OUT TODATE DATE
)
LANGUAGE RPGLE
DETERMINISTIC
READS SQL DATA
EXTERNAL NAME 'USMOD_16/ORAPERDAT'
PARAMETER STYLE SQL

ILERPG:

hactgrp(*caller) dftactgrp(*no) datfmt(*iso)

d RHFirma s 1 varying
d RHWerk s 3 varying
d RHActDate s d
d RHPeriode s 6p 0
d RHFromDate s d
d RHToDate s d

d RHFirma_i s 5i 0
d RHWerk_i s 5i 0
d RHActDate_i s 5i 0
d RHPeriode_i s 5i 0
d RHFromDate_i s 5i 0
d RHToDate_i s 5i 0

d SQLStateX s 5
d FuncName s 139 varying
d SpecName s 128 varying
d DiagMsg s 70 varying
c *entry plist
c parm RHFirma
c parm RHWerk
c parm RHActDate
c parm RHPeriode
c parm RHFromDate
c parm RHToDate

c parm RHFirma_i
c parm RHWerk_i
c parm RHActDate_i
c parm RHPeriode_i
c parm RHFromDate_i
c parm RHToDate_i

c parm SQLStateX
c parm FuncName
c parm SpecName
c parm DiagMsg

Die _i-Variablen sind NULL-Flags
-1 = NULL
0 = Wert angegeben
Für jeden Parameter gibt es zusätzlich einen NULL-Flagparameter.