Ein Varying-Feld beinhaltet immer 2-byte-Längeninformation zusätzlich!

"MyVarField 30 varying" ist also tatsächlich 32 Bytes lang, kann aber nur max. 30 Zeichen aufnehmen.
Die Anpassungen regelt das Programm automatisch:

D MyField 30
D MyVarField 30 varying

MyField = MyVarField; // übertragen und ggf. mit Leerzeichen auffüllen
MyVarField = MyField; // Zielfeld ist immer mit 30 zeichen gefüllt
MyVarField = %trimr(myField); // Blanks entfernen und übertragen, die Länge ist nun die Anzahl der Zeichen

Nun kommt es auf dein aufzurufendes Programm an, ob es tatsächlich mit Varying-Feldern arbeitet!
Prüfe also mal die Definitionen.

Einen Fehler zur Laufzeit (MCH....) kann es im empfangenden Programm bei varying geben, wenn das Empfangsfeld zu klein definiert ist.

D Empfang 100 varying
D Sender 200 varying

Bis 100 Zeichen funktioniert das, ab 101 nicht mehr.