iSeriesC 프로그램에 대해 원시 데이터베이스 파일 정의
iSeriesC 대상 환경에서 원시 데이터베이스 파일에 대해 사용할 EGL 프로그램 및 데이터를 준비할 때 다수의 문제를 고려해야 합니다.
IBM i 파일에 EGL 레코드 조직 적용
EGL 프로그램은 IBM® i 파일 시스템을 사용하여 EGL 파일 I/O 문을 구현합니다. IBM i 파일 시스템은 실제 파일 및 단순 논리적 파일을 지원합니다. 실제 파일은 시스템에 저장된 실제 데이터를 포함합니다. 단순 논리적 파일은 실제 파일의 데이터 보기를 제공합니다. 다음 테이블은 파일 I/O 문 및 해당 iSeriesC 파일 유형을 지원하는 EGL 레코드 스테레오타입을 표시합니다. 개발할 프로그램에 가장 적합한 EGL 레코드 스테레오타입을 선택하십시오. 실제 및 논리적 파일 사용에 대한 세부사항은 IBM i 문서를 참조하십시오.
| EGL 레코드 스테레오타입 | iSeries 파일 유형 |
|---|---|
| IndexedRecord | 실제 파일 또는 논리적 파일 |
| RelativeRecord | 실제 파일 |
| SerialRecord | 실제 파일 |
파일 작성 및 이름 지정
EGL에는 파일에 대해 EGL I/O 문을 사용하기 전에 프로그램이 액세스하는 모든 파일이 시스템에 있어야 합니다. 파일 I/O 문은 프로그램 사용자의 파일을 작성하지 않습니다.
프로그램이 사용하는 파일의 이름을 생성 중에 시스템 자원 이름으로 지정합니다. 파일의 기본 시스템 자원 이름은 레코드 정의 중에 지정된 이름입니다. 기본 이름을 다른 이름을 변경할 수 있습니다. 양식 라이브러리/파일 이름을 사용하여, 라이브러리 이름을 추가하여 파일 이름을 명시적으로 규정할 수 있습니다. 파일 이름을 명시적으로 규정하지 않는 경우 프로그램이 iSeriesC 환경에서 실행될 때 EGL이 라이브러리 목록(*LIBL)에서 파일을 검색합니다.
EGL이 연속, 색인화된 또는 상대 레코드 정의를 기반으로 데이터 설명 스펙(DDS) 정보를 생성하도록 하려면 genDDSFile 빌드 디스크립터 옵션을 예로 설정하십시오.
실제 파일을 작성하려면 실제 파일 작성(CRTPF) 명령을 사용하십시오. DDS 소스 정보가 있거나 없는 EGL 상대 및 연속 레코드 스테레오타입을 가진 실제 파일을 작성할 수 있습니다. 상대 및 연속 레코드 스테레오타입이 있는 파일은 도착 시퀀스 파일입니다. 해당 파일을 작성하기 위해 DDS 소스 정보를 사용하지 않는 경우 CRTPF 명령의 RCDLEN 매개변수를 사용하여 파일의 레코드 길이를 지정해야 합니다.
EGL이 제공하는 DDS 소스 정보를 사용하여 EGL 색인화 레코드 스테레오타입이 있는 실제 및 논리적 파일을 작성하십시오. 실제 파일 작성(CRTPF) 명령을 사용하여 실제 파일을 작성하고 논리적 파일 작성(CRTLF) 명령을 사용하여 논리적 파일을 작성하십시오. 색인화 레코드 스테레오타입을 가진 파일은 키 순서 파일입니다. DDS 소스 정보는 키 필드 지정을 위한 수단을 제공합니다.
데이터베이스 파일 공유
EGL 프로그램은 동일한 작업의 프로그램 또는 다른 프로그램이 있는 레코드 위치 또는 포인터를 공유할 수 있습니다. 파일 공유를 위해 [[[IBM i]]]] CREATE, CHANGE 또는 OVERRIDE 파일 명령에서 SHARE(*YES) 매개변수를 사용하십시오. SHARE(*NO)는 파일에 액세스하는 각 프로그램의 파일 내에서 레코드 위치의 독립성을 유지보수합니다.
상대 레코드 파일 초기화
사용하려고 시도하기 전에 EGL 상대 레코드 스테레오타입에 해당하는 파일 멤버를 초기화하십시오. 상대 레코드 파일은 상대 레코드 번호로 레코드를 검색하고 조작하는 실제 파일에 의해 iSeriesC 환경에서 표시됩니다. 상대 파일 멤버로 레코드를 업데이트하거나 추가하는 경우 레코드의 멤버에 위치가 있어야 합니다. 업데이트의 경우 해당 위치는 올바른 기존 레코드여야 하고 새 레코드의 경우 해당 위치는 삭제된 레코드여야 합니다. 실제 파일 멤버 초기화(INZPFM) 명령을 사용하여 상대 파일 멤버의 레코드를 초기화하십시오.
레코드 잠금 고려사항
EGL get...forUpdate 문은 파일에서 레코드를 읽으며 독점 읽기 허용으로 레코드를 잠급니다. 이는 레코드를 잠근 사용자가 get...forUpdate가 아닌 I/O 문으로 레코드를 해제할 때까지 기타 사용자가 이 레코드를 업데이트할 수 없음을 의미합니다. 하나의 사용자가 다른 사용자가 업데이트를 위해 이미 보유한 레코드를 업데이트하려고 시도하는 경우 EGL 교착 상태 오류가 발생합니다.
EGL이 생성하는 데이터 설명 스펙 사용
genDDSFile 빌드 디스크립터 옵션을 예로 설정하는 경우 EGL이 파일 I/O 문에 사용되는 EGL 레코드 정의에서 DDS 정보를 생성할 수 있습니다.
EGL이 생성하는 DDS 정보는 IBM i 시스템 관리자 또는 프로그램 개발자에게만 유용합니다. 시스템 관리자는 DDS 소스 멤버 또는 수정된 버전을 사용하여 iSeriesC 환경에 없는 파일을 작성할 수 있습니다. 파일 작성을 위한 DDS 소스 정보 사용은 키 필드, 고유 키, 논리적 파일과 같은 IBM i 데이터 관리 함수에 대해 해당 파일을 규정합니다.
EGL에서 프로그램이 액세스하는 파일을 외부적으로 설명할 필요가 없으므로 파일을 작성하기 위해 DDS 소스 정보를 사용할 필요가 없습니다. EGL은 레코드 정의에 의존하는데, 이는 레코드 구조에 대해 *PGM 오브젝트로 빌드됩니다. 그러나 DDS 정보 사용은 프로그램이 iSeriesC 환경에 저장된 레코드 데이터 및 레코드 구조를 정의하는 방법 간의 조화를 보장합니다.
논리적 파일에 대한 제한사항
EGL은 하나의 레코드 형식만 사용하는 단순 논리적 파일을 지원합니다. DDS 소스 정보는 PFILE 키워드에서 하나의 파일만 지정합니다. DDS 키워드 사용에 대한 자세한 정보는 i5/OS™ Information Center를 참조하십시오.