세그먼트된 프로그램 디자인 고려사항

세그먼트된 프로그램을 디자인할 때는 몇 가지 요소를 고려해야 합니다.

  • 호출 대상 프로그램이 세그먼트된 converse를 수행하는 경우, 즉 프로그램에 converse 문이 포함되어 있으며 segmented 특성이 YES로 설정된 경우에는 다음 고려사항이 적용됩니다.
    • 호출 체인에 있는 모든 프로그램의 segmented 특성은 YES로 설정되어 있어야 합니다. 즉, 프로그램 A(세그먼트되지 않음)가 프로그램 B(세그먼트되지 않음)를 호출하고 프로그램 B가 프로그램 C(세그먼트됨)를 호출하는 경우 프로그램 A 및 B의 segmented 특성 또한 YES로 설정되어 있어야 합니다.
    • 프로그램을 세그먼트된 프로그램으로 변경하면 더 많은 자원이 이용되므로 세그먼트된 converse를 수행하는 프로그램을 호출하는 것은 실행 단위의 성능에 악영향을 줍니다.
  • 세그먼테이션은 현재 시스템 태스크를 종료시킵니다. CICS® 및 IMS™는 태스크가 종료될 때 복구 가능한 모든 자원을 커미트합니다.
  • 레코드는 세그먼트된 converse 전체에서 업데이트 보류(잠김)될 수 없습니다.
    참고: converse 전체에서 레코드를 업데이트 보류하는 것은 사용자 대기 시간 중에 자원을 잠가 추가 사용자가 레코드에 액세스할 수 없게 하므로 어느 시스템에서든 지양하는 것이 좋습니다.

    converse 전체에서 레코드를 업데이트 보류하는 데 대한 더 나은 접근법은 다음 예제에 있는 코드를 참조하십시오.

    customerRecord Customer;
    savedRecord Customer;
    updateComplete char(1) = "N";
    
    // check that data has not changed during user think time
    customerRecord.CustomerID = 1;
    get customerRecord;
    while (updateComplete == "N")
      move customerRecord to savedRecord byName;
      move customerRecord to custDetailForm byName;
      converse custDetailForm;
      // validate input data on custDetail form
      // assuming validation passed, continue
      get customerRecord forUpdate;
      // check all fields in customerRecord to determine 
      // whether anything changed during user think time
      if (customerRecord.field1 == savedRecord.field1
      && customerRecord.field2 == savedRecord.field2
       ...
      && customerRecord.fieldn == savedRecord.fieldn )
        // if no changes, move changed data from form to customerRecord
        replace customerRecord;
        updateComplete = "Y";
      else
        // message to user that data was modified by someone else
      endend
    record Customer type ...
      field1 ...
      field2 ...
      ...
      fieldn ...
    end
  • forUpdate 키워드로 작성된 잠금, 그리고 파일 또는 데이터베이스 내에서의 현재 위치는 세그먼트된 모드로 실행 중인 경우 converse 문 도중에 사라집니다.
  • 프로그램 구조 및 I/O 오브젝트는 프로세스 내의 롤아웃/롤인으로 인해 발생하는 응답 시간 지연의 길이를 결정합니다.
    • 지연 시간은 양식에 대량의 변수 필드 데이터가 있거나, 레코드가 많고 사용자 대기 시간이 짧은 세그먼트된 프로그램에서 가장 깁니다.
    • 지연 시간은 양식에 소량의 변수 필드 데이터가 있거나, 레코드가 적고 사용자 대기 시간이 긴 메뉴 유형 프로그램에서 가장 짧습니다.
  • CICS에서, 코드가 세그먼트된 모드로 실행 중일 때 터미널의 PROFILE 또는 TYPETERM 항목에 대해 UCTRAN 피연산자가 YES로 설정된 경우 CICS는 양식의 사용자 데이터를 대문자로 변환합니다. CICS에 의한 사용자 데이터 변환으로 인해 EGL upperCase 특성은 아무런 영향을 주지 않습니다.
  • CICS 시스템에서 사용자가 Enter 키 또는 기능 키를 누르면, 시스템은 입력 데이터를 CICS를 통해 EGL 프로그램으로 리턴합니다. CICS는 데이터의 시작을 검사하며 BMS(Basic Mapping Support) 명령을 검색합니다. 세그먼트된 프로그램을 디자인할 때는 EGL 양식의 첫 번째 실제 변수 필드가 유효 BMS 페이징 명령을 포함하지 않는지 확인하십시오. CICS의 세그먼트된 프로그램에 대한 디자인 고려사항의 자세한 정보는 CICS 문서를 참조하십시오.