DataTable 파트
DataTable 파트는 애플리케이션 전체에서 사용 가능하게 할 수 있는 표 형식의 데이터 콜렉션으로 구성됩니다. 다른 데이터 파트와는 달리 각각의 DataTable 파트를 자체 EGL 소스 파일에서 선언합니다. DataTable은 기본 파트이며 이는 다른 기본 파트가 없는 파일에서 DataTable을 정의해야 하며 DataTable은 파일과 동일한 이름을 가져야 함을 의미합니다.
DataTable을 use문에 포함하여 프로그램, 라이브러리 또는 핸들러에 표시되게 하십시오. DataTable을 메시지 테이블로만 사용하는 경우에는 프로그램의 msgTablePrefix 특성을 통해 DataTable을 프로그램에 연결할 수 있습니다.
DataTable 파트는 테이블에 대한 값의 2차원 배열을 지정하는 필수 특성 contents를 가지고 있습니다. DataTable 특성의 내용과 이 주제에서 나중에 나오는 예제를 참조하십시오.
contents 특성을 사용하여 지정하는 데이터의 각 열에 대해 변수 선언을 포함해야 합니다. 이 변수 선언은 구조화된 레코드의 구조 필드와 비슷한 구조 필드입니다(레코드 파트 참조). 구조 필드는 항상 고정 길이를 가지고 있습니다(예를 들어, 길이가 정의되지 않은 STRING 변수는 허용되지 않음). 숫자 접두부를 지정하여 이 선언을 하위 구조화할 수 있습니다. 그렇지 않으면 EGL은 모든 필드가 동일한 레벨에 있다고 가정합니다. 하위 구조 필드가 아니라 구조의 최상위 레벨 필드(레벨 번호가 가장 낮음)에 대해서만 컨텐츠를 지정할 수 있습니다. 자세한 정보는 이 주제에서 나중에 나오는 예제를 참조하십시오.
구문

