Programmierung

Wertebereich von Datentypen der Datenbank

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.

Keine Kommentare

Kommentar abgeben