Da dein Programm 10-stellige Werte benötigt musst du auch 10-stellige Werte übergeben.

Datei = Left(Datei & Space(10), 10)

Der Unterschied zwischen CALL-CMD und SQL-CALL ist der, dass das CALL-CMD bei manueller Eingabe Zeichenketten, die kürzer als 32 sind auf 32 Stellen verlängert.
Deinem CLP kann das egal sein, da eh nur Adressen übergeben werden.

Bei SQL-Call werden Parameter genau in der angegebenen Länge übergeben.
Wenn du aber 10 Stellen erwartest, steht halt Schrott drin.

Zu Sicherheit solltest du die Paramter auch noch mit UCASE(Datei) in Grußbuchstaben wandeln, denn auch diese Konvertierung macht das CALL-CMD bei fehlenden Hochkommata.