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.

Tabelle 1. EGL-Basiselemente und C-Basiselemente
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.

Für Feldgruppen werden die folgenden Daten an die C-Funktion in der hier angegebenen Reihenfolge übergeben:
  1. Wert des Typs INT für die aktuelle Länge der Feldgruppe
  2. Wert des Typs INT für die maximale Größe der Feldgruppe
  3. Folgende Daten für jedes Element in der Feldgruppe:
    1. Wert des Typs INT für die Länge der Daten im Element (bei einem Element des Typs STRING oder einem Datensatz)
    2. Daten des Elements
    3. 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.
    4. Wert des Typs SHORT als Platzhalterelementwert bei einem nullfähigen Element. EGL ignoriert diesen Wert.
Bei nicht strukturierten Datensätzen werden die folgenden Daten an die C-Funktion in der hier angegebenen Reihenfolge übergeben:
  1. Wert des Typs INT für die Anzahl der Felder
  2. Folgende Daten für jedes Feld im Datensatz:
    1. Wert des Typs INT für die Länge der Felddaten
    2. Daten des Feldes
    3. 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.
    4. 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.


Feedback