Der Titel hört sich erst mal komisch an aber ich habe hier was, was ich nicht verstehe.

Ich habe ein CL-Programm welches ich von der Befehlszeile aus aufrufe und dieses wiederum ruft ein RPG auf.
Das CL-Programm sollte eigentlich 2 Parameter empfangen die jeweils 2 Stellen *CHAR sind. Diese zwei Parameter übergibt das CL-Programm weiter an das RPG.
Jetzt ist der erste Parameter des CL-Programms fälschlicherweise nicht mit 2 sondern nur mit 1 Stelle *CHAR definiert worden. Jetzt habe ich mir die ganze Zeit überlegt warum das noch niemand gemerkt hat. Das RPG zeigt in einer Maske beide Parameter an. Ich rufe das CL auf mit CALL PGM(XXX) PARM('01' '01') und siehe da auf der Maske erscheinen auch genau diese beiden Werte. Ich denke mir das kann noch nicht sein und debugge das CL-Programm. Das CL-Programm empfängt so wie ich es mir gedacht habe den ersten Parameter einstellig und gibt diesen dann wieder an das RPG weiter. Ich nun also das RPG gedebuggt und dort kommt er Wunder über Wunder wieder korrekt zweistellig an. Also aus dem Wert 1 wird auf einmal wieder 01. Also ich kann mir das bis jetzt nur so erklären daß dadurch das im CL der empfangene Parameter und der übergebenen Parameter an das RPG die gleiche Variable ist und dort dann eine übergabe nicht by Value sondern by Reference erfolgt. Aber das sind natürlich nur Vermutungen. Kann mir das jemand hier erklären warum das so ist ?