파일 I/O을 위한 resourceAssociation 변수
프로그램이 I/O 조작에서 레코드를 사용하는 경우, EGL은 레코드 특정 recordName.resourceAssociation 변수에 레코드를 보유하는 물리적 파일의 이름이 포함된 것으로 간주합니다(해당 변수가 특정 파일 유형을 지원하는 경우).
EGL은 생성 시간에 사용되는 ResourceAssociation 파트에 따라 변수를 초기화합니다. 자세한 정보는 자원 연관 파트의 내용을 참조하십시오. recordName.resourceAssociation 변수에 다른 값을 배치하여 런타임에 I/O 조작의 오브젝트를 변경할 수 있습니다.
대부분의 경우 recordName.resourceAssociation 구문을 사용해야 합니다. 다음 각 경우와 같이 EGL이 사용자가 의도한 레코드를 판별할 수 있는 경우에는 recordName 부분을 지정할 필요가 없습니다.
- I/O가 프로그램의 단일 레코드에 대해서만 수행됩니다.
- 단일 레코드에 대해서만 I/O를 수행하는 함수에서 resourceAssociation이 사용됩니다.
- I/O가 프로그램의 여러 레코드에 대해 수행되지만 모든 레코드의 파일 이름이 동일합니다. 이 경우 I/O 문에 나타나는 첫 번째 레코드가 암시적 규정자로 사용됩니다.
- 기본 유형
- CHAR
- 데이터 길이
- Java™ 생성 및 디버그를 위해 300자, COBOL 생성을 위해 65자
- 세그먼트 간에 저장 여부
- 예
정의 고려사항
recordName.resourceAssociation으로 이동하는 값은 프로그램이 생성될 때 사용자가 지정한 시스템 및 파일 유형의 유효 시스템 자원 이름이어야 합니다. 둘 이상의 레코드가 동일한 파일 이름을 지정하는 경우 그 파일 이름의 레코드에 대해 resourceAssociation을 수정하면 resourceAssociation의 값은 프로그램에서 동일한 파일 이름의 모든 레코드에 대해 변경됩니다.
- resourceAssociation을 규정하는 레코드와 동일한 EGL 파일 이름의 레코드에 대해 I/O 옵션이 실행되는 경우
- 레코드 변수가 변경되는 경우
resourceAssociation의 현재 설정과 연관된 파일을 닫으려면 close 문을 사용하십시오. 실행 단위가 종료되거나 세그먼트된 converse가 발생할 때 EGL은 열려 있는 모든 파일을 자동으로 닫습니다.
COBOL 환경의 경우 EGL은 resourceAssociation의 컨텐츠를 사용하여 파일에 액세스하기 전에 해당 컨텐츠를 대문자로 폴드합니다. 그러나 resourceAssociation에 배치한 값은 비교 용도를 위해 변경되지 않은 채로 남아 있습니다.
프로그램 간에 공유되는 파일
여러 프로그램이 시스템 자원을 공유하는 경우, 각 프로그램은 동일한 자원을 참조하도록 resourceAssociation을 설정해야 합니다. 동일한 실행 단위의 두 프로그램이 동일한 논리 파일에 액세스하는 경우, 각 프로그램은 생성 시에 resourceAssociation을 동일한 시스템 자원 이름에 설정하여 두 프로그램이 런타임에 동일한 시스템 자원에 액세스하도록 해야 합니다.
두 프로그램이 동일한 EGL 파일 이름을 사용하는 경우, 각 레코드 특정 resourceAssociation 변수는 동일한 값을 포함해야 합니다. 그렇지 않으면 새 시스템 자원이 열릴 때 이전에 열린 시스템 자원이 닫힙니다.
- 생성 시
- 동일한 실행 단위의 두 프로그램이 동일한 논리 파일에 액세스하는 경우, 생성 시 논리 파일에 동일한 시스템 지원 이름을 지정하여 두 프로그램이 런타임에 동일한 실제 파일에 액세스하도록 하십시오.
- 런타임에
- recordName.resourceAssociation을 사용하는 경우 파일에 액세스하는 각 프로그램은 파일에 대해 resourceAssociation을 설정해야 합니다. 동일한 실행 단위의 두 프로그램이 동일한 논리 파일에 액세스하는 경우, 각 프로그램이 resourceAssociation을 동일한 시스템 자원 이름에 설정하여 두 프로그램이 런타임에 동일한 실제 파일에 액세스하도록 해야 합니다.
WebSphere MQ 레코드
WebSphere® MQ 레코드의 시스템 자원 이름은 큐 관리자 이름과 큐 이름을 정의합니다. 다음 형식으로 이름을 지정하십시오.
queueManagerName:queueName
- queueManagerName
- 큐 관리자의 이름
- queueName
- 큐의 이름
표시된 것처럼, 이름은 콜론으로 분리됩니다. 그러나 queueManagerName과 콜론은 생략할 수 있습니다. 시스템 자원 이름은 레코드 특정 resourceAssociation 필드의 초기값이며, 레코드와 연관된 기본 큐를 식별합니다. 자세한 정보는 WebSphere MQ 메시지 큐 액세스의 내용을 참조하십시오.
호환성
| 플랫폼 | 문제 |
|---|---|
| z/OS®용 CICS® |
|
| IMS™ BMP | IMS BMP는 z/OS 일괄처리에 대해 지원되는 것 외에 IMS/VS에 대해 지원되는 것과 동일한 파일 유형도 지원합니다. |
| IMS/VS |
|
| iSeries COBOL | fileType은 seq(순차) 또는 vsam이어야 합니다.
다음 방법 중 하나를 사용하여 값을 resourceAssociation으로 이동할 수 있습니다.
resourceAssociation의
값을 수정하는 경우 iSeries OVRDBF 명령은 다음과 같은 방식으로 작동합니다.
resourceAssociation에 설정된 값은 호출 레벨에서 전파되며 모든 하위 호출 레벨로 변경됩니다. 프로그램에서 이전에 파일을 연 경우에는 값이 전파되지 않습니다. |
| MQSeries | WebSphere MQ 레코드의 시스템 자원 이름은 큐 관리자 이름과 큐 이름을 정의합니다. 다음 형식을 사용하여 이름을 지정하십시오.
표시된 것처럼, 이름은 콜론으로 분리됩니다. 그러나 queueManagerName과 콜론은 생략할 수 있습니다. 시스템 자원 이름은 레코드 특정 resourceAssociation 필드의 초기값으로 사용되며 레코드와 연관된 기본 큐를 식별합니다. |
| z/OS 일괄처리 |
|
예제
다음 예제는 resourceAssociation 변수에 대한 파일 지정을 보여줍니다.
if (process == 1)
myrec.resourceAssociation = "myFile.txt";
else
myrec.resourceAssociation = "myFile02.txt";
end