WebSphere 로고 z/OS용 Classic Federation Server, 버전 9.1
WebSphere 로고 z/OS용 Classic Replication Server, 버전 9.1
WebSphere 로고 z/OS용 Classic Data Event Publisher, 버전 9.1
WebSphere 로고 z/OS용 Data Integration Classic Connector, 버전 9.1


레코드 배열

데이터베이스의 단일 레코드 안에서 다중 어커런스를 갖는 데이터베이스의 데이터 항목 그룹을 레코드 배열이라고 합니다.

일반적으로 COBOL 카피북이나 PL/I 포함 파일에 데이터 정의를 임포트하여 테이블 및 뷰를 맵핑합니다. 카피북이나 포함 파일은 배열 정의를 포함할 수 있습니다. Classic Data Architect는 정의를 BEGINLEVEL 및 ENDLEVEL 블록 내의 명령문으로 변환하여 평탄화하지 않은 배열 정의를 컬럼에 맵핑합니다. 그런 다음 응용프로그램이 BEGINLEVEL문을 포함하는 DDL(Data Definition Language)을 생성합니다. 데이터 서버에서 DDL을 실행하여 사용자 테이블을 작성합니다.

배열 데이터를 쿼리할 때 성능을 최적화할 수 있습니다. 배열 데이터의 변경 캡처를 삽입, 갱신, 삭제 또는 수행하려는 경우 구조를 평탄화해야 합니다. 배열 데이터에 대한 작업에 관한 정보는 관련 배열 주제를 참조하십시오.

COBOL에 대한 작업 관련 정보는 Enterprise COBOL for z/OS Language ReferenceEnterprise COBOL for z/OS Programming Guide를 참조하십시오. PL/I에 대한 작업 관련 정보는 WebSphere Developer for System z PL/I for Windows Language ReferenceEnterprise PL/I for z/OS Programming Guide를 참조하십시오.

고정 길이 배열

고정 길이 배열 구문은 인스턴스 수가 변하지 않는 배열을 정의합니다. 예를 들어 직원 레코드는 직원의 부양 가족 정보(배우자 및 자녀)를 포함할 수 있습니다. 직원이 복수의 부양 가족을 부양할 수 있기 때문에 COBOL OCCURS절이나 PL/I DIMENSION (DIM) 속성을 지정하여 직원 레코드 내의 부양 가족 정보의 배열을 선언할 수 있습니다, 다음 COBOL OCCURS절의 예는 고정 길이 배열을 정의합니다.
    05 DEPENDENTS-ARRAY OCCURS 20 TIMES

직원의 부양 가족 수와 상관 없이 배열은 소스 데이터베이스 레코드에서 20번 나타납니다.

NULL IS 처리

데이터 서버의 쿼리 프로세서는 런타임 시 널(NULL) 배열 인스턴스를 SQL ROW 후보로서 건너뜁니다. 부양 가족 배열의 예에서 직원이 세 명의 부양 가족이 있고 배열이 20번 발생하는 경우 배열의 17개 널(NULL) 인스턴스는 결과 세트에 행으로 나타나지 않습니다.

DDL에 NULL IS 값을 포함시켜서 비교 값을 기초로 주어진 배열 인스턴스를 널(NULL)로 식별할 수 있습니다. 비교 값은 다음 방법으로 널(NULL) 배열 인스턴스를 식별할 수 있습니다.

  • 배열 인스턴스의 첫 번째 컬럼의 시작이 비교 값과 일치합니다(NULL IS null-value).
  • 배열 인스턴스의 각 문자가 단일 문자 비교 값과 일치합니다(NULL IS ALL null-value).
  • 배열의 지정된 컬럼의 시작이 비교 값과 일치합니다 (NULL IS column-name EQUAL null-value).

NULL IS ALL DDL의 다음 예에서는 단일 문자 X가 비교 값입니다. 배열 인스턴스의 각 문자가 X인 경우 배열의 해당 인스턴스는 널(null)입니다.

    MAXOCCURS 20 NULL IS ALL X

레코드 배열의 널(NULL) 인스턴스는 배열의 ALL 인스턴스가 NULL이 아닌 한 결과 세트에 행으로 리턴되지 않습니다. 배열의 모든 인스턴스가 NULL인 경우, Classic 페더레이션은 레코드의 배열이 아닌 정보에 대한 하나의 행을 리턴하고 배열 데이터 항목을 NULL로 설정합니다. 부양 가족 배열 예에서 직원은 부양 가족이 없습니다.

가변 길이 배열

또 다른 일반 레코드 배열 구문은 가변 길이 데이터를 정의합니다. 배열 인스턴스 수가 NUMBER-OF-DEPENDENTS 같이 구조에서 배열 앞에 선행하는 데이터 항목의 값에 따라 다릅니다. COBOL에서 배열 선언은 다음과 같습니다.
    05 NUMBER-OF-DEPENDENTS PIC 9(4) COMP.
    05 DEPENDENTS-ARRAY OCCURS 1 TO 20 TIMES
       DEPENDING ON NUMBER-OF-DEPENDENTS.
다음 예는 PL/I에서 REFER 속성을 사용하여 부양 가족 수에 대한 값이 들어 있는 변수를 가리키는 비슷한 배열 선언을 보여줍니다.
     5 NUMBER_OF_DEPENDENTS BIN FIXED(15),
     5 DEPENDENTS_ARRAY DIM(N1 REFER(NUMBER_OF_DEPENDENTS)),

PL/I에는 COBOL DEPENDING ON절과 동등한 구문이 없으므로, 데이터 서버가 배열 오프셋, 배열 크기 및 레코드 또는 세그먼트 길이를 기초로 자동으로 배열 인스턴스의 수를 계산합니다. 공식은 다음과 같습니다.

<배열 인스턴스 수> = (<레코드 길이> - 1 - <배열 오프셋>)/<배열 크기>

인스턴스 수가 마법사에 의해 생성되는 DDL에 나타나지 않습니다. 이 숫자는 데이터 서버가 카탈로그에 테이블 정의를 작성하기 전에 DDL을 처리하고 테이블 정보의 유효성을 확인할 때 계산됩니다.

제한사항

중첩된 가변 길이 배열을 기초로 하는 테이블이나 가변 길이 배열 뒤에 고정 컬럼을 포함하는 테이블을 맵핑할 수 없습니다. 그 이유는 가변 길이 배열 구문 뒤의 컬럼이 예측 가능한 오프셋에서 나타나지 않기 때문입니다.

테이블 새로 작성 마법사는 다음 제한사항과 함께 PL/I REFER 구문을 지원합니다.

  • REFER절은 다차원 배열의 첫 번째 차원에서 발생해야 합니다.
  • 배열은 나중에 동위가 없어야 하며, 동위를 갖는 상위가 없어야 합니다.
  • REFER절은 상한에 있어야 하고, 하한은 1이어야 합니다.

    상한은 실제 계수를 반영해야 하고, 하한이 1일 때만 실제 계수를 포함합니다.

PL/I 구문 분석기에서 처리하기에 너무 복잡한 REFER절을 만나는 경우, 구문 분석기는 전체 구조를 무시하며 유효성 확인 프로세스가 배열 정의와 관련된 오류를 표시합니다.

관련 개념
다중 레코드 배열 사용 시 성능 고려사항
페더레이션 및 변경 캡처를 위한 레코드 배열 정의
관련 참조
배열 정의 예
관련 정보
Classic 페더레이션을 위한 데이터 맵핑
변경 캡처를 위한 데이터 맵핑


피드백

갱신 아이콘 최종 갱신: 2007-07-11