embed
EGL embed 키워드를 사용하면 하위 구조를 작성하지 않고 구조화된 한 레코드의 필드를 두 번째 구조화된 레코드에 포함할 수 있습니다. 관계형 데이터베이스 액세스를 위한 I/O 오브젝트인 SQL 레코드는 이러한 평면 구조를 가져야 합니다.
구조 필드 이름 대신 embed 키워드를
사용하는 유일한 이유는 계층 레벨 추가를 방지하기 위해서입니다.
embed 키워드에 의해 식별된 구조 필드에는
다음과 같은 제한사항이 있습니다.
- 레코드 파트의 형식을 가리킬 수 있지만 DataItem 파트는 가리킬 수 없음
- 배열을 지정하거나 기본 유형 스펙을 포함할 수 없음
구문

- level
- 구조화된 레코드 내의 레벨 번호입니다.
- recordType
- 레코드 정의에서 제공되는 이름입니다. 이 정의에서 제공되는 필드는 현재 위치 및 지정된 level에서 포함됩니다.
예제
다음 예제에서는 embed 키워드가 address
레코드의 모든 필드를 record1에 포함합니다.
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
레코드 파트의 내부 구조는 이제 평면입니다.
Record record1 type serialRecord
{
fileName = "myFile"
}
10 person CHAR(30);
10 streetAddress1 CHAR(30);
10 streetAddress2 CHAR(30);
10 city CHAR(20);
end
embed 키워드를 사용하여 두 레코드에서
동일한 구조를 선언할 수도 있습니다. 이 키워드는 해당 레코드의 특성을
임베디드 레코드의 특성으로 겹쳐쓰지 않습니다.
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; // accepts the structure of common,
// not the properties
end
Record recordB type relativeRecord
{
fileName = "myOtherFile",
keyItem = "a"
}
embed common;
end
마지막 두 레코드 파트는 이 선언과 동등합니다.
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