다음을 통해 공유


Host-Initiated 처리와 함께 영구 연결을 사용하는 방법

영구 연결은 특정 호출 기간 동안 열린 상태로 유지되는 연결입니다. 애플리케이션은 각 호출에서 연결을 다시 만들 필요가 없으므로 영구 연결을 사용하여 호스트 시작 애플리케이션의 효율성을 높일 수 있습니다. HIP(호스트 시작 처리)와 영구 연결을 사용하는 애플리케이션은 WIP(Windows-Initiated Processing)와 동일한 방식으로 여러 가지 방법으로 작동합니다. 물론 차이점은 windows 애플리케이션이 메인프레임의 요청에 응답하는 동안 메인프레임이 연결을 시작하고 종료한다는 것입니다.

참고

Host Integration Server는 WIP와 동일한 HIP에 대한 많은 동일한 프로그래밍 환경을 지원합니다. 예외는 IMS Connect, DPC(Distributed Program Call) 및 SNALink로, HIP 영구 연결에는 지원되지 않습니다.

HIP와 영구 연결 사용

  1. 연결이 만들어졌음을 나타내는 메인프레임에서 Windows 애플리케이션으로 전화를 받습니다.

    영구 연결을 요청하는 것은 메인프레임 애플리케이션의 책임입니다.

  2. Windows 애플리케이션이 관련 방식으로 요청에 반응하도록 합니다.

    영구 연결을 사용하기 위해 애플리케이션에서 수행해야 하는 구체적인 작업은 없습니다. 연결을 만들고 종료하는 것은 메인프레임 애플리케이션의 책임입니다.

  3. 필요에 따라 HIPServerUserContext의 새 instance 만들어 연결의 상태 쿼리할 수 있습니다.

    새 instance 관련 연결에 대한 컨텍스트 정보를 사용하여 자동으로 만들어집니다. HIPServerUserConext를 사용하여 메인프레임에서 만든 연결 유형을 확인하고 그에 따라 대응할 수 있습니다.

예제

다음 코드는 SDK의 CICS 샘플 애플리케이션에서 가져옵니다. 샘플에서는 서버 개체의 CONNTYPE을 사용하여 다른 작업을 수행합니다.

decimal GetAccountBalance(object[] contextArray)  
        {  
            decimal ReturnBalance = 0.0m;  
            string ConnType;  
            object contextValue;  
  
            _TIServerContext.ReadContext("CONNTYPE", out contextValue, ref contextArray);  
  
            if (contextValue == null)  
                ReturnBalance = 123.45m;  
            else  
            {  
                ConnType = contextValue.ToString();  
                ConnType.ToUpper();  
                switch (ConnType)  
                {  
                    case "OPEN":  
 // Set the initial value of the Account Balance  
 // and save it in a global varaible and return it.  
                        ReturnBalance = 123.45m;  
                        _AccountBalance = ReturnBalance;  
                        break;  
  
                    case "USE":  
 // Increase the value of the global Account Balance  
 // varaible and return its value. Save this new value  
 // in the global variable for later use  
                        _AccountBalance += 100;  
                        ReturnBalance = _AccountBalance;  
                        break;  
  
                    case "CLOSE":  
 // Increase the value of the global Account Balance  
 // variable and return the new value. Set the global variable  
 // to zero because the "CLOSE" call indicates that we are   
 // done with it.  
                        ReturnBalance = _AccountBalance + 150;  
                        _AccountBalance = 0.0m;  
                        break;  
  
                    case "UNKNOWN":  
                    default:  
                        _AccountBalance = 0.0m;  
                        ReturnBalance = 123.45m;  
                        break;  
                }  
            }  
  
            return ReturnBalance;  
        }  

코드 샘플은 전역 변수를 사용하여 정보를 저장합니다. 컨텍스트 개체 자체를 사용하여 정보를 저장할 수도 있습니다. 여기에 표시되지 않지만 컨텍스트 개체를 사용하여 Windows 애플리케이션에 정보를 다시 전달할 수 있습니다.

참고 항목

영구 연결