EGL-Datentypen zu C-Datentypen zuordnen
Die folgende Tabelle gibt Aufschluss über die Zuordnung der EGL-Basiselementtypen zu den C-Basiselementtypen, die beim Aufrufen von C-Funktionen mit der Anweisung call (siehe C-Funktionen mit der Anweisung call aufrufen) verwendet werden muss.
| EGL-Basiselement | C-Typ |
|---|---|
| INT | int (4-Byte-Ganzzahl mit Vorzeichen) |
| SMALLINT | short (2-Byte-Ganzzahl mit Vorzeichen) |
| BIGINT | long (8-Byte-Ganzzahl mit Vorzeichen) |
| NUM | Gezontes COBOL-Format. Die Vorzeichenbit bei ASCII sind x30 für eine positive Zahl und x70 für eine negative Zahl. Die Vorzeichenbit bei EBCDIC sind xF0 für eine positive Zahl und xD0 für eine negative Zahl. |
| NUMC | Gezontes COBOL-Format. Die Vorzeichenbit bei ASCII sind x30 für eine positive Zahl und x70 für eine negative Zahl. Die Vorzeichenbit bei EBCDIC sind xC0 für eine positive Zahl und xD0 für eine negative Zahl. |
| DECIMAL, MONEY | Gepacktes COBOL-Format. Die Vorzeichenbit sind xC für eine positive Zahl und xD für eine negative Zahl. |
| PACF | Gepacktes COBOL-Format. Die Vorzeichenbit sind xF für eine positive Zahl und xD für eine negative Zahl. |
| FLOAT | double |
| SMALLFLOAT | float |
| BOOLEAN | char (1 steht für 'true' und 0 steht für 'false') |
| HEX | char ohne Vorzeichen |
| CHAR | char |
| MBCHAR, DBCHAR | char (Konvertierung in 'wchar_t' unter Verwendung von 'mbstowcs' aus 'stdlib.h') |
| UNICODE, STRING | char (Mit Daten in UTF-16-Codierung, zwei Byte pro Zeichen. Konvertierung in 'wchar_t' unter Verwendung von 'mbstowcs' aus 'stdlib.h'. Bei Windows und Linux haben die Daten die Little-Endian-Reihenfolge, bei anderen Systemen die Big-Endian-Reihenfolge.) |
| DATE | char (Format 'jjjMMtt' mit Ziffern, die als '0' bis '9' gespeichert werden) |
| TIME | char (Format 'HHmmss' mit Ziffern, die als '0' bis '9' gespeichert werden) |
| TIMESTAMP | char (mit Ziffern, die als '0' bis '9' gespeichert werden) |
| INTERVAL | char (Beginn mit '+' oder '-', gefolgt von den Ziffern des Wertes als '0' bis '9') |
Die Werte von Datentypen für Text (CHAR, MBCHAR, DBCHAR, UNICODE, STRING), für Datum und Uhrzeit (DATE, TIME, TIMESTAMP, INTERVAL) und Hexadezimalwerte (HEX) enden nicht mit einem Nullbyte. Abschließende Leerzeichen können Sie mit StrLib.setNullTerminator in Nullen konvertieren. Abschließende Nullen können Sie mit StrLib.setBlankTerminator in Leerzeichen konvertieren.
- Wert des Typs INT für die aktuelle Länge der Feldgruppe
- Wert des Typs INT für die maximale Größe der Feldgruppe
- Folgende Daten für jedes Element in der Feldgruppe:
- Wert des Typs INT für die Länge der Daten im Element (bei einem Element des Typs STRING oder einem Datensatz)
- Daten des Elements
- Wert des Typs SHORT für die Optionalität der Dateneingabe bei einem nullfähigen Element. Falls das Element nullfähig ist und einen Nullwert hat, lautet der Wert des Typs SHORT -1.
- Wert des Typs SHORT als Platzhalterelementwert bei einem nullfähigen Element. EGL ignoriert diesen Wert.
- Wert des Typs INT für die Anzahl der Felder
- Folgende Daten für jedes Feld im Datensatz:
- Wert des Typs INT für die Länge der Felddaten
- Daten des Feldes
- Wert des Typs SHORT für die Optionalität der Dateneingabe bei einem nullfähigen Feld. Falls das Feld nullfähig ist und einen Nullwert hat, lautet der Wert des Typs SHORT -1.
- Wert des Typs SHORT als Platzhalterelementwert bei einem nullfähigen Element. EGL ignoriert diesen Wert.
Bei strukturierten Datensätzen übergibt EGL die Daten für die Felder der niedrigsten Ebene. Sie können ein C-Element struct mit derselben Struktur wie der Datensatz erstellen.