MC_ALLOCATE
MC_ALLOCATE 동사는 호출 트랜잭션 프로그램(TP)에서 발급됩니다. LU(로컬 논리 단위)와 파트너 LU 간에 세션을 할당하고( RECEIVE_ALLOCATE 함께) 호출하는 TP와 호출된 TP 간에 대화를 설정합니다. 이 동사가 성공적으로 실행되면 APPC는 대화 식별자(conv_id)를 생성합니다. conv_id 다른 모든 APPC 대화 동사에 필요한 매개 변수입니다.
다음 구조체는 MC_ALLOCATE 동사에서 사용하는 동사 제어 블록(VCB)을 설명합니다.
구문
struct mc_allocate {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char tp_id[8];
unsigned long conv_id;
unsigned char reserv3;
unsigned char synclevel;
unsigned char reserv4[2];
unsigned char rtn_ctl;
unsigned char reserv5;
unsigned long conv_group_id;
unsigned long sense_data;
unsigned char plu_alias[8];
unsigned char mode_name[8];
unsigned char tp_name[64];
unsigned char security;
unsigned char reserv6[11];
unsigned char pwd[10];
unsigned char user_id[10];
unsigned short pip_dlen;
unsigned char FAR * pip_dptr;
unsigned char reserv7;
unsigned char fqplu_name[17];
unsigned char reserv8[8];
unsigned long proxy_user;
unsigned long proxy_domain;
unsigned char reserv9[16];
};
구성원
opcode
제공된 매개 변수입니다. 동사 작업 코드를 지정합니다. AP_M_ALLOCATE.
opext
제공된 매개 변수입니다. 동사 연산 확장을 AP_MAPPED_CONVERSATION 지정합니다. AP_EXTD_VCB 비트가 설정된 경우 동사 제어 블록의 확장 버전이 사용됨을 나타냅니다. 이 경우 MC_ALLOCATE 구조에는 동기화 지점 지원 또는 권한 있는 프록시 기능 지원이 포함됩니다.
reserv2
예약된 필드입니다.
primary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 기본 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.
secondary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 보조 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.
tp_id
제공된 매개 변수입니다. 로컬 TP를 식별합니다. 이 매개 변수의 값은 TP_STARTED 반환되었습니다.
conv_id
반환된 매개 변수입니다. 두 TP 간에 설정된 대화를 식별합니다.
reserv3
예약된 필드입니다.
synclevel
제공된 매개 변수입니다. 대화의 동기화 수준을 지정합니다. TP가 데이터 수신 확인을 요청하고 데이터 수신을 확인할 수 있는지 여부를 결정합니다.
AP_NONE 이 대화에서 확인 처리가 사용되지 않도록 지정합니다.
AP_CONFIRM_SYNC_LEVEL TP가 이 대화에서 확인 처리를 사용할 수 있도록 지정합니다.
AP_SYNCPT TP가 이 대화에서 동기화 지점 수준 2 확인 처리를 사용할 수 있도록 지정합니다.
reserv4
예약된 필드입니다.reserv5
예약된 필드입니다.rtn_ctl
제공된 매개 변수입니다. 로컬 TP의 세션 요청에 따라 작동하는 로컬 LU가 로컬 TP에 대한 제어를 반환해야 하는 경우를 지정합니다. 세션에 대한 자세한 내용은 트랜잭션 프로그램 개요를 참조하세요.AP_IMMEDIATE LU가 경합 승자 세션을 즉시 사용할 수 있는 경우 할당하고 컨트롤을 TP에 반환하도록 지정합니다.
AP_WHEN_SESSION_ALLOCATED LU가 세션을 할당하거나 이 항목의 반환 코드에 설명된 오류 중 하나가 발생할 때까지 컨트롤을 TP에 반환하지 않도록 지정합니다. 세션 제한이 0이면 LU는 즉시 컨트롤을 반환합니다. 세션을 사용할 수 없는 경우 TP는 세션을 기다립니다.
AP_WHEN_SESSION_FREE 사용 가능하거나 활성화할 수 있는 경우 LU가 경합 승자 또는 경합-패자 세션을 할당하도록 지정하고 제어를 TP에 반환합니다. 오류가 발생하면(이 항목의 반환 코드에 설명된 대로) 호출은 primary_rc 및 secondary_rc 필드의 오류와 함께 즉시 반환됩니다.
AP_WHEN_CONWINNER_ALLOC LU가 경합 승자 세션을 할당하거나 이 항목의 반환 코드에 설명된 오류 중 하나가 발생할 때까지 컨트롤을 반환하지 않도록 지정합니다. 세션 제한이 0이면 LU는 즉시 컨트롤을 반환합니다. 세션을 사용할 수 없는 경우 TP는 세션을 기다립니다.
AP_WHEN_CONV_GROUP_ALLOC LU가 conv_group_id 지정된 세션을 할당하거나 이항목의 반환 코드에 설명된 오류 중 하나가 발생할 때까지 컨트롤을 TP에 반환하지 않도록 지정합니다. 세션을 사용할 수 없는 경우 TP는 세션이 무료로 제공될 때까지 기다립니다.
참고
AP_IMMEDIATE 새 세션을 시작하지 않는 rtn_ctl 유일한 값입니다. AP_IMMEDIATE 이외의 값의 경우 적절한 세션을 즉시 사용할 수 없는 경우 Microsoft® Host Integration Server에서 해당 세션을 시작하려고 시도합니다. 이로 인해 주문형 연결이 활성화됩니다.
conv_group_id
제공/반환된 매개 변수입니다. 세션을 할당해야 하는 대화 그룹의 식별자를 지정합니다.
conv_group_idrtn_ctl WHEN_CONV_GROUP_ALLOC설정된 경우에만 필요합니다.
rtn_ctl 다른 값을 지정하고 primary_rc AP_OK 경우 반환된 값입니다.
sense_data
반환된 매개 변수입니다. 할당 오류(재시도 또는 재시도 안 함)를 나타내며 센스 데이터를 포함합니다.
plu_alias
제공된 매개 변수입니다. 파트너 LU가 로컬 TP에 알려진 별칭을 지정합니다.
plu_alias 구성 중에 설정된 파트너 LU의 이름과 일치해야 합니다.
매개 변수는 8 바이트 ASCII 문자 문자열입니다. 다음 ASCII 문자로 구성될 수 있습니다.
대문자
숫자 0~9
공백
특수 문자 $, #, %, 및 @
이 문자열의 첫 문자는 공백이 될 수 없습니다.
이 매개 변수의 값이 8바이트 미만이면 ASCII 공백(0x20)을 사용하여 오른쪽에 패딩합니다.
fqplu_name 매개 변수를 사용하여 파트너 LU를 지정하려면 이 매개 변수를 이진 0으로 채웁니다.
TP, 5250 에뮬레이터 및/또는 APPC 애플리케이션을 사용하는 사용자 또는 그룹의 경우 시스템 관리자는 기본 로컬 및 원격 RU를 할당할 수 있습니다. 이 경우 필드는 비어 있거나 null로 남아 있으며 사용자 또는 그룹 멤버가 APPC 프로그램을 시작할 때 기본 RU에 액세스합니다.
mode_name
제공된 매개 변수입니다. 구성 중에 정의된 네트워킹 특성 집합의 이름을 지정합니다.mode_name 값은 구성 중에 파트너 LU와 연결된 모드의 이름과 일치해야 합니다.
매개 변수는 8 바이트 EBCDIC 문자 문자열입니다. A EBCDIC 문자 집합 형식의 문자로 구성됩니다.
대문자
숫자 0~9
특수 문자 $, #, 및 @
문자열의 첫 번째 문자는 대문자 또는 특수 문자여야 합니다.
매핑된 대화에서 SNASVCMG를 사용하지 마세요. SNASVCMG는 APPC에서 내부적으로 사용하는 예약된 mode_name .
tp_name
제공된 매개 변수입니다. 호출된 TP의 이름을 지정합니다. 호출하는 TP에서 MC_ALLOCATE 지정한 tp_name 값은 호출된 TP에서 RECEIVE_ALLOCATE 지정한 tp_name 값과 일치해야 합니다.매개 변수는 64 바이트 EBCDIC 문자열이며 대/소문자를 구분합니다. tp_name 매개 변수는 다음 EBCDIC 문자로 구성됩니다.
대문자 및 소문자
숫자 0~9
특수 문자 $, #, @ 및 마침표(.)
tp_name 64바이트 미만인 경우 EBCDIC 공백(0x40)을 사용하여 오른쪽에 패딩합니다.
SNA 규칙은 서비스 TP 이름에 최대 4자를 포함할 수 있다는 것입니다. 첫 번째 문자는 0x00과 0x3F 사이의 16진수 바이트입니다. 다른 문자는 AE EBCDIC 문자 집합 형식에서 가져옵니다.
security
제공된 매개 변수입니다. 파트너 LU가 호출된 TP에 대한 액세스의 유효성을 검사하는 데 필요한 정보를 제공합니다. 이 항목의 Security 매개 변수에 대한 가능한 값 섹션을 참조하세요.Reserv6
예약된 필드입니다.pwd
제공된 매개 변수입니다. user_id 연결된 암호를 지정합니다.pwd 매개 변수는 보안이 AP_PGM 또는 AP_SAME 설정된 경우에만 필요합니다. 구성 중에 설정된 user_id 대한 암호와 일치해야 합니다.
pwd 매개 변수는 10 바이트 EBCDIC 문자 문자열이며 대/소문자를 구분합니다. 다음 EBCDIC 문자로 구성됩니다.
대문자 및 소문자
숫자 0~9
특수 문자 $, #, @ 및 마침표(.)
암호가 10바이트 미만인 경우 EBCDIC 공백(0x40)을 사용하여 오른쪽에 패딩합니다.
APPC 자동 로그온 기능을 사용하는 경우 pwd 문자 문자열은 MS$SAME로 하드 코딩되어야 합니다. 자세한 내용은 설명 단원을 참조 하십시오.
User_id
제공된 매개 변수입니다. 파트너 TP에 액세스하는 데 필요한 사용자 식별자를 지정합니다. 보안 매개 변수가 AP_PGM 또는 AP_SAME 설정된 경우에만 필요합니다.user_id 매개 변수는 10 바이트 EBCDIC 문자열이며 대/소문자를 구분합니다. 파트너 TP에 대해 구성된 사용자 식별자 중 하나와 일치해야 합니다.
매개 변수는 다음 EBCDIC 문자로 구성됩니다.
대문자 및 소문자
숫자 0~9
특수 문자 $, #, @ 및 마침표(.)
user_id 10바이트 미만인 경우 EBCDIC 공백(0x40)을 사용하여 오른쪽에 패딩합니다.
APPC 자동 로그온 기능을 사용하는 경우 user_id 문자 문자열은 MS$SAME로 하드 코딩되어야 합니다. 자세한 내용은 설명 단원을 참조 하십시오.
pip_dlen
제공된 매개 변수입니다. 파트너 TP에 전달할 PIP(프로그램 초기화 매개 변수)의 길이를 지정합니다. 범위는 0에서 32767까지입니다.pip_dptr
제공된 매개 변수입니다. PIP 데이터를 포함하는 버퍼의 주소를 지정합니다. pip_dlen 0보다 큰 경우에만 이 매개 변수를 사용합니다.PIP 데이터는 파트너 TP 또는 원격 운영 체제에 필요한 초기화 매개 변수 또는 환경 설정 정보로 구성됩니다. PIP 데이터는 GDS(일반 데이터 스트림) 형식을 따라야 합니다. 자세한 내용은 IBM SNA 설명서를 참조하세요.
Microsoft Windows의 경우 데이터 버퍼는 정적 데이터 영역 또는 전역적으로 할당된 영역에 상주할 수 있습니다. 데이터 버퍼는 이 영역 내에 완전히 맞아야 합니다.
reserv7
예약된 필드입니다.fqplu_name
제공된 매개 변수입니다. 파트너 LU의 정규화된 이름을 지정합니다. 원격 노드에 정의된 로컬 LU의 정규화된 이름과 일치해야 합니다. 매개 변수는 NETID에 대한 두 가지 형식 A EBCDIC 문자 문자열과 파트너 LU의 LU 이름으로 구성됩니다. 이름은 EBCDIC 기간(.)으로 구분됩니다.plu_alias 지정되지 않은 경우 이 이름을 제공해야 합니다. 다음 EBCDIC 문자로 구성됩니다.
18업퍼케이스 문자
숫자 0~9
특수 문자 $, #, 및 @
이 매개 변수의 값이 17바이트 미만이면 EBCDIC 공백(0x40)을 사용하여 오른쪽에 패딩합니다.
reserv8
예약된 필드입니다.proxy_user
제공된 매개 변수입니다. 권한 있는 프록시 기능을 사용하여 가장할 사용자 이름을 포함하는 유니코드 문자열을 가리키는 LPWSTR을 지정합니다. 이 필드는 확장된 VCB를 나타내는 opext 필드에 AP_EXTD_VCB 비트가 설정된 경우에만 사용할 수 있습니다.proxy_domain
제공된 매개 변수입니다. 권한 있는 프록시 기능을 사용하여 가장할 사용자의 도메인 이름을 포함하는 유니코드 문자열을 가리키는 LPWSTR을 지정합니다. 이 필드는 확장된 VCB를 나타내는 opext 필드에 AP_EXTD_VCB 비트가 설정된 경우에만 사용할 수 있습니다.reserv9
예약된 필드입니다.
보안 매개 변수에 사용할 수 있는 값
구성 중에 호출된 TP에 대해 설정된 대화 보안에 따라 다음 값 중 하나를 사용합니다.
대화 보안을 사용하지 않는 호출된 TP에 대한 AP_NONE.
대화 보안을 사용하므로 사용자 식별자와 암호가 필요한 호출된 TP에 대한 AP_PGM. user_id 및 pwd 매개 변수를 통해 이 정보를 제공합니다.
대화 보안을 사용하므로 사용자 식별자와 암호가 필요한 권한 있는 프록시가 있는 호출된 TP에 대한 AP_PROXY_PGM. 가장할 사용자의 사용자 이름 및 도메인 이름을 포함하는 유니코드 문자열을 가리키려면 proxy_user 및 proxy_domain 포인터를 설정해야 합니다. 애플리케이션은 user_id 및 pwd 필드를 설정할 필요가 없습니다.
AP_PROXY_SAME 프록시에서 제공하는 유효한 사용자 식별자 및 암호가 있는 권한 있는 프록시를 사용하여 호출된 TP에 대해 차례로 다른 TP를 호출합니다. 가장할 사용자의 사용자 이름 및 도메인 이름을 포함하는 유니코드 문자열을 가리키려면 proxy_user 및 proxy_domain 포인터를 설정해야 합니다. 애플리케이션은 user_id 및 pwd 필드를 설정할 필요가 없습니다.
예를 들어 TP A가 권한 있는 프록시에서 제공하는 유효한 사용자 식별자 및 암호를 사용하여 TP B를 호출하고 TP B가 TP C를 호출한다고 가정합니다. TP B가 AP_PROXY_SAME 값을 지정하는 경우 APPC는 TP A에서 사용자 식별자와 이미 확인된 표시기를 TP C에 대한 LU를 보냅니다. 이 표시기는 TP C에 암호를 요구하지 않도록 지시합니다(TP C가 이미 확인된 표시기를 수락하도록 구성된 경우).
대화 보안을 사용하므로 권한 있는 프록시 메커니즘에서 제공하는 사용자 식별자 및 암호가 필요한 권한 있는 프록시가 있는 호출된 TP에 대한 AP_PROXY_STRONG. 가장할 사용자의 사용자 이름 및 도메인 이름이 포함된 유니코드 문자열을 가리키려면 proxy_user 및 proxy_domain 포인터를 설정해야 합니다. 애플리케이션은 user_id 및 pwd 필드를 설정할 필요가 없습니다. AP_PROXY_STRONG 지우기 텍스트 암호를 허용하지 않는 AP_PROXY_STRONG AP_PROXY_PGM 다릅니다. 원격 시스템에서 암호화된 암호(강력한 대화 보안)를 지원하지 않으면 이 호출이 실패합니다.
유효한 사용자 식별자 및 암호를 사용하여 호출된 TP에 대한 AP_SAME 다른 TP를 호출합니다.
예를 들어 TP A가 유효한 사용자 식별자 및 암호를 사용하여 TP B를 호출하고 TP B가 TP C를 호출한다고 가정합니다. TP B가 AP_SAME 값을 지정하는 경우 APPC는 TP C에 대한 LU를 TP A의 사용자 식별자와 이미 확인된 표시기를 보냅니다. 이 표시기는 TP C에 암호가 필요하지 않도록 지시합니다(TP C가 이미 확인된 표시기를 허용하도록 구성된 경우).
AP_SAME MC_ALLOCATE 동사에서 사용되는 경우 애플리케이션은 항상 동사 제어 블록의 user_id 및 pwd 매개 변수에 대한 값을 제공해야 합니다. 호스트 통합 서버와 피어 LU 간에 협상된 속성에 따라 MC_ALLOCATE 동사는 다음 우선 순위로 세 가지 종류의 연결(FMH-5) 메시지 중 하나를 보냅니다.
RU가 "이미 확인된" 보안을 협상한 경우 호스트 통합 서버에서 보낸 연결에는 VCB에 지정된 pwd 매개 변수 필드의 내용이 포함되지 않습니다.
RU가 "영구 검증" 보안을 협상한 경우 호스트 통합 서버에서 보낸 연결에는 VCB에 지정된 pwd 매개 변수가 포함되지만, ATTACH가 LU-LU 세션이 시작된 이후 지정된 user_id 매개 변수에 대한 첫 번째 매개 변수인 경우에만 포함되며, 모든 후속 Attaches(애플리케이션 또는 이 LU-LU 모드를 사용하여 다른 애플리케이션에서 발급)에서 pwd 매개 변수를 생략합니다.
RU가 위의 중 하나를 협상하지 않은 경우 Host Integration Server에서 보낸 연결은 모든 연결에 대한 user_id 및 pwd 매개 변수를 모두 생략합니다.
애플리케이션은 RU 간에 협상된 보안 모드를 알 수 없으며 발급 중인 MC_ALLOCATE 동사가 LU-LU 모드 트리플렛의 첫 번째 동사인지 여부를 알 수 없습니다. 따라서 보안이 AP_SAME 설정된 경우 애플리케이션은 항상 VCB에서 user_id 및 pwd 매개 변수 필드를 설정해야 합니다.
영구 확인 및 이미 확인된 보안에 대한 자세한 내용은 SNA 형식 가이드 "FM 헤더 5: 연결(LU 6.2)" 섹션을 참조하세요.
대화 보안을 사용하므로 사용자 식별자와 암호가 필요한 호출된 TP에 대한 AP_STRONG. user_id 및 pwd 매개 변수를 통해 이 정보를 제공합니다. AP_STRONG AP_STRONG 텍스트 암호 지우기를 허용하지 않는 AP_PGM 다릅니다. 원격 시스템에서 암호화된 암호(강력한 대화 보안)를 지원하지 않으면 이 호출이 실패합니다.
APPC 자동 로그온 기능을 사용하는 경우 보안을 AP_PGM 설정해야 합니다. 자세한 내용은 설명 단원을 참조 하십시오.
반환 코드
AP_OK
기본 반환 코드입니다. 동사가 성공적으로 실행되었습니다.
AP_UNSUCCESSFUL
기본 반환 코드; 제공된 매개 변수 rtn_ctl TP에 대한 즉시(AP_IMMEDIATE) 반환을 지정했으며 로컬 LU에는 사용 가능한 경합 승자 세션이 없습니다.
AP_PARAMETER_CHECK
기본 반환 코드입니다. 매개 변수 오류로 인해 동사가 실행되지 않았습니다.
AP_BAD_RETURN_CONTROL
보조 반환 코드; rtn_ctl 대해 지정된 값이 잘못되었습니다.
AP_BAD_SECURITY
보조 반환 코드; 보안 에 지정된 값이 잘못되었습니다.
AP_BAD_SYNC_LEVEL
보조 반환 코드; sync_level 대해 지정된 값이 잘못되었습니다.
AP_BAD_TP_ID
보조 반환 코드; tp_id 대해 지정된 값이 잘못되었습니다.
AP_PIP_LEN_INCORRECT
보조 반환 코드; pip_dlen 값이 32767보다 큽니다.
AP_UNKNOWN_PARTNER_MODE
보조 반환 코드; mode_name 대해 지정된 값이 잘못되었습니다.
AP_BAD_PARTNER_LU_ALIAS
보조 반환 코드; APPC는 제공된 partner_lu_alias 인식하지 못했습니다.
AP_NO_USE_OF_SNASVCMG
보조 반환 코드; SNASVCMG는 mode_name 유효한 값이 아닙니다.
AP_INVALID_DATA_SEGMENT
보조 반환 코드; PIP 데이터가 할당된 데이터 세그먼트보다 길거나 PIP 데이터 버퍼의 주소가 잘못되었습니다.
AP_ALLOCATION_ERROR
기본 반환 코드; APPC에서 대화를 할당하지 못했습니다. 대화 상태가 RESET로 설정됩니다.
이 코드는 MC_ALLOCATE 후에 발급된 동사를 통해 반환할 수 있습니다.
AP_ALLOCATION_FAILURE_NO_RETRY
보조 반환 코드; 구성 오류 또는 세션 프로토콜 오류와 같은 영구적인 조건으로 인해 대화를 할당할 수 없습니다. 오류를 확인하려면 시스템 관리자가 오류 로그 파일을 검사해야 합니다. 오류가 수정될 때까지 할당을 다시 시도하지 마세요.
AP_ALLOCATION_FAILURE_RETRY
보조 반환 코드; 링크 오류와 같은 임시 조건으로 인해 대화를 할당할 수 없습니다. 오류의 원인은 시스템 오류 로그에 기록됩니다. 할당을 다시 시도하세요.
AP_COMM_SUBSYSTEM_ABENDED
기본 반환 코드입니다. 다음 조건 중 하나를 나타냅니다.
이 대화에서 사용하는 노드에 ABEND가 발생했습니다.
TP와 PU 2.1 노드 간의 연결이 끊어졌습니다(LAN 오류).
TP 컴퓨터의 SnaBase에서 ABEND가 발생했습니다.
시스템 관리자는 오류 로그를 검사하여 ABEND의 원인을 확인해야 합니다.
AP_COMM_SUBSYSTEM_NOT_LOADED
기본 반환 코드입니다. 동사를 처리하는 동안 필수 구성 요소를 로드하거나 종료할 수 없습니다. 따라서 통신을 수행할 수 없습니다. 정정 작업은 시스템 관리자에게 문의하세요이 반환 코드가 MC_ALLOCATE 사용되는 경우 로컬 LU를 지원하는 통신 시스템을 찾을 수 없음을 나타낼 수 있습니다. 예를 들어 TP_STARTED 지정된 로컬 LU 별칭이 잘못되었거나 구성되지 않았습니다. lu_alias 또는 mode_name 8자 미만인 경우 이러한 필드가 오른쪽의 공백으로 채워져 있는지 확인해야 합니다. 이 오류는 MC_ALLOCATE 요청을 충족 할 수 있는 노드가 없으므로 이러한 매개 변수가 공백으로 채워지지 않으면 반환됩니다.
MC_ALLOCATE 여러 노드로 구성된 호스트 통합 서버 시스템에 대해 이 반환 코드를 생성하는 경우 다음과 같이 두 개의 보조 반환 코드가 있습니다.
0xF0000001
보조 반환 코드; 노드가 시작되지 않았습니다.
0xF0000002
보조 반환 코드; 하나 이상의 노드가 시작되었지만 로컬 LU( TP_STARTED 발급될 때)가 활성 노드에서 구성되지 않았습니다. 문제는 다음 중 하나일 수 있습니다.
로컬 LU가 있는 노드가 시작되지 않았습니다.
로컬 LU가 구성되지 않았습니다.
AP_INVALID_VERB_SEGMENT
기본 반환 코드입니다. VCB가 데이터 세그먼트의 끝을 넘어 확장되었습니다.AP_STACK_TOO_SMALL
기본 반환 코드입니다. 애플리케이션의 스택 크기가 너무 작아서 동사를 실행할 수 없습니다. 애플리케이션의 스택 크기를 늘리세요.AP_CONV_BUSY
기본 반환 코드; 모든 대화에서 한 번에 하나의 미해결 대화 동사만 있을 수 있습니다. 로컬 TP에 여러 스레드가 있고 둘 이상의 스레드가 동일한 conv_id 사용하여 APPC 호출을 실행하는 경우에 발생할 수 있습니다.AP_THREAD_BLOCKING
기본 반환 코드입니다. 호출 스레드가 이미 차단 호출에 있습니다.AP_UNEXPECTED_DOS_ERROR
기본 반환 코드입니다. 로컬 TP의 APPC 호출을 처리하는 동안 운영 체제가 APPC에 오류를 반환했습니다. 운영 체제 반환 코드는 secondary_rc를 통해 반환됩니다. Intel 바이트 스와핑 순서로 표시됩니다. 문제가 지속되면 시스템 관리자에게 문의하세요.
설명
MC_ALLOCATE 매핑된 대화를 설정합니다.
TP가 이 동사를 발급하면 대화 상태가 RESET입니다. 성공적으로 실행(primary_rc AP_OK) 상태가 SEND로 변경됩니다. 동사가 실행되지 않으면 상태는 변경되지 않은 상태로 유지됩니다.
MC_ALLOCATE 몇 가지 매개 변수는 EBCDIC 또는 ASCII 문자열입니다. TP는 CSV CONVERT 를 사용하여 문자열을 한 문자 집합에서 다른 문자 집합으로 변환할 수 있습니다.
MC_ALLOCATE 요청을 즉시 보내려면 호출하는 TP가 MC_ALLOCATE 직후에 MC_FLUSH 또는 MC_CONFIRM 실행할 수 있습니다. 그렇지 않으면 MC_ALLOCATE 요청은 버퍼가 가득 찼을 때까지 로컬 LU의 송신 버퍼에 있는 다른 데이터와 함께 누적됩니다.
MC_ALLOCATE 후 MC_CONFIRM 실행하면 호출 TP는 할당이 성공했는지 여부를 즉시 확인할 수 있습니다(synclevel이 AP_CONFIRM_SYNC_LEVEL 설정된 경우).
일반적으로 MC_ALLOCATE 동사의 mode_name 매개 변수 값은 호출된 TP 노드에 대해 구성되고 파트너 LU와 구성 중에 연결된 모드의 이름과 일치해야 합니다.
호출된 TP 노드에서 파트너 LU와 연결된 모드 중 하나가 암시적 모드인 경우 파트너 LU와 연결된 모드 이름이 mode_name 값과 일치하지 않는 경우 두 RU 간에 설정된 세션은 암시적 모드가 됩니다.
Host Integration Server는 암호 대체라는 기능을 지원합니다. 이 기능은 연결 메시지의 두 노드 간에 흐르는 모든 암호를 암호화하는 최신 버전의 IBM i 운영 체제(V3R1)에서 지원하는 보안 기능입니다. 암호는 누군가가 사용자 식별자와 암호를 지정하는 APPC 트랜잭션 프로그램을 호출할 때마다 연결에서 흐릅니다. 예를 들어 누구나 IBM i에 로그온할 때마다 발생합니다.
암호 대체에 대한 지원은 BIND 요청의 비트 5(바이트 23)를 1(암호 대체가 지원됨)으로 설정하여 표시됩니다. 원격 시스템이 BIND 응답에서 이 비트를 설정하는 경우 호스트 통합 서버는 FMH-5 연결 메시지에 포함된 LU 6.2 대화 보안 암호를 자동으로 암호화합니다. Host Integration Server APPC 애플리케이션은 VCB의 보안 필드를 MC_ALLOCATE 요청에서 AP_PGM 또는 AP_STRONG 설정하여 이 기능을 자동으로 활용합니다.
APPC 애플리케이션이 암호화된 암호를 강제로 전달하려는 경우 애플리케이션은 MC_ALLOCATE 요청에서 VCB의 보안 필드에 대한 AP_STRONG 지정할 수 있습니다. 이 옵션은 IBM i V3R1에 정의된 대로 구현되며 IBM i CPI-C 프로그래머 참조에 CM_SECURITY_PROGRAM_STRONG 설명되어 있습니다. 여기서 LU 6.2 pwd (암호) 필드는 실제 네트워크를 통해 전달되기 전에 암호화됩니다.
암호 대체 기능은 현재 IBM i V3R1 이상에서만 지원됩니다. 원격 시스템에서 이 기능을 지원하지 않는 경우 Host Integration Server는 10060006 센스 코드로 세션의 바인딩을 해제합니다. 두 노드는 BIND 교환에서 이 기능을 지원하는지 여부를 협상합니다. Host Integration Server는 BIND에서 비트를 설정하고 암호화를 위해 BIND에 일부 임의 데이터를 추가합니다. 원격 노드가 암호 대체를 지원하는 경우 BIND 응답에서 동일한 비트를 설정하고 암호 해독을 위해 일부(다른) 임의 데이터를 추가합니다.
Host Integration Server는 APPC 애플리케이션에 대한 자동 로그온을 지원합니다. 이 기능을 사용하려면 네트워크 관리자의 특정 구성이 필요합니다. APPC 애플리케이션은 호스트 통합 서버의 클라이언트에서 LAN 쪽에서 호출되어야 합니다. 클라이언트는 Windows 도메인에 로그인해야 하지만 호스트 통합 서버 APPC API를 지원하는 모든 플랫폼일 수 있습니다.
클라이언트 애플리케이션은 특수 하드 코딩된 APPC 사용자 이름 MS$SAME 및 암호 MS$SAME와 함께 "프로그램" 수준 보안을 사용하도록 코딩됩니다. 이 세션 할당이 클라이언트에서 호스트 통합 서버로 이동하면 호스트 통합 서버 서버는 클라이언트가 로그인된 Windows 계정에 해당하는 호스트 계정 및 암호를 조회하고 호스트 계정 정보를 호스트에 보내는 APPC 연결 메시지로 대체합니다.
참고
원격 노드가 암호 대체를 지정하는 비트를 설정하고 임의 데이터를 추가하지 않는 것은 불법입니다.
IBM에 따르면 암호 대체를 지원하지 않지만 임의의 데이터를 지정하지 않고 암호 대체 비트를 Host Integration Server에 다시 에코하는 LU 6.2 암호 대체 구현이 있습니다. 이렇게 하면 Host Integration Server에서 센스 코드 10060006으로 세션을 바인딩 해제합니다. 이 센스 코드는 다음과 같이 해석됩니다.
1006 = 필수 필드 또는 매개 변수가 없습니다.
0006 = 컨트롤 벡터의 필수 하위 필드를 생략했습니다.
또한 호스트 통합 서버는 이벤트 17(APPC 세션 활성화 실패: BIND 부정 응답 전송)을 기록해야 합니다.
올바른 해결 방법은 실패한 구현을 수정하는 것입니다. 그러나 단기적인 해결 방법으로 호스트 통합 서버 SNA 서비스 레지스트리 설정을 설정할 수 있습니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\snaservr\parameters\NOPWDSUB: REG_SZ: 예
이 매개 변수를 레지스트리에 지정하면 Host Integration Server 암호 대체 지원이 비활성화됩니다.
권한 있는 APPC 애플리케이션이 정의된 Windows 사용자를 대신하여 단일 Sign-On 기능을 사용하여 APPC 대화를 열 수 있도록 Host Integration Server에 대한 몇 가지 업데이트가 이루어졌습니다. 이를 권한 있는 프록시 기능이라고 합니다. 이 기능을 호출하기 위해 APPC MC_ALLOCATE 동사에 확장이 추가되었습니다.
APPC 애플리케이션은 특별한 Windows 그룹의 구성원인 Windows 사용자 계정에서 시작하여 권한이 부여됩니다. 호스트 보안 도메인이 구성되면 SNA 관리자는 호스트 통합 서버의 호스트 보안 기능에 사용할 두 번째 Windows 그룹을 정의합니다. 실제 클라이언트가 실행 중인 사용자 계정이 이 두 번째 Windows 그룹의 구성원인 경우 클라이언트는 호스트 계정 캐시에 정의된 모든 사용자 계정을 대신하여 APPC 대화를 시작할 권한이 있습니다.
다음은 권한 있는 프록시 기능의 작동 방식을 보여 줍니다.
호스트 통합 서버 관리자는 APP이라는 호스트 보안 도메인을 만듭니다. 이제 SNA 관리자가 두 개의 Windows 그룹을 만듭니다. 첫 번째 그룹을 APP이라고 하고 두 번째 그룹을 이 예제의 APP_PROXY 호출합니다. APP 그룹에 할당된 사용자는 Single Sign-On에 대해 사용하도록 설정됩니다. APP_PROXY 그룹에 할당된 사용자는 권한 있는 프록시입니다. 관리자는 SNA Manager의 호스트 보안 도메인 속성 대화 상자에서 사용자 단추를 사용하여 Windows 사용자 AppcUser를 APP_PROXY 그룹에 추가합니다.
그런 다음 관리자는 APPCAPP이라는 Windows 서비스로 실행되도록 호스트 통합 서버 서버에서 APPC 애플리케이션을 설정하고 해당 서비스는 AppcUser 사용자 계정으로 작동하도록 설정되었습니다. APPCAPP이 실행되면 확장된 VCB 형식을 사용하여 ALLOCATE 동사를 통해 APPC 세션을 열고 원하는 사용자 UserA의 Windows 사용자 이름(예: )을 지정합니다.
SNA 서비스는 호스트 보안 도메인 앱의 멤버인 연결에서 들어오는 세션 요청을 확인합니다. 클라이언트/서버 인터페이스는 실제 클라이언트가 AppcUser임을 SNA 서비스에 알려줍니다.
SNA 서비스는 AppcUser가 APP_PROXY 그룹의 구성원인지 확인합니다. AppcUser는 APP_PROXY 멤버이므로 SNA 서비스는 APPC Attach(FMH-5) 명령에 UserA에 대한 Username/Password를 삽입하고 파트너 TP에 보냅니다.
권한 있는 프록시 기능을 지원하려면 APPC 애플리케이션이 다음 프로그램 논리를 구현해야 합니다.
APPC 애플리케이션은 가장하려는 Windows 사용자 ID 및 도메인 이름을 결정해야 합니다.
APPC 애플리케이션은 MC_ALLOCATE 동사를 호출하기 전에 다음 매개 변수를 설정해야 합니다.
opext 필드에서 AP_EXTD_VCB 플래그를 설정하여 확장된 MC_ALLOCATE 동사 제어 블록 구조를 사용하도록 설정합니다.
보안을 AP_PROXY_SAME, AP_PROXY_PGM 또는 AP_PROXY_STRONG 설정합니다.
가장할 사용자의 사용자 이름과 도메인 이름이 포함된 유니코드 문자열을 가리키도록 proxy_user 및 proxy_domain 대한 포인터를 설정합니다.
참고
애플리케이션은 MC_ALLOCATE VCB에서 user_id 및 pwd 필드를 설정할 필요가 없습니다.
APPC 애플리케이션이 위의 단계를 수행하고 MC_ALLOCATE 동사를 발급하면 호스트 통합 서버 서버는 지정된 Windows 사용자에 대한 호스트 보안 도메인에서 조회를 수행하고 원격 시스템에 전송된 FMH-5 연결 메시지에서 사용자 ID 및 암호 필드를 설정합니다.