Page 1 of 1

Schliessende Leerzeuichen bei Strings (Teil 1)

PostPosted: Wed Aug 20, 2003 2:04 pm
by Quinn1225
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: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. data s type string.
  2. data cf(3) type c.
  3. cf = 11.
  4. s = 11.
  5. if cf = s.
  6.   " niemals erreichbar
  7.  
GeSHi ©

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.

PostPosted: Wed Aug 20, 2003 2:28 pm
by Miriam4168
Hallo Dr. ABAP,

hierzu möchte ich nur noch hinzufügen,
das rein nummerische Werte am besten sowieso
gleich gar nie nicht mit String oder char Typen
behandelt werden sollten.
Dafür gibt es Typen wie Integer.

Nichts für ungut.
Nur ich sehe leider auch immer wieder in sogenannten
Fachbüchern derartige Typisierungen.

MfG

Sapish

PostPosted: Wed Aug 20, 2003 2:43 pm
by Alva1590
dem kann ich nur zustimmen. Die schliessenden Leerzeichen sind also nur ein weiterer Grund, gut zwischen numerischen und zeichartigen Datentypen zu differenzieren.