Zeichenfelder, also Variablen vom Typ C, können keine schliessenden Leerzeichen enthalten. Genauer gesagt, sie werden immer bis zu ihrer definierten Länge mit Leerzeichen aufgefüllt, diese Leerzeichen werden aber bei fast allen Befehlen ignoriert. Ein guten Beispiel hierfür ist der CONCATENATE. Dieser schneidet quasi die schliessenden Leerzeichen der einzelnen Stücke, die zusammengefügt werden sollen, ab.
Bei Strings hingegen sind die Leerzeichen signifikant, d.h. fast alle Befehle berücksichtigen auch Leerzeichen am Ende eines Strings.
Im Zusammenspiel von Zeichenfeldern und Strings kann es daher manchmal zu einigen Überraschungen kommen. Betrachtet man folgenden Beispiel:
Code: Alles auswählen.
data s type string.
data cf(3) type c.
cf = 11.
s = 11.
if cf = s.
" niemals erreichbar
endif.
Auch wenn cf und s im Debugger betrachtet gleich aussehen, erkennt man, dass der String ein Blank am Ende hat. Es handelt sich hierbei um das positive Vorzeichen der Zahl 11. Natürlich hat auch das Zeichzenfeld dieses Vorzeichen-Blank. Es tritt allerdings so gut wie nie in Erscheinung. Man sollte also beachten, dass ein String mit einem schliessenden Leerzeichen niemals gleich zu einen Zeichenfeld sein kann.