- DataTablePartName
- 데이터 테이블의 이름입니다. 테이블을 사용하는 모든 프로그램 또는 핸들러가 이 이름을 사용하여 액세스합니다. 이 주제에서 "호환성"을 참조하십시오.
- stereotype
- 특정 용도를 위해 DataTable을 특수화하는 스테레오타입입니다. "스테레오타입"을 참조하십시오. 사용 가능한 스테레오타입의 목록은 이 주제에서 "DataTable 스테레오타입"을 참조하십시오. 여기서 스테레오타입을 지정하지 않으면 EGL은 BasicTable 스테레오타입이라고 가정합니다.
- columnDeclarations
- 테이블의 각 열에 대해 데이터의 유형을 각각 지정하는 고정 길이 구조 필드의 목록입니다. 다른 변수 선언과 마찬가지로 각각 세미콜론(;)으로 끝나야 합니다.
- properties
- 데이터 테이블에 대한 특성이 포함된 설정된 값 블록입니다. 이 특성 중 하나인 contents는 필수이며 데이터 테이블에 대한 리터럴 데이터의 배열을 제공합니다. 세부사항은 DataTable 특성의 내용을 참조하십시오.
DataTable 스테레오타입
- BasicTable
- 프로그램 논리에서 사용되는 정보(예: 국가 및 관련 코드의 목록)가 포함되어 있습니다. 기본 스테레오타입입니다.
- MatchInvalidTable
- 사용자 입력과 비교되는 첫 번째 열의 정보가 포함되어 있습니다. 사용자 입력은 제공된 모든 값과 달라야 합니다. 이 스테레오타입은 UI 기술과 함께 사용됩니다. DataTable은 일반적으로 필드의 validatorDataTable 특성에 지정됩니다. 유효성 검증에 실패하면 EGL이 오류 메시지를 표시합니다.
- MatchValidTable
- 사용자 입력과 비교되는 첫 번째 열의 정보가 포함되어 있습니다. 사용자 입력은 제공된 값 중 하나와 일치해야 합니다. 이 스테레오타입은 UI 기술과 함께 사용됩니다. DataTable은 일반적으로 필드의 validatorDataTable 특성에 지정됩니다. 유효성 검증에 실패하면 EGL이 오류 메시지를 표시합니다.
- MsgTable
- 프로그램이 런타임 시 표시해야 할 수 있는 메시지가 포함되어 있습니다.
런타임 메시지를 표시하기 위한 메커니즘은 개별 UI 기술의 함수입니다.
이 유형의 DataTable은 다음과 같은 양식의 이름을 가지고 있습니다.
- 1자 - 4자 접두부(예: "MT1")
- 3자 자국어 코드("자국어 코드" 부록 참조)
- rangeChkTable
- 사용자 입력과 비교되는 첫 번째 및 두 번째 열의 정보가 포함되어 있습니다. 사용자 입력은 하나 이상의 데이터 테이블 행의 첫 번째 및 두 번째 열에 있는 값 사이인 값과 일치해야 합니다. (범위는 경계값을 포함합니다. 사용자 입력은 임의의 행의 첫 번째 또는 두 번째 열에 있는 값과 일치하는 경우 유효합니다.)
데이터 테이블 사용
strTest = myDataTable.column3[4];
이 예제에서 STRING 변수 strTest에는 데이터 테이블의 세 번째 행, 네 번째 열의 값이 포함되어 있습니다.
예제
DataTable myErrorMessages type MsgTable
{ shared = yes }
msgNum INT;
msgText char(30);
{ contents = [
[ 101, "File not found" ] ,
[ 102, "Read error" ] ,
[ 103, "Write error" ] ]
}
end
Function displayError(index INT in)
strTest =
formatNumber(myErrorMessages.msgNum[index]) +
" " +
myErrorMessages.msgText[index];
sysLib.writeStdout(strTest);
end
102 Read error
DataTable myDataTable type basicTable
{ shared = yes }
10 myColumn1 CHAR(10);
15 Column1A CHAR(5);
15 Column1B CHAR(5);
10 myColumn2 CHAR(10);
10 myColumn3 CHAR(10);
{ contents = [
[ "ABCDEFGHIJ", "row1 col2", "row1 col3" ] ,
[ "KLMNOPQRST", "row2 col2", "row2 col3" ] ,
[ "1234567890", "row3 col2", "row3 col3" ] ] }
end
writeStdOut(myDataTable.Column1B[1]); // displays FGHIJ
대부분의 환경에서는 런타임 시 DataTable의 컨텐츠를 수정할 수 있습니다. 런타임 시 작성된 변경사항은 DataTable에 대한 액세스를 가진 모든 프로그램에 표시되며 DataTable이 로드 해제될 때까지 변경사항이 유지됩니다. 변경사항을 작성하는 기능과 실행 단위의 다른 프로그램에 해당 변경사항의 표시 여부는 대상 시스템 및 shared 특성에 의해 영향을 받습니다. DataTable의 로드 해제는 대상 시스템 및 resident 특성에 의해 영향을 받습니다. 자세한 정보는 DataTable 특성를 참조하십시오.
DataTable myConstants type basicTable
10 myConstant1 INT;
10 myConstant2 CHAR(10);
{contents = [ [ 0, ""]]} // single row with initial values
end
그런 다음 다음 예제 코드와 같이 런타임 시 데이터베이스 또는
파일에서 DataTable을 업데이트할 수 있습니다. get constantInfo;
myConstants.myconstant1[1] = constantInfo.myconstant1;
myConstants.myconstant2[1] = constantInfo.myconstant2;
프로그램에서
상수를 선언할 때보다 이 기술을 사용할 때의 장점은 데이터가 변경될 때
데이터베이스를 업데이트하기만 하면 된다는 것입니다. 각각의 프로그램에서
상수를 변경하지 않아도 됩니다. 환경에 따라 DataTable을 사용하면
라이브러리 또는 데이터베이스를 사용하는 것보다 성능이 향상될 수
있습니다. 예를 들어, CICS®에서는
DataTable이 상주하는 것으로 정의하고 CICS 리젼에 대해 시작 중에 이를 초기화할 수 있습니다. 호환성
| 플랫폼 | 문제 |
|---|---|
| COBOL 생성 | DataTable 이름의 최대 길이가 7자입니다. |
| JavaScript 생성 | DataTable이 지원되지 않습니다. |
| JSF 핸들러 | msgTable 유형 DataTable에서 메시지에 대한 삽입이 지원됩니다. 첫 번째 삽입은 {0}입니다. |
| 텍스트 UI | msgTable 유형 DataTable에서 메시지에 대한 삽입이 지원되지 않습니다. |
| 웹 트랜잭션 | msgTable 유형 DataTable에서 메시지에 대한 삽입이 지원됩니다. 첫 번째 삽입은 {1}입니다. |