RECEIVE_ALLOCATE_EX
RECEIVE_ALLOCATE_EX 동사는 연결 관리자의 등록을 허용하는 새 VCB 구조를 허용합니다.
구문
typedef struct receive_allocate_ex {
unsigned short opcode;
unsigned char opext;
unsigned char format;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_name[64];
unsigned char tp_id[8];
unsigned long conv_id;
unsigned char sync_level;
unsigned char conv_type;
unsigned char user_id[10];
unsigned char lu_alias[8];
unsigned char plu_alias[8];
unsigned char mode_name[8];
unsigned char reserv3[2];
unsigned long conv_group_id;
unsigned char fqplu_name[17];
unsigned char pip_incoming;
unsigned long timeout;
unsigned char password[10];
unsigned char reserv5[2];
unsigned char attach_id[8];
}
멤버
opcode
제공된 매개 변수: RECEIVE_ALLOCATE_EX
opext
제공된 매개 변수입니다. 동사 연산 확장 AP_BASIC_CONVERSATION 지정합니다.
format
예약된 매개 변수입니다.
primary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 기본 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다.
secondary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 보조 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다.
tp_name
제공된 매개 변수입니다. tp_name 반환된 매개 변수입니다. 그러나 애플리케이션은 tp_name (즉, 64자)를 저장하고 이름을 EBCDIC 공간(16진수 X'40')으로 초기화할 수 있는 충분한 버퍼 공간을 할당해야 합니다.
반환된 동사에는 원격 시스템에서 보낸 실제 TP 이름이 포함됩니다.
tp_id
반환된 매개 변수입니다. 로컬 TP를 식별합니다.
conv_id
반환된 매개 변수입니다. 대화 식별자를 제공합니다. 두 파트너 TP 간에 APPC가 설정한 대화를 식별합니다.
sync_level
반환된 매개 변수입니다. 대화의 동기화 수준을 지정합니다. TP가 데이터 수신 확인을 요청하고 데이터 수신을 확인할 수 있는지 여부를 결정합니다.
AP_NONE 이 대화에서 확인 처리가 사용되지 않도록 지정합니다.
AP_CONFIRM_SYNC_LEVEL TP가 이 대화에서 확인 처리를 사용할 수 있도록 지정합니다.
AP_SYNCPT TP가 이 대화에서 동기화 지점 수준 2 확인 처리를 사용할 수 있도록 지정합니다.
conv_type
반환된 매개 변수입니다. MC_ALLOCATE 또는 ALLOCATE를 사용하여 파트너 TP가 선택한 대화 유형을 지정합니다. 다음은 가능한 값입니다.AP_BASIC_CONVERSATION
AP_MAPPED_CONVERSATION
user_id
원격 시스템에서 보낸 EBCDIC user_idlu_alias
제공된 매개 변수입니다. 로컬 LU 별칭입니다. 연결 관리자를 등록하려면 를 제공해야 합니다. 호스트 통합 서버 하위 도메인 내에서 지정된 로컬 LU 별칭에 대해 하나의 연결 관리자만 등록할 수 있습니다. 이 lu_alias 대해 다른 연결 관리자 프로세스가 이미 등록된 경우 다음 오류가 반환됩니다.primary_rc = AP_STATE_CHECK(0x0002) secondary_rc = AP_LU_ALREADY_REGISTERED(0x0000050A)
호스트 통합 서버가 이 연결 관리자를 등록할 수 없음을 나타냅니다.
plu_alias
반환된 매개 변수입니다. 들어오는 할당을 시작한 파트너 LU가 로컬 TP에 알려진 별칭을 제공합니다. ASCII 문자 문자열입니다.mode_name
반환된 매개 변수입니다. 파트너 TP에서 MC_ALLOCATE 또는 ALLOCATE 로 지정된 모드 이름을 제공합니다. 구성 중에 정의된 네트워킹 특성 집합의 이름입니다. mode_name EBCDIC 문자열 형식입니다.reserv3
예약된 매개 변수입니다.conv_group_id
대화 그룹 식별자입니다.fqplu_name
반환된 이 매개 변수는 정규화된 LU 이름을 제공합니다.pip_incoming
제공된 매개 변수입니다. 이 연결 관리자가 PIP 데이터를 포함하는 들어오는 FMH-5 연결을 수락하는 경우 이를 AP_YES 설정합니다. 그렇지 않으면 AP_NO 설정합니다.반환된 매개 변수: PIP 데이터가 들어오는 Attach에 있는 경우 AP_YES 설정됩니다. PIP 데이터가 없으면 AP_NO 설정됩니다.
timeout
시간 제한(초)입니다. 0xFFFFFFFF 값을 사용하여 영원히 기다릴 수 있습니다.password
반환된 매개 변수: 원격 시스템에서 보낸 EBCDIC 암호입니다. 원격 시스템에서 "암호 대체"(암호 암호화)를 지원하는 경우 암호화된 암호는 RECEIVE_ALLOCATE_EX 수신됩니다. 이 암호를 해독할 수 있는 기능이 없으므로 애플리케이션에서 사용자 자격 증명을 확인할 수 없습니다.reserv5
예약된 매개 변수입니다.attach_id
반환된 매개 변수입니다. 항상 0으로 설정합니다. 이 필드는 타사 SNA 제품과의 원본 호환성을 위해 정의됩니다.
설명
Host Integration Server는 일부 호출 가능한 트랜잭션 프로그램의 디자인 및 구현 을 간소화하기 위해 APPC RECEIVE_ALLOCATE_EX 및 RECEIVE_ALLOCATE_EX_END 지원합니다. 이 함수를 사용하면 APPC 애플리케이션이 특정 로컬 APPC LU를 통해 호스트 통합 서버에서 받은 들어오는 모든 FMH-5 연결 요청을 수신할 수 있으므로 애플리케이션이 "연결 관리자"로 작동할 수 있습니다. 연결 관리자는 들어오는 FMH-5 연결 요청을 처리하여 LU6.2 대화를 시작하는 프로그램입니다. APPC 애플리케이션이 RECEIVE_ALLOCATE_EX 아니라 RECEIVE_ALLOCATE 호출하면 Host Integration Server에서 연결 관리자 기능을 처리합니다. APPC 애플리케이션 내에서 연결 관리자 기능을 구현하려면 다음이 발생합니다.
애플리케이션은 EBCDIC 공간의 tp_name (16진수 X'40')과 함께 RECEIVE_ALLOCATE_EX 함수에 로컬 APPC LU 별칭을 제공합니다.
호스트 통합 서버가 해당 로컬 APPC LU를 사용하여 LU6.2 세션을 통해 들어오는 FMH-5 연결 요청을 받으면 호스트 통합 서버는 요청을 애플리케이션으로 라우팅합니다.
RECEIVE_ALLOCATE_EX 완료되면 애플리케이션은 다음을 담당합니다.
FMH-5 연결 수락 또는 거부
대화 수준 보안 확인 및
연결 요청을 수락하는 경우 Win32 프로세스 컨텍스트 내에서 요청을 완전히 처리합니다.
들어오는 새 연결 요청에 대한 수신 대기를 중지하기 위해 애플리케이션은 RECEIVE_ALLOCATE_EX_END 호출합니다.
프로세스에서 RECEIVE_ALLOCATE_EX 문제가 발생한 후 프로세스는 특정 TP 이름으로 RECEIVE_ALLOCATE 호출하면 안 됩니다. 마찬가지로 프로세스가 RECEIVE_ALLOCATE 호출하는 경우 해당 프로세스는 나중에 RECEIVE_ALLOCATE_EX 호출하지 않아야 합니다. 즉, 호출 가능한 TP를 지원하는 프로세스 기간 동안 프로세스는 RECEIVE_ALLOCATE 또는 RECEIVE_ALLOCATE_EX 단독으로 호출해야 하지만 둘 다 호출하지 않아야 합니다.
대화 ID는 자체 애플리케이션 컨텍스트 내에서만 유효하므로 애플리케이션에서 들어오는 연결 요청을 다른 프로세스로 디스패치할 수 없습니다.
참고
: Host Integration Server는 연결 관리자 애플리케이션 자동 시작을 지원하지 않습니다. 즉, 애플리케이션이 RECEIVE_ALLOCATE_EX 호출하는 경우 들어오는 연결 요청이 로컬 LU를 통해 도착하기 전에 애플리케이션을 시작해야 합니다.
현재 사양은 보안 표시기(FMH-5 연결의 바이트 4)를 반환하지 않습니다. 따라서 애플리케이션은 다음을 포함하는 들어오는 연결 요청을 수용해야 합니다.
user_id 또는 암호(첨부에 보안이 전송되지 않은 경우)
user_id 전용(예: "이미 확인된" 연결의 경우) 또는
user_id 및 암호(사용자 권한 부여가 필요한 경우).
LU6.2 BIND 요청에서 호스트 통합 서버는 사용자 보안, 이미 확인된 및 암호 대체를 포함하는 들어오는 FMH-5 연결 요청에 대한 지원을 나타냅니다. 호스트 통합 서버는 영구 확인을 요청하는 들어오는 연결을 지원하지 않습니다.
RECEIVE_ALLOCATE_EX 함수를 사용하면 tp_name 모든 EBCDIC 공간(X'40')으로 설정되고 로컬 LU 별칭이 lu_alias 필드에 제공된 경우 애플리케이션이 연결 관리자로 등록할 수 있습니다. 지정된 lu_alias 대한 연결 관리자로 등록되면 Host Integration Server는 lu_alias 통해 수신되는 모든 연결을 애플리케이션으로 라우팅합니다. 호스트 통합 서버가 들어오는 FMH-5 연결 요청을 라우팅하는 방법에 대한 자세한 내용은 아래를 참조하세요.
애플리케이션은 RECEIVE_ALLOCATE_EX 두 번 이상 호출하여 하나 이상의 로컬 LU에 대한 연결 관리자로 등록할 수 있습니다. 그러나 SNA 하위 도메인 내의 지정된 lu_alias(즉, 모든 호스트 통합 서버 및 연결된 호스트 통합 서버 클라이언트에서) 하나의 연결 관리자만 등록할 수 있습니다. 애플리케이션은 빈 tp_name 및 빈 lu_alias 제공할 수 없습니다. 즉, 애플리케이션은 SNA 하위 도메인에 대해 들어오는 모든 연결 요청을 수신하기 위해 기본 연결 관리자로 등록할 수 없습니다.
RECEIVE_ALLOCATE_EX 완료되면 애플리케이션은 다음을 담당합니다.
첨부를 수락할지 여부를 결정합니다. Host Integration Server는 TP(트랜잭션 프로그램)를 구성하는 메커니즘을 제공하지 않습니다. 애플리케이션에는 지원할 tp 이름을 정의하는 고유한 수단이 있어야 합니다.
허용되는 경우 애플리케이션은 대화 보안 특성(user_id, 암호)을 확인하고 새 대화 처리를 처리해야 합니다.
tp_id 및 conv_id 별도의 처리 프로세스에 전달할 수 없습니다. 모든 TP 처리는 애플리케이션에서 제공해야 합니다.
애플리케이션이 연결 요청을 거부하도록 선택하는 경우 [MC_]DEALLOCATE 를 호출하여 완료된 RECEIVE_ALLOCATE_EX 받은 conv_id dealloc_type 매개 변수의 적절한 이유 코드와 함께 다음과 같은 새로운 확장 코드를 사용해야 합니다.
#define AP_DEALLOC_SECURITY_NOT_VALID_PASSWORD_EXPIRED 0x10
#define AP_DEALLOC_SECURITY_NOT_VALID_PASSWORD_INVALID 0x11
#define AP_DEALLOC_SECURITY_NOT_VALID_USERID_REVOKED 0x12
#define AP_DEALLOC_SECURITY_NOT_VALID_USERID_INVALID 0x13
#define AP_DEALLOC_SECURITY_NOT_VALID_USERID_MISSING 0x14
#define AP_DEALLOC_SECURITY_NOT_VALID_PASSWORD_MISSING 0x15
#define AP_DEALLOC_SECURITY_NOT_VALID_GROUP_INVALID 0x16
#define AP_DEALLOC_SECURITY_NOT_VALID_USERID_REVOKED_IN_GROUP 0x17
#define AP_DEALLOC_SECURITY_NOT_VALID_USERID_NOT_DEFD_TO_GROUP 0x18
#define AP_DEALLOC_SECURITY_NOT_VALID_NOT_AUTHORIZED_AT_REMOTE_LU 0x19
#define AP_DEALLOC_SECURITY_NOT_VALID_NOT_AUTHORIZED_FROM_LOCAL_LU 0x1A
#define AP_DEALLOC_SECURITY_NOT_VALID_NOT_AUTHORIZED_TO_TRANSACTION_PROGRAM 0x1B
#define AP_DEALLOC_SECURITY_NOT_VALID_INSTALLATION_EXIT_FAILED 0x1C
#define AP_DEALLOC_SECURITY_NOT_VALID_PROCESSING_FAILURE 0x1D
#define AP_DEALLOC_SECURITY_NOT_VALID_PROTOCOL_VIOLATION 0x1E
애플리케이션이 위의 dealloc_type 설정하면 호스트 통합 서버는 FMH-5 연결 요청을 거부할 때 원격 시스템에 보낸 FMH-7 오류 내에서 해당 센스 코드를 보냅니다.
#define AP_SECURITY_NOT_VALID_PASSWORD_EXPIRED APPC_FLIPL(x080fff00)
#define AP_SECURITY_NOT_VALID_PASSWORD_INVALID APPC_FLIPL(x080fff01)
#define AP_SECURITY_NOT_VALID_USERID_REVOKED APPC_FLIPL(x080fff02)
#define AP_SECURITY_NOT_VALID_USERID_INVALID APPC_FLIPL(x080fff03)
#define AP_SECURITY_NOT_VALID_USERID_MISSING APPC_FLIPL(x080fff04)
#define AP_SECURITY_NOT_VALID_PASSWORD_MISSING APPC_FLIPL(x080fff05)
#define AP_SECURITY_NOT_VALID_GROUP_INVALID APPC_FLIPL(x080fff06)
#define AP_SECURITY_NOT_VALID_USERID_REVOKED_IN_GROUP APPC_FLIPL(x080fff07)
#define AP_SECURITY_NOT_VALID_USERID_NOT_DEFD_TO_GROUP APPC_FLIPL(x080fff08)
#define AP_SECURITY_NOT_VALID_NOT_AUTHORIZED_AT_REMOTE_LU APPC_FLIPL(x080fff09)
#define AP_SECURITY_NOT_VALID_NOT_AUTHORIZED_FROM_LOCAL_LU APPC_FLIPL(x080fff0A)
#define AP_SECURITY_NOT_VALID_NOT_AUTHORIZED_TO_TRANSACTION_PROGRAM APPC_FLIPL(x080fff0B)
#define AP_SECURITY_NOT_VALID_INSTALLATION_EXIT_FAILED APPC_FLIPL(x080fff0C)
#define AP_SECURITY_NOT_VALID_PROCESSING_FAILURE APPC_FLIPL(x080fff0D)
#define AP_SECURITY_NOT_VALID_PROTOCOL_VIOLATION APPC_FLIPL(x080fff0E)
RECEIVE_ALLOCATE_EX 호출하기 전에 애플리케이션은 로컬 APPC LU에 대한 구성 설정을 확인하여 LU가 동기화 수준 2를 지원하는지 또는 기본 LU 풀의 멤버인지 확인할 수 있습니다. 이렇게 하려면 향상된 GET_LU_STATUS API를 사용합니다.
지정된 로컬 APPC LU에 대한 연결 관리자로 등록을 취소하려면 애플리케이션이 아래에 설명된 RECEIVE_ALLOCATE_EX_END 호출해야 합니다. 애플리케이션이 둘 이상의 lu_alias 대한 연결 관리자로 등록된 경우 각 lu_alias 대해 RECEIVE_ALLOCATE_EX_END 호출해야 합니다.
애플리케이션은 들어오는 연결 요청을 적시에 처리하기 위해 항상 보류 중인 RECEIVE_ALLOCATE_EX 있어야 합니다. 애플리케이션이 새 RECEIVE_ALLOCATE_EX 게시하지 못하면 호스트 통합 서버는 애플리케이션이 호스트 통합 서버에서 실행 중인 경우 애플리케이션에 대해 최대 2,048개의 들어오는 연결을 큐에 대기하거나 HIS 클라이언트에서 실행되는 경우 256을 큐에 대기합니다. 제한을 초과하면 Host Integration Server는 X'084B6031' 또는 AP_TRANS_PGM_NOT_AVAIL_RETRY 코드로 연결 요청을 거부합니다.