deleteAfterUse
EGL use문에서 DataTable 파트를 참조하는 경우 deleteAfterUse 특성을 명령문에 포함할 수 있습니다. 이 특성은 COBOL용으로 생성된 애플리케이션을 위해 데이터 테이블이 메모리에 유지되는 기간에 영향을 미칩니다. 이 특성은 Java™ 프로그램에는 영향을 미치지 않습니다.
테이블이 상당한 양의 메모리를 차지하지만 COBOL 환경에서 일련의 호출된 프로그램에 있는 단일 프로그램에서만 사용되는 경우 특성에 대해 YES 값을 지정하십시오.
기본값인 NO를 지정하면 여러 프로그램 세그먼트가 사용할 수 있도록 테이블을 열어 둡니다.
이 특성은 데이터 테이블의 사용 개수에 영향을 미칩니다. 데이터 테이블은 사용 개수가 0(영)에 도달하면 삭제됩니다. 사용 개수는 2차 함수(main() 함수에 의해 직접 호출된 함수)가 프로그램의 데이터 테이블을 처음으로 참조할 때 증분됩니다. 여러 프로그램이 2차 함수의 데이터 테이블을 참조하는 경우 사용 개수도 이에 따라 증분됩니다.
사용 개수는 다음 표의 규칙에 따라 감소합니다.
| deleteAfterUse의 값 | 프로그램이 세그먼트되는지 여부 | 사용 개수가 감소하는 경우: |
|---|---|---|
| NO | 예 | main() 함수가 종료되거나 대화가 발생함 |
| NO | 아니오 | main() 함수가 종료됨 |
| YES | 예 | 2차 함수가 종료되거나 대화가 발생함 |
| YES | 아니오 | 2차 함수가 종료됨 |
겉보기엔 규칙이 복잡하지만 영향은 간단합니다. deleteAfterUse가 YES로 설정되면 EGL은 2차 함수가 데이터 테이블을 능동적으로 사용하는 즉시 데이터 테이블을 삭제합니다. deleteAfterUse가 NO로 설정되면 EGL은 데이터 테이블을 사용하는 모든 프로그램이 종료될 때까지 메모리에 데이터 테이블을 보관합니다.
데이터 테이블의 resident 특성은 연관된 use문의 deleteAfterUse 특성보다 우선합니다. resident가 YES로 설정되면 EGL은 데이터 테이블을 사용하는 모든 프로그램이 종료될 때까지 메모리에 데이터 테이블을 보관합니다.
예제
다음 예제에서는 use문의 deleteAfterUse 특성을 보여줍니다.
use myMessageTable {deleteAfterUse = YES};
호환성
| 플랫폼 | 문제 |
|---|---|
| Java 생성 | Java가 항상 deleteAfterUse가 NO로 설정된 것처럼 작동함 |
| JavaScript 생성 | DataTable이 지원되지 않음 |