레코드

레코드는 필드라고 하는 데이터 요소의 세트입니다. 레코드 필드는 레코드 파트 내의 변수 정의입니다. 변수는 다음 유형 중 하나를 기반으로 합니다.
  • 기본 데이터 유형
  • DataItem 파트
  • 다른 레코드
  • 사전
  • ArrayDictionary
  • 위 유형의 배열

레코드는 일반적으로 뷰 또는 관계형 데이터베이스 테이블의 행이나 파일의 레코드 같은 외부 데이터 저장소와 연관됩니다. EGL은 레코드 스테레오타입과 관련 특성의 개념을 통해 이 연관을 작성합니다(스테레오타입 참조). 레코드가 외부 데이터 저장소와 연관되는 경우 레코드의 필드는 외부 데이터 저장소의 데이터 요소에 해당되어야 합니다. SQL(관계형 데이터베이스 레코드)에서는 필드가 데이터베이스 테이블의 열에 해당합니다.

다음 예제는 SQL 데이터베이스에 특화된 EGL 레코드를 표시합니다.
Record CustomerRecord type SQLRecord
	customerNumber INT;            //key field
	customerName CHAR(25);
	customerAddr1 CHAR(25);
	customerAddr2 CHAR(25);
	customerAddr3 CHAR(25);
	customerBalance MONEY;
end
이 레코드는 모델일 뿐입니다. 데이터베이스의 정보를 보유하기 위해 레코드를 사용하려면 먼저 이 파트를 기반으로 변수를 선언해야 합니다.
myCustomer CustomerRecord;

이제 데이터를 넣을 공간이 있지만 여전히 데이터는 없습니다. 레코드 파트가 책장의 블루프린트와 같은 경우 이제 선반(shelf)에 아무 것도 없는 실제 책장을 갖고 있는 것입니다. myCustomer 변수에는 레코드 프로토타입의 각 필드에 사용할 빈 셀프(shelf)가 있습니다. get 문을 사용하여 이 셀프(shelf)를 채웁니다.

EGL 명령문에서는 다음 예제와 같이 점 구문을 사용하여 레코드의 필드를 참조합니다.
myCustomer.customerBalance = 0;

관계형 데이터베이스 테이블의 정보와 일치하는 레코드를 정의할 뿐 아니라 직렬, 색인화 또는 상대 파일의 레코드를 정의할 수 있습니다. 또한 카운터, 총계 등 프로그램이 실행 중인 동안 필요한 정보를 보유할 레코드를 정의할 수 있습니다.

EGL은 고유 특성을 가진 두 가지 특수 유형의 레코드를 포함합니다.
  • 구조화 레코드. 이 레코드의 필드는 번호가 매겨진 레벨을 포함합니다. 레코드 레이아웃에서 필드의 위치가 중요한 경우 이 레코드를 사용하십시오. 구조화 레코드의 내용을 참조하십시오.
  • 가변 길이 레코드. 일반적으로(반드시 그렇지는 않음) 구조화 레코드인 해당 레코드에서는 런타임 시 수정할 수 있는 레코드 레이아웃의 필드를 사용하여 총 레코드 길이에 대한 정보를 보유합니다. 가변 길이 레코드의 내용을 참조하십시오.