Zumindest bist du da einen Schritt weiter !
QCMDEXC wird mit 2 Parametern aufgerufen, 1. Zeichen, 2. gepackt 15.5.
Daher die vielen Nullen, da der DB-Server Zahlen "as is" in gepackt formatiert (hier also 10 VK + 5 NK = 15.5).
Der 2. Parameter muss GENAU die Länge des Kommandos enthalten !!!
Ich komme nur auf 18 Stellen und nicht auf 23, daher hatte ich auch die FORMAT$-Anweisung vorgeschlagen, die ich dir auch empfehlen würde.
Damit könntest du dir dann eine variable Funktion stricken:

public sub ExecCmd(MyCmd as string, myCnn as ADODB.Connection)
dim mySql as string
mySql = "{{CALL QSYS.QCMDEX('" & myCmd & "'," & format$(len(MyCmd), "0000000000.00000") & ")}}"
myCnn.Execute mySql,,adExecuteNoRecords
end sub

Ein Fehlerbehandlung ist nicht nötig, da der Aufrufer dies übernehmen sollte.