레코드 파트 소개
레코드 파트는 기타 데이터 파트의 콜렉션입니다. 레코드 파트 내의 데이터 파트는 필드라고 합니다. 레코드 파트는 임의 수의 필드를 포함할 수 있으며 필드는 기본요소, 데이터 항목 또는 기타 레코드일 수 있습니다.
단순 레코드 파트는 기타 데이터 파트 그룹입니다. 이 예제에서
세 개의 다른 기본요소가 하나의 레코드 파트로 그룹화됩니다.
Record primitiveRec type BasicRecord
integerField INT;
stringField STRING;
charField CHAR(30);
end
이 레코드 파트를 기반으로 변수를 작성하는 것은
DataItem 파트 또는 기본요소를 기반으로 변수를 작성하는 것과 유사합니다. myRecVar primitiveRec;
레코드 변수 자체는 값을 포함하지 않지만 레코드 내의 필드는
값을 포함합니다. 레코드 파트를 기반으로 변수를 가진 후에
개별 변수였던 레코드 내의 필드에도
액세스할 수 있습니다.
myRecVar.integerField = 6;
myRecVar.stringField = "Hello";
myRecVar.charField = "Character field";
그러나 레코드는 하나의 매개변수로 함수에 전달할 수 있도록
하나의 단위로 동작합니다. 예를 들어, 다음과 같습니다.
myFunction(myRecVar);
레코드 스테레오타입
레코드 파트는
스테레오타입을 사용하여 전문화할 수 있습니다(스테레오타입 참조).
스테레오타입 BasicRecord가 있는 레코드 파트의 예제에서와 같이
type 키워드와 함께 레코드 파트의 스테레오타입을 설정합니다.
Record myCustomerRecord type BasicRecord
customerNumber INT;
customerFirstName STRING;
customerLastName STRING;
customerBalance FLOAT;
end
BasicRecord 스테레오타입은 일반적인 용도의 레코드 파트를 나타냅니다. 단순성을 위해 하나 이상의 변수를 함께 그룹화하려는 경우 이 스테레오타입을 사용할 수 있습니다.
레코드 파트는
일반적으로 데이터 소스의 관련 데이터 그룹 또는 레코드를 나타내므로
적용할 수 있는 기타 스테레오타입은 특정 유형의 데이터 소스와 함께
사용하도록 레코드 파트를 전문화합니다. 예를 들어,
SQLRecord 스테레오타입은 SQL 데이터베이스에 사용할
레코드 파트를 채택합니다. 이 유형의 레코드 파트를 작성 중인 경우
특성을 사용하여 레코드 및 해당 필드를 데이터베이스 테이블 및
해당 열에 링크하십시오.
Record myCustomerRecordSQL type SQLRecord
{ tableNames = [["Customer"]], keyItems = [customerNumber] }
customerNumber int {column = "CustomerID"};
customerFirstName string {column = "FirstName"};
customerLastName string {column = "LastName"};
end
이 경우 CustomerID, FirstName,
LastName으로 이름 지정된 열이 있는 Customer로 이름 지정된
데이터베이스 테이블에 링크됩니다. 이와 같이 데이터베이스 테이블에
레코드를 링크하는 경우 EGL은 이 정보를 사용하여 레코드와의 상호작용을 기반으로
데이터베이스에 액세스할 수 있습니다. 즉, 레코드가
데이터베이스의 행이었던 것처럼 사용할 수 있습니다.예를 들어,
다음 코드는 이전 예제에서 정의된 레코드 파트를 사용하여
데이터베이스에서 특정 행을 검색합니다.
myRecordVar myCustomerRecordSQL;
myRecordVar.customerNumber = 5;
get myRecordVar;
SysLib.writeStderr("Name: " +
myRecordVar.customerFirstName + " " +
myRecordVar.customerLastName);
레코드 파트에 추가할 수 있는 기타 스테레오타입에는 다른 파일 유형에 액세스하기 위해 사용되는 IndexedRecord, SerialRecord, RelativeRecord, CSVRecord가 포함됩니다.
구조화된 레코드
레코드 파트는 해당 필드의 조직 및 레이아웃에 대한 세부사항 제공을 위해 구조화될 수 있습니다. 구조화된 레코드에서 각 필드에 기타 필드에 대한 해당 필드의 관계를 표시하는 임의 번호인 레벨 번호가 지정됩니다.
구조화되지 않은 레코드의 필드에는 레벨 번호가 없으므로
각 필드가 동일한 레벨에 있는 것으로 간주됩니다. 또한 구조화된 레코드는
동일한 레벨 번호에 있는 각 필드와 함께 이 방법으로 동작할 수 있습니다.
record structRec1 type BasicRecord
10 field1 int;
10 field2 int;
10 field3 int;
end
레벨 번호를 다르게 지정하면 레코드 내에서 하위 구조가 작성됩니다.
Record CustomerRecord type BasicRecord
10 phoneNumber CHAR(10);
20 areaCode CHAR(3);
20 localNumber CHAR(7);
end
이 경우 필드 areaCode 및 localNumber는
필드 phoneNumber의 서브필드입니다. phoneNumber 필드에
액세스하여 필드의 전체 값을 가져오거나 areaCode 또는
localNumber 필드에 액세스하여
phoneNumber 필드에 보유된 값의 부분을 가져올 수 있습니다.구조화된 레코드는 길이가 수정된 필드로 제한됩니다. 구조화된 레코드의 사용 및 제한사항에 대한 자세한 정보는 레코드의 내용을 참조하십시오.