Oder man macht es wie IBM: Das CL nimmt 2 Parameter entgegen, der eine enthält die Zeichenkette, der andere die Anzahl übergebener Bytes.

Berühmtestes Beispiel dafür wäre:
CALL QCMDEXC ('DSPMSG' 6)


Kommandos sind praktisch, aber ich finde sie aus RPG heraus so schlecht aufrufbar.


Hier ein paar technische Details zu Parametern:
Bei einem Call werden für Parameter nur Pointer übergeben. Diese zeigen auf den Speicherbereich, der im rufenden Programm festgelegt wird.
Es kann passieren, dass das gerufene Programm in einem zu lang definierten Parameter Daten sieht, die nicht für diesen Parameter bestimmt sind.
Wenn man also weiß wie lang Daten gefüllt sind, kann man das mit %SST rausziehen.


Nebenbei: Lustig bei Parametern ist auch, wenn man im rufenden Programm eine Variable _mehrfach_ angibt.
Dann ist im gerufenen Programm der Effekt, dass wenn der eine Parameter verändert wird, der andere wie von Geisterhand ebenfalls geändert ist. (Da habe ich mal lange debuggt und war fast verzweifelt...)