Record ExampleRecord type basicRecord
10 myField CHAR(5);
20 myField01 CHAR(1) = "1";
20 myField02 CHAR(1) = "2";
20 myArray01 CHAR(1)[3] = ["a", "b", "c"];
// Der folgende Eintrag ordnet dem ersten Element "z"
// und (in Java-Code) dem Rest Leerzeichen zu.
20 myArray02 CHAR(1)[3] = ["z"];
end
Diese Regel gilt auch für Formularfelder. In einer Datentabelle (DataTable) können Sie keinen Initialisierungsoperator angeben.
Record ExampleRecord type basicRecord
myRecField INT = 2;
end
Program myProgram (myField03 INT = 3)
myField04 STRING = "EGL";
function main()
// myRecord.myRecField = 2
myRecord ExampleRecord;
end
end
Record partA
10 aa char(4) = "abcd";
end
Record partB
10 bb char(4) = "1234";
end
Program Example
A partA;
B partB { redefines="A" };
function main()
// Jede der folgenden Anweisungen schreibt "abcd".
writeStdOut( A.aa );
writeStdOut( B.bb );
// Stellt den Speicherbereich auf die Definition von Datensatz partB ein.
set B initial;
// Jede der folgenden Anweisungen schreibt "1234".
writeStdOut( A.aa );
writeStdOut( B.bb );
end
end
Record ExampleRecord
10 charField CHAR(24);
15 hexField HEX(16);
15 remainder CHAR(16);
end
Der Speicherbereich für hexField wird
mit binären Nullen initialisiert, wie dies HEX-Variablen entspricht.
Das Feld remainder wird mit Leerzeichen initialisiert. Zwei HEX-Zeichen werden für ein einzelnes Byte benötigt, d. h., eine HEX(16)-Variable belegt nur acht Bytes.Bei einer Feldgruppe wird jedes Element der Feldgruppe einzeln initialisiert.
Datensätze oder Felder, die als Programm- oder Funktionsargumente empfangen werden, werden nie automatisch initialisiert.
Nullfähige Variablen (also solche, die Nullwerte enthalten dürfen) sind ein Sonderfall. Diejenigen, die mit dem Typerweiterungszeichen "?" erstellt wurden, werden auf null initialisiert. Diejenigen, die durch die Eigenschaft i4glItemsNullable gesteuert werden, haben andere Anfangswerte. Siehe i4glItemsNullable.
| Typ | Initialisierungswert |
|---|---|
| ANY | Null |
| BIN (und die ganzzahligen Typen), HEX, FLOAT, SMALLFLOAT | Binäre Nullen |
| BLOB, CLOB | Zurücksetzung mit lobLib.freeBlob() oder lobLib.freeClob() |
| BOOLEAN | Falsch (False) |
| CHAR, MBCHAR | Einzelbyteleerzeichen |
| DATE, TIME, TIMESTAMP | Wert der Systemuhr (für die Bytezahl, die bei TIMESTAMP für die Maske erforderlich ist) |
| DBCHAR | Doppelbyteleerzeichen |
| DECIMAL, MONEY, NUM, NUMC, PACF | Numerische Nullen |
| INTERVAL | Numerische Nullen (für die Bytezahl, die für die Maske erforderlich ist), mit vorangestelltem Pluszeichen |
| STRING | "" (eine Nullzeichenfolge) |
| UNICODE | Unicode-Leerzeichen (die hexadezimal jeweils mit 0020 angegeben werden) |
library lib1
a int = 1;
b int = lib2.c;
end
library lib2
c int = 2;
d int = lib1.a;
end
Wenn ein Programm versucht, lib1 oder lib2 zu verwenden, löst EGL eine Ausnahmebedingung aus.
| Plattform | Problem |
|---|---|
| COBOL-Generierung | Ein EGL-generiertes COBOL-Programm initialisiert alle Datensätze. Die Felder in den Datensätzen werden auf der Basis des COBOL-Datentyps initialisiert. Anschließend werden die Variablen nach EGL-Typ initialisiert, wie dies in der Tabelle oben beschrieben ist. Dabei wird die COBOL-Anweisung INITIALIZE außer Kraft gesetzt. Anmerkung: Wenn Sie ein COBOL-Programm generieren, das eine Variable des Typs
NUM mit einer Variable des Typs CHAR vergleicht, müssen Sie sicherstellen, dass
Ihr Code die Felder initialisiert. Andernfalls kann der Vergleich dazu führen, dass
das Programm mit einer Abbruchnachricht fehlschlägt. Wenn dies geschieht, wird kein Code zur Ausnahmebehandlung ausgeführt. Eine ähnliche COBOL-spezifische Warnung gilt für Felder in lokalen Datensätzen.
|
| JavaScript-Generierung | Die folgenden Typen werden nicht unterstützt: ArrayDictionary, BIN (mit Dezimalstellen), BLOB, CHAR, CLOB, DBCHAR, HEX, INTERVAL, MBCHAR, NUMC, STRING (mit einer Größenbegrenzung), PACF, UNICODE und strukturierte Datensatzabschnitte. |