텍스트 UI 프로그램과 UI 프로그램에서의 세그먼테이션
세그먼테이션은 EGL converse 문 및 시스템 자원 릴리스와 연관되어 있습니다. 여기에서 "대화"는 프로그램과 사용자 사이의 대화를 참조합니다. converse 문은 사용자에게 정보를 표시하고, 응답을 기다리며, 다음 지시를 사용하여 처리를 재개합니다.
세그먼트화되지 않은 프로그램은 사용자 응답을 기다리는 동안 메모리에 남게 됩니다. 세그먼트화된 프로그램은 converse 이후에 종료되고 사용자가 응답한 후에 다시 로드됩니다(IMS™ 환경은 예외. 여기서는 converse 후에 메시지 큐에서 읽기 위해 프로그램이 다시 돌아감). 세그먼테이션 뒤의 아이디어는 사용자가 즉시 응답하지 않는 경우 시스템 자원(예: 메모리 및 잠김 데이터베이스)을 사용 가능 상태로 만드는 것입니다.
- CICS 및 IMS과 같은 환경에서 세그먼트화된 프로그램을 관리합니다.
- converse에서 데이터베이스 변경사항을 커미트하고 데이터베이스 잠금을 해제합니다.
- converse 이후 특정 시스템 변수를 새로 고칩니다.
- 메모리와 같은 시스템 자원을 사용 가능하게 합니다.
- 프로그램이 사용 중인 데이터에 대한 정보를 저장하고 converse 후에 이를 다시 복원합니다.
UI 프로그램이 아닌 EGL 생성 Java™ 프로그램은 항상 세그먼트화되지 않으며 converse 이후에 메모리에 그대로 상주합니다. 그러나 Java와 COBOL 둘 다에서 프로그램을 생성하는 경우 세그먼트화할 프로그램을 선언하거나(프로그램 segmented 특성을 YES로 설정) converseVar.commitOnConverse 시스템 변수를 설정하는 데 아무 영향이 없습니다. 이는 데이터베이스에 변경사항을 커미트하고 converse 이후에 데이터베이스 잠금을 해제하는 것과 같이 Java 환경에서 일부 세그먼트화된 프로그램 동작을 모방합니다.
호출된 프로그램을 세그먼화할 수 있습니다. EGL에서 이를 알게 하려면 호출 체인에 있는 모든 프로그램에 대해 segmented 특성을 YES로 설정해야 합니다.
세그먼트화되지 않은 프로그램은 더 쉽게 코드할 수 있습니다. 예를 들어, converse 후에는 SQL 행을 다시 잠그지 않아도 됩니다. 사용자가 고려하는 동안 SQL 행이 보류된다는 사실과 동일한 SQL 행에 액세스해야 하는 다른 사용자에 대해 성능 문제점을 야기하는 동작이 포함된다는 약점이 있습니다.
- converseVar.commitOnConverse 시스템 변수를 1로 설정할 수 있습니다.
이 경우 EGL은 converse 이전에 다음 조치를 수행합니다.
- 데이터베이스 및 기타 복구 가능한 자원이 커미트됩니다.
- 잠금이 해제됩니다.
- 데이터베이스 open 문에 hold 옵션이 포함될 때를 제외하고 파일과 데이터베이스 위치가 유지되지 않습니다. hold 옵션은 COBOL 프로그램에서만 사용할 수 있습니다.
converseVar.commitOnConverse 설정은 시스템 변수 또는 EGL 테이블에 아무 영향을 미치지 않습니다.
- converse를 핸들링하는 두 번째 기법은
텍스트 UI 프로그램의 segmented 특성을 YES로 설정하는 것입니다.
개발 시 이 프로그램 특성을 변경하거나 런타임 시 converseVar.segmentedMode 시스템 변수를 1로 설정할 수 있습니다.
이 경우 EGL은 converse 이전에 다음 조치를 수행합니다.
- 데이터베이스 및 기타 복구 가능한 자원이 커미트됩니다.
- 잠금이 해제됩니다.
- 데이터베이스 open 문에 hold 옵션이 포함될 때에도 파일과 데이터베이스 위치가 유지되지 않습니다.
- 단일 사용자 EGL 테이블을 새로 고칩니다. 해당 값은 프로그램이 시작될 때와 동일합니다.
- 시스템 변수를 새로 고칩니다. 세그먼트에서 값이 저장되는 변수의 서브세트를 제외하고 해당 값은 프로그램이 시작될 때와 동일합니다.
세그먼트 프로그램의 동작은 converseVar.commitOnConverse 시스템 변수의 값에 영향을 받지 않습니다.
호환성
| 플랫폼 | 문제 |
|---|---|
| IMS 또는 z/OS®용 CICS | IMS 또는 z/OS용 CICS에서 세그먼트화된 프로그램을 사용하는 경우의 이점은 다음과 같습니다.
IMS 또는 z/OS용 CICS에서 세그먼트화되지 않은 프로그램을 사용하는 경우의 이점은 프로그램 상태가 저장 및 복원되지 않으므로 각 사용자에 대한 응답 시간이 세그먼트화된 프로그램보다 적게 걸린다는 점입니다. 사용자가 먼저 호출하는 경우 EGL 세그먼트화된 프로그램은 다음 조치를 수행합니다.
|
| IMS 또는 z/OS용 CICS(계속) | 사용자가 조치(예: 비즈니스 데이터 갱신)를 수행할 때,
런타임 시스템이 프로그램을 메모리로 복원합니다. 프로그램이
처음부터 다시 시작됩니다. 세그먼트화된 프로그램이 다음 조치를 자동으로 수행합니다.
|