CNOS
CNOS(세션 수 변경) 동사는 APPC LU 6.2 세션 제한을 설정합니다.
다음 구조체는 CNOS 동사에서 사용하는 동사 제어 블록에 대해 설명합니다.
구문
typedef struct cnos {
unsigned short opcode;
unsigned char reserv2[2];
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char key[8];
unsigned char lu_alias[8];
unsigned char plu_alias[8];
unsigned char fqplu_name[17];
unsigned char reserv3;
unsigned char mode_name[8];
unsigned int mode_name_select:1;
unsigned int set_negotiable:1;
unsigned int reserv4:6;
unsigned int reserv5:8;
unsigned short plu_mode_sess_lim;
unsigned short min_conwinners_source;
unsigned short min_conwinners_target;
unsigned short auto_act;
unsigned int drain_target:1;
unsigned int drain_source:1;
unsigned int responsible:1;
unsigned int reserv6:5;
unsigned int reserv7:8;
} CNOS;
멤버
opcode
제공된 매개 변수입니다. AP_CNOS 동사 작업 코드를 지정합니다.
reserv2
예약된 필드입니다.
primary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 기본 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.
secondary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 보조 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.
key
제공된 매개 변수입니다. 키 잠금 기능이 보호된 경우 ASCII의 master 또는 서비스 키를 지정합니다.
lu_alias
제공된 매개 변수입니다. LU에 로컬로 사용되는 8 바이트 ASCII 이름을 제공합니다.
plu_alias
제공된 매개 변수입니다. 파트너 LU에 로컬로 사용되는 8 바이트 ASCII 이름을 제공합니다.
fqplu_name
제공된 매개 변수입니다. 로컬 노드에 plu_alias 이름이 정의되지 않고 파트너 LU가 다른 노드에 있는 경우 EBCDIC(형식 A)에서 LU(파트너 논리 단위) 이름을 제공합니다.
mode_name
제공된 매개 변수입니다. mode_name_select 값이 AP_ONE 때 사용할 EBCDIC(형식 A) 모드 이름을 지정합니다.
mode_name_select
제공된 매개 변수입니다. 프로그램이 세션 제한 및 경합 승자 극성을 설정하거나 다시 설정하는 모드 이름 선택을 지정합니다. 허용되는 값은 AP_ALL 또는 AP_ONE.
set_negotiable
제공된 매개 변수입니다. APPC가 최대 협상 가능한 세션 제한에 대한 현재 설정을 변경할지 여부를 지정합니다. 허용되는 값은 AP_YES AP_NO.
reserv4
6비트 예약 필드입니다.
reserv5
8비트 예약 필드입니다.
plu_mode_sess_lim
제공된 매개 변수입니다. set_negotiable 값이 YES인 경우 세션 제한을 지정합니다. 허용되는 값은 0에서 32767까지입니다.
min_conwinners_source
제공된 매개 변수입니다. LU가 경합 승자로 보장되는 세션 수를 지정합니다. 허용되는 값은 0에서 32767까지입니다.
min_conwinners_target
제공된 매개 변수입니다. 대상 LU가 경합 승자로 보장되는 최소 세션 수를 지정합니다. 허용되는 값은 0에서 32767까지입니다.
auto_act
제공된 매개 변수입니다. APPC가 자동으로 활성화할 로컬 RU 경합 승자 세션 수를 지정합니다. 허용되는 값은 0에서 32767까지입니다. 이 매개 변수를 사용하기 전에 이 항목의 설명 섹션을 참조하세요.
drain_target
제공된 매개 변수입니다. 대상 LU가 대기(아웃바운드) 할당 요청을 드레이닝할 수 있는지 여부를 지정합니다. 허용되는 값은 AP_YES AP_NO.
drain_source
제공된 매개 변수입니다. 원본 LU가 대기(아웃바운드) 할당 요청을 드레이닝할 수 있는지 여부를 지정합니다. 허용되는 값은 AP_YES AP_NO.
책임
제공된 매개 변수입니다. 병렬 세션 연결에 대한 세션 제한을 다시 설정하여 세션을 비활성화할 LU를 지정합니다. 허용되는 값은 AP_SOURCE AP_TARGET.
reserv6
5비트 예약 필드입니다.
reserv7
8비트 예약 필드입니다.
반환 코드
AP_OK
기본 반환 코드입니다. 동사가 성공적으로 실행되었습니다.
AP_CNOS_ACCEPTED
보조 반환 코드; APPC는 지정된 세션 제한 및 책임을 수락합니다.
AP_CNOS_NEGOTIATED
보조 반환 코드; APPC는 파트너 LU가 협상할 수 있는 세션 제한 및 책임을 수락합니다. 협상할 수 있는 값은 다음과 같습니다.
plu_mode_session_limit
min_conwinners_source
min_conwinners_target
책임
drain_target
AP_ALLOCATION_ERROR
기본 반환 코드; APPC에서 대화를 할당하지 못했습니다. 대화 상태가 RESET으로 설정됩니다.
이 코드는 ALLOCATE 또는 MC_ALLOCATE 후에 발급된 동사를 통해 반환될 수 있습니다.
AP_ALLOCATION_FAILURE_NO_RETRY
보조 반환 코드; 구성 오류 또는 세션 프로토콜 오류와 같은 영구적인 조건으로 인해 대화를 할당할 수 없습니다. 오류를 확인하려면 시스템 관리자가 오류 로그 파일을 검사해야 합니다. 오류가 수정될 때까지 할당을 다시 시도하지 마세요.
AP_ALLOCATION_FAILURE_RETRY
보조 반환 코드; 링크 오류와 같은 임시 조건으로 인해 대화를 할당할 수 없습니다. 오류의 원인은 시스템 오류 로그에 기록됩니다. 할당을 다시 시도하세요.
AP_CNOS_LOCAL_RACE_REJECT
기본 반환 코드; APPC는 현재 로컬 LU에서 발급한 CNOS 동사를 처리하고 있습니다.
AP_CNOS_PARTNER_LU_REJECT
기본 반환 코드; 파트너 LU가 로컬 LU에서 CNOS 요청을 거부했습니다.
AP_CNOS_MODE_CLOSED
보조 반환 코드; 파트너 LU의 로컬 최대 세션 제한은 0이므로 로컬 LU는 0이 아닌 세션 제한을 협상할 수 없습니다.
AP_CNOS_MODE_NAME_REJECT
보조 반환 코드; 파트너 LU가 지정된 모드 이름을 인식하지 못합니다.
AP_CNOS_COMMAND_RACE_REJECT
보조 반환 코드; 로컬 LU는 현재 파트너 LU에서 발급한 CNOS 동사를 처리하고 있습니다.
AP_COMM_SUBSYSTEM_ABENDED
기본 반환 코드입니다. 다음 조건 중 하나를 나타냅니다.
이 대화에서 사용하는 노드에 ABEND가 발생했습니다.
TP(트랜잭션 프로그램)와 PU 2.1 노드 간의 연결이 끊어졌습니다(로컬 영역 네트워크 오류).
TP 컴퓨터의 SnaBase에서 ABEND가 발견되었습니다.
시스템 관리자는 오류 로그를 검사하여 ABEND의 원인을 확인해야 합니다.
AP_COMM_SUBSYSTEM_NOT_LOADED
기본 반환 코드입니다. 동사를 처리하는 동안 필수 구성 요소를 로드하거나 종료할 수 없습니다. 따라서 통신을 수행할 수 없습니다. 정정 작업은 시스템 관리자에게 문의하세요
AP_INVALID_KEY
기본 반환 코드; 제공된 키가 잘못되었습니다.
AP_INVALID_VERB_SEGMENT
기본 반환 코드입니다. VCB가 데이터 세그먼트의 끝을 넘어 확장되었습니다.
AP_PARAMETER_CHECK
기본 반환 코드입니다. 매개 변수 오류로 인해 동사가 실행되지 않았습니다.
AP_ALL_MODE_MUST_RESET
보조 반환 코드; APPC는 mode_name_select 매개 변수가 AP_ALL 나타내는 경우 0이 아닌 세션 제한을 허용하지 않습니다.
AP_AUTOACT_EXCEEDS_SESSLIM
보조 반환 코드; CNOS 동사에서 auto_act 값이 plu_mode_sess_lim 값보다 큽니다.
AP_BAD_LU_ALIAS
보조 반환 코드; APPC는 정의된 lu_alias 찾을 수 없습니다.
AP_BAD_PARTNER_LU_ALIAS
보조 반환 코드; APPC는 제공된 plu_alias 인식하지 못했습니다.
AP_BAD_SNASVCMG_LIMITS
보조 반환 코드; 프로그램에서 mode_name 제공될 때plu_mode_sess_lim, min_conwinners_source 또는 min_conwinners_target 대한 잘못된 설정을 지정했습니다.
AP_CHANGE_SRC_DRAINS
보조 반환 코드; APPC는 현재 지정된 모드에 대해 drain_source(NO)가 적용되는 경우 mode_name_select(ONE) 및 drain_source(예)를 허용하지 않습니다.
AP_CNOS_IMPLICIT_PARALLEL
보조 반환 코드; APPC는 템플릿이 병렬 세션을 지정할 때 암시적 파트너 템플릿에 대한 SNASVCMG 모드 이외의 모드에 대한 세션 제한을 변경하는 프로그램을 허용하지 않습니다. ‘템플릿’이라는 용어는 실제 값 대부분이 아직 채워져 있지 않기 때문에 사용됩니다.
AP_CPSVCMG_MODE_NOT_ALLOWED
보조 반환 코드; CPSVCMG라는 모드는 비활성화 세션 동사에서 mode_name 지정할 수 없습니다.
AP_EXCEEDS_MAX_ALLOWED
보조 반환 코드; 프로그램에서 plu_mode_sess_lim 번호 및set_negotiable(AP_NO)을 지정하는 CNOS 동사를 발급했습니다.
AP_MIN_GT_TOTAL
보조 반환 코드; min_conwinners_source 및 min_conwinners_target 합계는 plu_mode_sess_lim보다 큰 숫자를 지정합니다.
AP_MODE_CLOSED
보조 반환 코드; 파트너 LU의 로컬 최대 세션 제한은 0이므로 로컬 LU는 0이 아닌 세션 제한을 협상할 수 없습니다.
AP_RESET_SNA_DRAINS
보조 반환 코드; SNASVCMG는 드레이닝 매개 변수 값을 지원하지 않습니다.
AP_SINGLE_NOT_SRC_RESP
보조 반환 코드; 단일 세션 CNOS 동사의 경우 APPC는 로컬(원본) LU만 세션 비활성화를 담당하도록 허용합니다.
AP_STACK_TOO_SMALL
기본 반환 코드입니다. 애플리케이션의 스택 크기가 너무 작아서 동사를 실행할 수 없습니다. 애플리케이션의 스택 크기를 늘리세요.
AP_STATE_CHECK
기본 반환 코드입니다. 동사가 잘못된 상태에서 발행되었으므로 실행되지 않았습니다.
AP_CANT_RAISE_LIMITS
보조 반환 코드; APPC는 현재 제한이 0이 아닌 경우 세션 제한을 0이 아닌 값으로 설정하는 것을 허용하지 않습니다.
AP_LU_DETACHED
보조 반환 코드; CNOS 가 LU를 지정하기 전에 명령이 로컬 LU의 정의를 다시 설정했습니다.
AP_SNASVCMG_RESET_NOT_ALLOWED
보조 반환 코드; 로컬 프로그램에서 세션 제한을 0으로 지정하여 SNASVCMG라는 모드에 대해 CNOS 동사를 발급하려고 했습니다.
AP_UNEXPECTED_DOS_ERROR
기본 반환 코드; 운영 체제가 로컬 TP에서 APPC 동사를 처리하는 동안 APPC에 오류를 반환했습니다. 운영 체제 반환 코드는 secondary_rc를 통해 반환됩니다. Intel 바이트 스와핑 순서로 표시됩니다. 문제가 지속되면 시스템 관리자에게 문의하세요.
설명
CNOS 는 별칭만으로 LU를 식별합니다. 동일한 로컬 LU 별칭이 도메인에서 여러 번 사용되고(백업 또는 기타 용도로) LU 별칭이 CNOS를 통해 지정된 경우 동사는 의도한 것과 다른 LU로 흐를 수 있습니다.
프로그램이 첫 번째 APPC ALLOCATE, MC_ALLOCATE, SEND_CONVERSATION또는 MC_SEND_CONVERSATION 또는 CPI-C(Common Programming Interface for Communications) 지정된 파트너 LU 및 모드에 대한 호출을 할당하기 전에 모드 세션 제한을 설정하기 위해 CNOS가 실행되지 않는 경우 APPC는 내부적으로 모드 정의의 값을 사용하여 세션 제한을 생성합니다.
병렬 세션 연결에 대한 제한을 설정할 때 두 RU는 모드 세션 제한, 드레이닝 설정 및 책임 값을 협상합니다. APPC는 협상 중에 두 RU가 합의한 설정을 반영하도록 CNOS 에서 이러한 매개 변수를 업데이트합니다. 프로그램에서 DISPLAY 를 실행하여 모드 세션 제한에 대해 협상된 값을 가져올 수 있습니다.
단일 세션에 대한 제한을 설정할 때 CNOS 협상이 발생하지 않습니다(즉, 두 RU가 드레이닝 설정 또는 책임 값을 협상하지 않음). 따라서 각 노드에서 단일 세션 모드를 정의하여 단일 세션 연결을 사용하여 파트너 RU 간의 모드 정의 매개 변수 설정을 조정합니다.
초기 제한을 설정하는 과정의 일환으로 CNOS 는 보장된(즉, 최소) 경합 승자 및 경합 패자 세션 수를 설정하고 원본 RU 경합 승자 세션에 대한 자동 활성화 횟수를 설정합니다. CNOS의 작업은 일반적으로 원본 LU와 대상 LU 사이에 지정된 모드 이름을 가진 세션 그룹에만 영향을 줍니다. 또는 하나의 CNOS 가 파트너 LU에 대한 모든 모드의 세션 제한을 다시 설정할 수 있습니다.
APPC는 후속 CNOS 동사를 실행하여 한쪽 또는 다른 쪽이 변경될 때까지 새 모드 세션 제한 및 경합 승자 극성을 적용합니다. 대상 LU에 관계없이 CNOS 트랜잭션은 대상 LU의 API에서 보이지 않습니다. CNOS 트랜잭션의 결과는 DISPLAY를 사용하여 가져올 수 있습니다.