Da gibt es verschiedene Möglichkeiten.

1. per ODBC mittels SQL

CALL LIB/PGM (<parm1> <parm2> ...)

Die Parameter müssen GENAU so definiert werden wie sie das Programm erwartet, also Zeichenfelder in Hochkommata in der richtigen Länge, gezonte Werte müssen wie Zeichenfelder verwendet werden, gepackte Werte ohne Hochkomma aber GENAU in der Anzahl Stellen (ggf. mit Vornullen und Nachnullen auffüllen z.B. 0000000015.50000 wird als gepackt 15,5 übergeben.

Allerdings sind hierbei keine Ergebnisse zurückzubekommen.

2. per ODBC mit Procedure

Erstelle eine "Procedure" mit den benötigten Parametern (Input, Output, IO).
Erstelle ein CommandObjekt mit "CALL Procedure (?, ?, ....)"
Die Parameter "?" können dann als Parameter dem CommandObjekt direkt übergeben werden.
Mit der Execute-Methode wird das Programm aufgerufen und Ausgabe-Parameter stehen dann im Command-Objekt zur Verfügung.

3. cwbx-ActiveX.

Dies ist etwas komplizierter, da hier mit mehreren unterschiedlichen Objekten gearbeitet werden muss.
Hierzu kannst du die Hilfe-Dateien von ClientAccess Express-Toolkit verwenden.