numElementsItem
numElementsItem 특성은 사용자의 코드가 변수 길이 레코드에 대해 작업하는 경우 사용되는 필드를 식별합니다.
- SerialRecord
- IndexedRecord
- MQRecord
가변 길이 레코드에는 마지막 최상위 구조 필드처럼 구조화된 필드 배열이 있어야 합니다. numElementsItem이 참조하는 필드는 쓰여지는 실제 배열 요소 수를 포함하는 9자리 이하의 정수입니다. 값의 범위는 0 - 최대값이 될 수 있으며, 최대값은 구조화된 필드 배열에 대해 선언에 지정된 요소 수입니다.
- 레코드의 고정 길이 파트의 바이트 수
- numElementsItem 필드의 값에 종료 배열의 각 요소에 있는 바이트 수를 곱한 값
numElementsItem 필드는 가변 길이 레코드의 고정 길이 파트에 있는 필드여야 합니다. 규정되지 않은 참조를 사용하여 요소 필드 수의 이름을 지정하십시오. 예를 들어, myRecord.myField02가 아니라 myField02를 사용하십시오.
파일에서 레코드를 읽는 경우 numElementsItem 특성은 영향을 미치지 않습니다.
가변 길이 레코드를 사용하는 경우, lengthItem 특성, numElementsItem 특성 또는 둘 다를 지정해야 합니다. EGL이 파일에 레코드를 쓸 때 두 특성이 모두 있으면 레코드를 쓰기 전에 numElementsItem 필드를 사용하여 레코드의 전체 길이를 계산한 후 해당 길이를 lengthItem이 지정하는 변수에 배치합니다. 자세한 정보는 가변 길이 레코드의 내용을 참조하십시오.
예제
Record SerialRecordPart2 type serialRecord
{
fileName = "myFile",
numElementsItem = myField02
}
10 myField01 BIN(4); // 2 bytes long
10 myField02 NUM(3); // 3 bytes long
10 myField03 CHAR(20)[3]; // 60 bytes long
20 mySubField01 CHAR(10);
20 mySubField02 CHAR(10);
end
numElementsItem 필드 myField02가 2로 설정된 SerialRecordPart2를 기반으로 레코드를 쓴다고 가정하십시오. EGL은 myField01, myField02와 myField03의 첫 두 요소를 포함하는 가변 길이 레코드를 쓰게 됩니다.
호환성
| 플랫폼 | 문제 |
|---|---|
| CICS® | 가변 길이 레코드는 임시 스토리지 큐와 임시 데이터 큐에 대해 지원되지 않습니다. |
| IMS/VS | numElementsItem 및 lengthItem은 IMS™ 메시지 큐와 연관된 직렬 파일에 대해서만 지원됩니다. EGL은 큐에 쓰는 레코드에 IMS 메시지 헤더(길이, ZZ 필드 및 트랜잭션 코드)를 추가합니다. EGL은 큐에서 읽을 때 레코드에서 헤더를 제거합니다. 레코드의 정의에는 헤더가 포함되지 않아야 합니다. |
| IMS BMP | IMS 메시지 큐와 연관된 파일의 경우 IMS/VS에 대한 고려사항이 IMS BMP에 적용됩니다. 그렇지 않으면 z/OS® 일괄처리에 대한 고려사항이 적용됩니다. |
| iSeriesC | 지원되지 않습니다. |
Java 생성 |
Java™와 디버그는 seqws, mq 및 ibmcobol 파일 유형에 대해 가변 길이 레코드를 지원합니다. |
| z/OS 일괄처리 | 가변 길이 레코드는 VSAM 파일 및 z/OS 순차 파일에 대해 지원됩니다. 비VSAM 순차 파일의 가변 길이 레코드에는 4바이트 헤더가 있습니다(2바이트 길이 필드와 2바이트 채움 필드). EGL은 가변 레코드 형식의 비VSAM 순차 파일에 쓸 때 4바이트 가변 길이 헤더를 추가합니다. EGL은 해당 레코드를 읽을 때 헤더를 제거합니다. 레코드의 정의에는 헤더가 포함되지 않아야 합니다. 파일이 GSAM 파일인 경우 EGL은 파일에 쓸 때 2바이트 선행 길이 필드를 추가합니다. EGL은 파일에서 읽을 때 레코드에서 헤더를 제거합니다. 레코드의 정의에는 헤더가 포함되지 않아야 합니다. |