1. Statt CreateObject kannst du auch einfach new verwenden:
set cnAS400 = new ADODB.Connection

2. Returnwerte werden nur bei SQL-Prozeduren unterstützt, ansonsten muss man die Objekt-API's und Konverter-API's verwenden.

Also:
Für jedes Programm, dass du aufrufen willst, musst du einen "Create Procedure" mit den jeweiligen In/Out-Parametern definieren.