Aus technischer Sicht handelt es sich bei einem Nullwert um einen Verweis (der bisweilen auch als Zeiger bezeichnet wird) auf einen leeren Speicherbereich. Verweisvariablen (Variablen, die eine Adresse für Daten und nicht die Daten selbst enthalten) sind stets 'nullfähig'. Dies bedeutet, dass sie automatisch Nullwerte enthalten können. Komplexer wird dieses Konzept dadurch, dass auch Wertevariablen nullfähig gemacht werden können.
if (myCustomer != null)
get myCustomer;
end
Bestimmte Funktionen in den Systembibliotheken 'dateTimeLib' und 'strLib', wie beispielsweise 'dateTimeLib.timeValue()', können Nullwerte zurückgeben, und zwar entweder, weil Sie einen Nullwert an die betreffende Funktion übergeben haben oder weil die von Ihnen angeforderten Informationen nicht vorhanden sind.
myNullableInt INT?;
Wird eine Variable als 'nullfähig' deklariert, erhält Sie ein Flag, das angibt, ob die Variable null ist oder nicht. Wird die Variable auf null gesetzt, wird auch das Flag entsprechend gesetzt.
Bitte beachten Sie, dass es sich bei einem Datensatz um eine Wertevariable handelt. Ist der Datensatz nullfähig und auf null gesetzt, ist es weiterhin möglich, auf Felder in diesem Datensatz zuzugreifen. Ein Nulldatensatz kann jedoch nicht in E/A-Anweisungen verwendet werden, die Daten aus dem Datensatz ausgeben, da EGL ansonsten eine Ausnahmebedingung vom Typ 'NullValueException' auslöst. Ebenso ist der Nullstatus der E/A-Anweisungen, die Daten in einen Datensatz stellen, auf 'false' (falsch) gesetzt.
Nullfähige Variablen sind mit nicht nullfähigen Variablen zuordnungskompatibel, sofern ihre Basistypen zuordnungskompatibel sind. Nullfähige Variablen sind mit anderen nullfähigen Variablen nur dann zuordnungskompatibel, wenn ihre Basistypen identisch sind. Weitere Informationen finden Sie unter Zuordnung zu bzw. von nullfähigen Typen.
Im Hinblick auf Services bedeutet das Senden eines Nullwerts als Argument in einem fernen Serviceaufruf, dass keine Daten gesendet werden. Da der empfangende Parameter nullfähig ist, erstellt die empfangende Funktion einen neuen, nicht initialisierten Wert für die fehlenden Daten und übergibt diesen an die angeforderte Servicefunktion.
myArrayNullInts INT?[];
Function getCustomer (custNum INT?) returns (CHAR(25)?)
...
end
myCustomer CustomerRecord?;
| Plattform | Problem |
|---|---|
| JavaScript-Generierung | Die folgenden Typen werden unterstützt: ANY, BIGINT,
BIN (jedoch nur ohne Dezimalstellen), Boolean, DataItem,
DATE, DECIMAL, Delegate (Stellvertreter), Dictionary (Wörterverzeichnis), FLOAT, INT, NUM, NUMBER, SMALLFLOAT,
SMALLINT, STRING (jedoch nur ohne Größenbeschränkung) , TIME,
TIMESTAMP, NUM, MONEY, Serviceabschnitte, Schnittstellenabschnitte, externe Typen (Stereotyp JavaScript),
Feldgruppen unterstützter Typen sowie nicht strukturierte Basis-, Ausnahme- und SQL-Datensatzabschnitte. Die folgenden Typen werden nicht unterstützt: ArrayDictionary, BIN (mit Dezimalstellen), BLOB, CHAR, CLOB, DBCHAR, HEX, INTERVAL, MBCHAR, NUMC, STRING (mit Größenbegrenzung), PACF, UNICODE und strukturierte Datensatzabschnitte. |