embed
Mit dem EGL-Schlüsselwort 'embed' können Sie die Felder eines strukturierten Datensatzes in einen zweiten strukturierten Datensatz aufnehmen, ohne eine Unterstruktur erstellen zu müssen. Ein SQL-Datensatz, der ein E/A-Objekt für den Zugriff auf relationale Datenbanken ist, muss eine solche flache Struktur haben.
Der einzige Grund für die Verwendung des Schlüsselworts embed anstelle
eines Strukturfeldnamens ist es, dass so verhindert werden kann, dass eine Hierarchieebene hinzukommt.
Für ein vom Schlüsselwort embed angegebenes Strukturfeld gelten folgende Beschränkungen:
- Es kann auf das Format eines Datensatzabschnitts, aber nicht auf einen Datenelementabschnitt verweisen.
- Es kann keine Feldgruppe angeben und keine Angabe eines Primitive-Typs enthalten.
Syntax

- Ebene
- Eine Nummer für die Ebene im strukturierten Datensatz.
- Datensatztyp
- Der Name aus einer Datensatzdefinition. Die Felder aus dieser Definition werden an der aktuellen Position und auf der angegebenen Ebene eingefügt.
Beispiele
Im folgenden Beispiel fügt das Schlüsselwort embed alle Felder aus dem
Datensatz address in record1 ein:
Record address type basicRecord
10 streetAddress1 CHAR(30);
10 streetAddress2 CHAR(30);
10 city CHAR(20);
end
Record record1 type serialRecord
{
fileName = "myFile"
}
10 person CHAR(30);
10 embed address;
end
Die interne Struktur des Datensatzabschnitts ist nun flach:
Record record1 type serialRecord
{
fileName = "myFile"
}
10 person CHAR(30);
10 streetAddress1 CHAR(30);
10 streetAddress2 CHAR(30);
10 city CHAR(20);
end
Sie können das Schlüsselwort embed auch verwenden, um
identische Strukturen in zwei Datensätzen zu deklarieren. Das Schlüsselwort überschreibt
die Eigenschaften dieser Datensätze nicht mit den Eigenschaften aus dem eingebetteten Datensatz.
Record common type serialRecord
{
fileName = "mySerialFile"
}
10 a BIN(10);
10 b CHAR(10);
end
Record recordA type indexedRecord
{
fileName = "myFile",
keyItem = "a"
}
embed common; // Akzeptiert die Struktur von 'common',
// nicht die Eigenschaften
end
Record recordB type relativeRecord
{
fileName = "myOtherFile",
keyItem = "a"
}
embed common;
end
Die beiden letzten Datensatzabschnitte entsprechen diesen Deklarationen:
Record recordA type indexedRecord
{
fileName = "myFile",
keyItem = "a"
}
10 a BIN(10);
10 b CHAR(10);
end
Record recordB type relativeRecord
{
fileName = "myOtherFile",
keyItem = "a"
}
10 a BIN(10);
10 b CHAR(10);
end