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