레코드 파트 소개

레코드 파트는 기타 데이터 파트의 콜렉션입니다. 레코드 파트 내의 데이터 파트는 필드라고 합니다. 레코드 파트는 임의 수의 필드를 포함할 수 있으며 필드는 기본요소, 데이터 항목 또는 기타 레코드일 수 있습니다.

단순 레코드 파트는 기타 데이터 파트 그룹입니다. 이 예제에서 세 개의 다른 기본요소가 하나의 레코드 파트로 그룹화됩니다.
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
이 경우 필드 areaCodelocalNumber는 필드 phoneNumber의 서브필드입니다. phoneNumber 필드에 액세스하여 필드의 전체 값을 가져오거나 areaCode 또는 localNumber 필드에 액세스하여 phoneNumber 필드에 보유된 값의 부분을 가져올 수 있습니다.

구조화된 레코드는 길이가 수정된 필드로 제한됩니다. 구조화된 레코드의 사용 및 제한사항에 대한 자세한 정보는 레코드의 내용을 참조하십시오.