Bei dem Begriff Datentyp handelt es sich um den Wertebereich, den Variablen und Konstanten annehmen können. Höhere Programmiersprachen verfügen über eine Vielzahl von Datentypen, dabei gilt, je mehr Speicherplatz ein Datentyp bzw. eine Variable benötigt, desto größer ist deren Wertebereich und deren Genauigkeit bei Berechnungen. In dem folgenden Artikel möchte ich Ihnen die Datentypen der Datenstruktur und deren Wertebereich in CONZEPT 16 erläutern.
Alpha
Bei diesem Datentyp kann optional noch eine Längenangabe folgen. Die Länge liegt im Bereich 1 bis 4096. Wird keine optionale Längenangabe gemacht, liegt der Standartwert bei 80 Zeichen. Wird eine zu lange Zeichenkette zugewiesen, kommt es zu dem Laufzeitfehler „Alphawert zu lang“. Nach der Deklaration ist die Variable mit dem Wert ''
initialisiert. Je nach Länge des Wertes variiert auch der Speicherverbrauch in der Datenbank. Generell lässt sich sagen, dass pro Zeichen 1 Byte + 2 Byte Overhead belegt wird. Ist die Zeichenkette größer als 255 Zeichen werden 1 Byte pro Zeichen und 3 Byte Overhead belegt. Weitere Informationen finden Sie auch im Artikel Der Zeichensatz in CONZEPT 16.
Word
Der hier zulässige Wertebereich liegt zwischen 0 und 65535. Anstelle von Word
kann auch Int16
verwendet werden. Nach der Deklaration ist die Variable genau wie bei Byte mit dem Wert 0
initialisiert. In der Datenbank belegt dieser Wert 2 Byte.
Int
Der Wertebereich des Ganzzahligen Typs liegt zwischen -2.147.483.647 (-(2^31+1) und +2.147.483.647 (2^31-1). Alternativ kann auch long bzw. int32 verwendet werden. Konstanten bestehen in der dezimalen Darstellung nur aus Ziffern und dem optionalen Minuszeichen. In der hexadezimalen Notation muss die Konstante mit 0x beginnen. In diesem Fall kann die Konstante auch die Buchstaben A bis F enthalten. Die Konstanten können mit \l
abgeschlossen werden. Nach der Deklaration ist die Variable mit dem Wert 0
initialisiert. Dieser Wert belegt 4 Byte in der Datenbank.
BigInt
Die zulässigen Werte liegen im Bereich von -9.223.372.036.854.775.807 (-(2^63+1)) bis +9.223.372.036.854.775.807 (2^63-1). Anstelle von BigInt
kann auch Int64
verwendet werden. Zur Speicherung von Datenbankfeldern dieses Types werden 8 Byte benötigt. Konstanten bestehen hier nur aus Ziffern und dem optionalen Minuszeichen und werden immer mit \b
abgeschlossen. Nach der Deklaration ist die Variable mit dem Wert 0\b
initialisiert.
Float
Für Float liegen die zulässigen Werte im Bereich von -1.0E307 bis +1.0E307. Eine Gleitkommakonstante enthält immer einen Dezimalpunkt, der die Vorkommastelle von den Nachkommastellen trennt. Um einer Verwechslung mit Konstanten des Types Decimal
zu vermeiden, können die Konstanten mit \f
abgeschlossen werden. Ebenso wie BigInt belegt der Gleitkommatyp 8 Byte in der Datenbank.
Hinweis:
Bei der Verwendung von Gleitkommawerten ist immer damit zu rechnen, dass es zu Rundungsfehlern kommt. Ein Vergleich zweier Gleichkommawerte auf Gleichheit (=) ist somit zu vermeiden. Stattdessen sollte der Vergleich auf einen Bereich ausgedehnt oder der Typ Decimal
verwendet werden.
Decimal
Dieser Typ speichert einen Gleitkommawert mit Bereich von -(10^63-1) bis (10^63-1). Im Gegensatz zur Speicherung im Binärformat beim Float-Typ werden Werte im dezimalen Format abgelegt, wodurch eine exakte Repräsentation aller Werte des Wertebereichs gegeben ist. Die Genauigkeit ist mit 58 Stellen fast viermal so hoch wie beim Float-Typ. Durch das dezimale Format werden Rundungsfehler bei Berechnungen vermieden. Außerdem kann eine Variable vom Typ Decimal
den Wert „undefiniert“ enthalten.
Variablen oder Felder diesen Types belegen 32 Byte im Hauptspeicher. In der Datenbank werden die Werte mit variabler Länge gespeichert. Dabei belegt der Wert „undefiniert“
1 Byte, alle anderen Werte 2 Bytes plus die halbe Anzahl von signifikanten Ziffern.
Beispiel:
_DecimalUndef | belegt 1 Byte |
0 | belegt 2 Byte |
12345678 | belegt 6 Byte (8 Ziffern) |
Berechnungen mit dem undefinierten Wert _DecimalUndef
liefern immer ein undefiniertes Ergebnis. Tritt bei Berechnungen ein ungültiges Ergebnis auf, ist das Resultat _DecimalError
. Dieser Wert ist nur temporär vorhanden, bei weiteren Berechnungen oder beim Speichern wird er automatisch in _DecimalUndef
gewandelt. Nach der Deklaration einer Variablen besitzt diese den Wert 0\m
.
Date
Die zulässigen Werte liegen im Bereich vom 1.1.1900
bis 31.12.2154
. Nach der Deklaration ist die Variable mit dem Wert 0.0.0
initialisiert. Der Typ Date belegt 4 Byte in der Datenbank.
Time
Die zulässigen Werte liegen hier im Bereich von 00:00:00.00
bis 23:59:59.99
. Ein undefinierter Zeitwert wird durch 24:00:00.00
dargestellt. Nach der Deklaration ist die Variable mit dem Wert 00:00:00.00
initialisiert. Auch dieser Typ belegt 4 Byte in der Datenbank.
Logic
Bei diesem Typ sind nur die Werte Y
und N
bzw. false
und true
zulässig. Seit der Version 5.6 belegt dieser Typ nur noch ein Bit in der Datenbank, in älteren Versionen wurde dafür 1 Byte benötigt.
Seit der Version 5.6 wird zur Speicherung von Unicode-Zeichen ein modifiziertes Datensatzformat verwendet. Im Artikel Mehr Geschwindigkeit durch kleinere Datensätze finden Sie weitere Informationen.