Bei Funktionen (Aufruf Select) kannst du nur adParamInput verwenden, bei Prozeduren (Aufruf Call) gibts du alles an.

Wenn du keine NULL-Werte verarbeiten willst, dann reicht (wie Dieter sagt), Parameterstyle generell und du kannst jedes Programm, dass keine Strukturen sondern nur einzelne Werte verwendet definieren und aufrufen.

Führe einfach per cnnAs400.Execute folgenden Befehl aus:

CREATE PROCEDURE MyLib/MyPgm
(IN Parm1 Integer
,INOUT Parm2 Integer
,OUT Parm3 Integer
)
LANGUAGE RPG
DETERMINISTIC
EXTERNAL NAME 'MyLib/MyPgm'
PARAMETER STYLE GENERELL

Wichtig ist, dass die Parameter deines AS/400-Programmes zu den SQL-Typen auch passen.
Integer ist in RPG "B 9 0", in ILERPG "10I 0".

Ansonsten kannst du auch CHAR, VARCHAR usw. verwenden.

Wenn der Execute auf Fehler läuft, gibts eigentlich nur 3 Gründe:
1. Syntaxfehler
2. Journalisierung inaktiv und Connection ist nicht mit CMT=0
3. Prozedur schon vorhanden