Zu diesem Thema hatten wir schon verschiedene Beiträge.

Beim CALL-Kommando werden Alpha-Zeichen in der angegebenen Länge, mindestens jedoch 32 Zeichen übergeben.

Erwartest du längere Argumente musst du entsprechend viele Leerzeichen anhängen.
Das Programm bekommt, wie Dieter schon sagt, nur eine Adresse auf den Wert.
Ist deine Variable länger definiert, greifst du eben auf irgendwas dahinter zu.

Bei CMD's wird automatisch die erwartete Länge reserviert (Ausnahme: variabel lange Felder mit Längeninformation), bei direktem Call mit Variable, reservierst du ja den Speicher bereits selber, was auch manchmal zu den selben Effekten führen kann.