구조화 레코드
외부 파일 레코드의 정확한 레이아웃을 일치시키거나 데이터 필드가 매개변수 버퍼에서 정확한 위치에 있어야 하는 외부 프로그램을 호출해야 하는 경우 구조화 레코드 정의를 사용하십시오.
구조화 레코드에는
다음 특성이 있습니다.
- 레코드는 스토리지에서 고정 레이아웃을 갖습니다.
- 레코드는 고정 크기의 스토리지를 점유합니다.
- 변수 값은 스토리지 영역에서 고정된 오프셋과 길이에 표시됩니다.
구조화 레코드를 작성하는 경우 레벨 번호를 사용하여 스토리지에서 레코드 필드의 정확한 레이아웃을 지정하십시오.
구조화
레코드에서 필드의 유형은 고정 길이를 갖고 있어야 합니다.
EGL은 구조 필드(구조화 레코드 필드)에서 다음 유형을
지원합니다.
- 고정 길이 또는 지정된 길이의 기본 유형 또는 데이터 항목(예: INT 또는 CHAR(10), 그러나 STRING은 제외)
- 기타 구조화 레코드(필드는 CHAR 유형으로 처리됨)
- 고정 차원을 가진 위 유형의 배열
구조화 레코드의 특수한 경우는 가변 길이 레코드로 여기서 EGL은 변수를 조사하여 레코드 크기를 판별하는 데 필요한 정보를 찾습니다. 자세한 정보는 가변 길이 레코드의 내용을 참조하십시오.
하위 구조화 레코드
구조화 레코드의 각
필드는 하위 구조화될 수 있습니다. 즉, 작은 필드의 합계로
선언될 수 있습니다. 각 필드에 임시 레벨 번호를 지정할 수 있으며
레벨 번호가 높을수록 하위 구조 필드를 표시합니다. 다음
예제에서는 전화번호를 보유하는 필드를 정의합니다.
Record CustomerRecord type BasicRecord
10 phoneNumber CHAR(10);
20 areaCode CHAR(3);
20 localNumber CHAR(7);
end
이 레코드 파트(예: myCustomer)를 기반으로 변수를 선언하고 정보를 변수로 읽은 후 myCustomer.phoneNumber로 전체 전화번호에 액세스하거나 점 구문(예: myCustomer.phoneNumber.localNumber 또는 간단히 myCustomer.localNumber)을 사용하여 전화번호 일부에 액세스할 수 있습니다.
필드인 구조화 레코드
다음 예제는
다른 구조화 레코드를 필드로 포함하는 구조화
레코드를 표시합니다.
record Outer
5 a INT;
5 b Inner; // looks like a record, but is actually CHAR
end
record Inner
10 c CHAR(10);
15 c2 CHAR(10);
10 d CHAR(10);
end
Outer.b 필드는
Inner 유형으로 정의되며 레코드를 가리킵니다. 그러나
Outer.b의 실제 유형은 CHAR(20)입니다. CHAR 필드의
길이는 레코드의 총 길이로 판별됩니다.
대신 Outer 레코드를 다음과 같은 방법으로 정의할 수 있습니다.
record Outer
5 a INT;
5 b CHAR(20);
10 c CHAR(10);
15 c2 CHAR(10);
10 d CHAR(10);
end
입출력(I/O)의 구조화 레코드
구조화 레코드는 계층 구조 데이터베이스, 메시지 큐 또는
색인화 파일과 같이
특정 유형의 데이터 액세스 기술을 사용하는 입출력(I/O)에
가장 자주 사용됩니다. 다음 레코드 스테레오타입의 경우
필드에 레벨 번호가 없어도 EGL이 구조화 레코드로
가정합니다.
- IndexedRecord
- RelativeRecord
- SerialRecord
- MQRecord
우수 사례는 해당 레코드와 함께 레벨 번호를 사용하여 레코드가 구조화되었음을 명확히 하는 것입니다. 자세한 정보는 이 주제의 끝에 있는 관련 참조를 참조하십시오.