Ja jetzt nähert sich das so langsam. Die Ursache ist der SBMJOB !
Wenn du beim SBMJOB einen CALL mit Parametern übergibst, werden diese genauso gehandhabt wie ein Aufruf aus einer Kommandozeile.

Also SBMJOB ... CMD(CALL PGMX PARM(&V)) wird der Inhalt der Variablen ausgelesen und als Zeichenkette übergeben.
Nun schlägt die Defaultbehandlung des CMD-Prozessors für das CALL-CMD zu:
Numerische Werte in 15p5, Zeichenwerte in der Länge der Eingabe, mindestens jedoch 32 Stellen.
Einthält eine Zeichenkette keine Leer- und Sonderzeichen wird sie in Grossbuchstaben übersetzt ansonsten automatisch mit Hochkommata eingeschlossen.

Ein SBMJOB kann ja keinen Call-by-Reference auslösen wie ein CALL-CMD, der zur Compilezeit bereits in einen MI-CALLX aufgelöst wird !!!

Machst du nun einen SBMJOB ... CMD(MYCMD MYPARM(&V)) wird der Inhalt der Variable passend zum PARM konvertiert (numerisch, alpha ggf. in Hochkomma).
Der Befehlsprozessor stellt aber später sicher, dass das aufzurufende Programm garantiert die Puffer in der angegebenen Definition erhält.

Wenn du also einen CALL submitten willst, musst du die Parameter selber in einer Variablen zusammenbauen, ggf. Hochkommata einsetzen und das ganze als Variable übergeben SBMJOB ... RQSDTA(&V) anstelle von CMD(...).

Allerdings gibt es eine Längenbeschränkung von 3000 Zeichen !!!