Natürlich ist die Parameterübergabe bei einem CMD anders zwischen Konstante und Variable !
Wenn du ein CMD selber entwickelst, kannst du einen PARM-Wert mit Längeninformation erstellen (meist 2-Byte-Bin).

Wenn du nun ein CMD per Kommandozeile mit Text aufrufst, wird die Länge des Textes vom Befehlsprozessor berechnet, ein Speicherbereich angelegt und die Information an das ausführende Programm übergeben.

Wenn du nun das selbe CMD in einem CLP mit Variable aufrufst, erstellt der Compiler bereits einen vorcompilierten CMD-Aufruf in dem nun die Länge der Felder und nicht die Länge des Feldinhaltes verwendet wird !!!

Deine Lösung mit Übergabe als %SST(...) ist da nur die konsequente Folge