다음을 통해 공유


SEND_CONVERSATION

SEND_CONVERSATION 동사는 LU(로컬 논리 단위)와 파트너 LU 간에 세션을 할당하고 세션에 데이터를 보낸 다음 세션을 할당 취소합니다.

다음 구조체는 SEND_CONVERSATION 동사에서 사용하는 동사 제어 블록(VCB)을 설명합니다.

구문

  
struct send_conversation {  
    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[8];  
    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       reserv6[11];  
    unsigned char       pwd[10];  
    unsigned char       user_id[10];  
    unsigned short      pip_dlen;  
    unsigned char FAR * pip_dptr;  
    unsigned char       reserv6;  
    unsigned char       fqplu_name[17];  
    unsigned char       reserv7[8];  
    unsigned short      dlen;  
    unsigned char FAR * dptr;  
};   

구성원

opcode
제공된 매개 변수입니다. 동사 작업 코드 AP_B_SEND_CONVERSATION 지정합니다.

opext
제공된 매개 변수입니다. 동사 연산 확장 AP_BASIC_CONVERSATION 지정합니다.

reserv2
예약된 필드입니다.

primary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 기본 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.

secondary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 보조 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.

tp_id
제공된 매개 변수입니다. TP(로컬 트랜잭션 프로그램)를 식별합니다. 이 매개 변수의 값은 TP_STARTED 반환되었습니다.

conv_id
제공된 매개 변수입니다. 대화 식별자를 제공합니다.

이 매개 변수의 값은 호출하는 TP의 ALLOCATE 또는 호출된 TP의 RECEIVE_ALLOCATE 반환됩니다.

rtn_ctl
제공된 매개 변수입니다. APPC가 대화에 할당할 세션을 선택하는 방법과 로컬 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는 세션이 무료로 제공될 때까지 기다립니다.

    conv_group_id
    제공/반환된 매개 변수입니다. 세션이 할당되어야 하는 대화 그룹의 ID를 지정하기 위해 rtn_ctl WHEN_CONV_GROUP_ALLOC 경우 제공된 매개 변수로 사용됩니다. rtn_ctl 다른 값을 지정하고 primary_rc AP_OK 경우 반환된 값입니다. 이 매개 변수의 목적은 TP에 동일한 세션이 재할당되므로 세션을 통해 수행된 대화가 시작된 것과 동일한 순서로 수행된다는 확신을 제공하는 것입니다.

    sense_data
    반환된 매개 변수입니다. 기본 및 보조 반환 코드가 할당 오류(재시도 또는 재시도 안 함)를 나타내는 경우 SNA 정의 센스 코드가 반환됩니다.

    plu_alias
    제공된 매개 변수입니다. 파트너 LU가 로컬 TP에 알려진 별칭을 지정합니다. 이 매개 변수는 구성 중에 설정된 파트너 LU의 이름과 일치해야 합니다. 매개 변수는 8바이트이며 다음을 포함하는 G ASCII 문자 집합을 입력합니다.

  • 대문자

  • 숫자 0~9

  • 공백

  • 특수 문자 $, #, %, 및 @

    이 매개 변수의 값이 8바이트 미만이면 ASCII 공백(0x20)을 사용하여 오른쪽에 패딩합니다.

    mode_name
    제공된 매개 변수입니다. 구성 중에 정의된 네트워킹 특성 집합의 이름을 지정합니다. 이 매개 변수는 구성 중에 파트너 LU와 연결된 모드의 이름과 일치해야 합니다.

    매개 변수는 8 바이트 EBCDIC 문자 문자열입니다. 모든 EBCDIC 공백을 포함하여 A EBCDIC 문자 집합 형식의 문자로 구성됩니다. 이러한 문자는 다음과 같습니다.

  • 대문자

  • 숫자 0~9

  • 특수 문자 $, #, 및 @

    문자열의 첫 번째 문자는 대문자 또는 특수 문자여야 합니다.

    기본 대화에서 SNASVCMG(APPC에서 내부적으로 사용되는 예약 모드 이름)라는 이름을 사용하지 않는 것이 좋습니다.

    tp_name
    제공된 매개 변수입니다. 호출된 TP의 이름을 지정합니다. 호출하는 TP에서 ALLOCATE로 지정된 tp_name 값은 호출된 TP에서 RECEIVE_ALLOCATE 지정한 tp_name 값과 일치해야 합니다.

    매개 변수는 대/소문자를 구분하는 64 바이트 EBCDIC 문자 문자열입니다. 이 매개 변수는 AE EBCDIC 문자 집합 형식의 문자로 구성됩니다. 이러한 문자는 다음과 같습니다.

  • 대문자 및 소문자

  • 숫자 0~9

  • 특수 문자 $, #, @ 및 마침표(.)

    TP 이름이 64바이트 미만인 경우 EBCDIC 공백(0x40)을 사용하여 오른쪽에 패딩합니다.

    서비스 TP의 이름을 지정하는 SNA 규칙은 최대 4자입니다. 첫 번째 문자는 0x00과 0x3F 사이의 16진수 바이트입니다. 다른 문자는 EBCDIC AE 문자 집합에서 가져옵니다.

    security
    제공된 매개 변수입니다. 호출된 TP에 대한 액세스의 유효성을 검사하기 위해 파트너 LU에 필요한 정보를 지정합니다.

  • AP_NONE 호출된 TP가 대화 보안을 사용하지 않도록 지정합니다.

  • AP_PGM 호출된 TP가 대화 보안을 사용하며 사용자 식별자와 암호가 필요하도록 지정합니다. 이 정보를 제공하려면 user_idpwd 를 사용합니다.

  • AP_SAME 유효한 사용자 식별자 및 암호로 호출된 호출된 TP가 다른 TP를 호출하는 것을 지정합니다.

    예를 들어 TP A가 유효한 사용자 식별자 및 암호를 사용하여 TP B를 호출하고 TP B가 TP C를 호출한다고 가정합니다. TP B가 AP_SAME 값을 지정하는 경우 APPC는 TP C에 대한 LU를 TP A의 사용자 식별자와 이미 확인된 표시기를 보냅니다. 이 표시기는 TP C에 암호를 요구하지 않음을 나타냅니다(TP C가 이미 확인된 표시기를 허용하도록 구성된 경우).

    pwd
    제공된 매개 변수입니다. user_id 연결된 암호를 지정합니다. 이 매개 변수는 보안 매개 변수가 AP_PGM 설정되고 구성 중에 설정된 user_id 대한 암호와 일치해야 하는 경우에만 필요합니다.

    이 매개 변수는 대/소문자를 구분하는 10 바이트 EBCDIC 문자 문자열입니다. AE EBCDIC 문자 집합 형식의 문자로 구성됩니다. 이러한 문자는 다음과 같습니다.

  • 대문자 및 소문자

  • 숫자 0~9

  • 특수 문자 $, #, @ 및 마침표(.)

    암호가 10바이트 미만인 경우 EBCDIC 공백(0x40)을 사용하여 오른쪽에 패딩합니다.

    User_id
    제공된 매개 변수입니다. 파트너 TP에 액세스하는 데 필요한 사용자 식별자를 지정합니다. 이 매개 변수는 보안 매개 변수가 AP_PGM 설정되고 파트너 TP에 대해 구성된 사용자 식별자 중 하나와 일치해야 하는 경우에만 필요합니다.

    매개 변수는 AE EBCDIC 문자 집합 형식의 문자로 구성됩니다. 이러한 문자는 다음과 같습니다.

  • 대문자 및 소문자

  • 숫자 0~9

  • 특수 문자 $, #, @ 및 마침표(.)

    사용자 식별자가 10바이트 미만인 경우 EBCDIC 공백(0x40)을 사용하여 오른쪽에 패딩합니다.

    pip_dlen
    제공된 매개 변수입니다. 파트너 TP에 전달할 PIP의 길이를 지정합니다. 이 매개 변수의 범위는 0에서 32767까지입니다.

    pip_dptr
    제공된 매개 변수입니다. PIP 데이터를 포함하는 버퍼의 주소를 지정합니다. pip_dlen 0보다 큰 경우에만 이 매개 변수를 사용합니다.

    PIP 데이터는 파트너 TP 또는 원격 운영 체제에 필요한 초기화 매개 변수 또는 환경 설정 정보로 구성됩니다. PIP 데이터는 GDS 형식을 따라야 합니다. 자세한 내용은 IBM SNA 설명서를 참조하세요.

    Microsoft Windows 운영 체제의 경우 데이터 버퍼는 정적 데이터 영역 또는 전역적으로 할당된 영역에 상주할 수 있습니다.

    fqplu_name
    제공된 매개 변수입니다. 로컬 LU의 정규화된 이름을 지정합니다. 이 매개 변수는 원격 노드에 정의된 로컬 LU의 정규화된 이름과 일치해야 합니다. 매개 변수는 네트워크 이름(NETID)과 파트너 LU의 LU 이름인 두 가지 형식의 A EBCDIC 문자 문자열(각각 최대 8자)으로 구성됩니다. 이름은 EBCDIC 기간(.)으로 구분됩니다. NETID를 생략할 수 있으며, 이 경우 마침표도 생략해야 합니다.

    plu_alias 제공되지 않은 경우 이 이름을 제공해야 합니다.

    EBCDIC 문자 형식:

  • 대문자

  • 숫자 0~9

  • 특수 문자 $, #, 및 @

    이 매개 변수의 값이 17바이트 미만이면 EBCDIC 공백(0x40)으로 오른쪽에 패딩합니다.

    dlen
    제공된 매개 변수입니다. 로컬 LU의 송신 버퍼에 넣을 데이터 바이트 수를 지정합니다. 이 매개 변수의 범위는 0에서 65535까지입니다.

    dptr
    제공된 매개 변수입니다. 로컬 LU의 송신 버퍼에 넣을 데이터를 포함하는 버퍼의 주소를 지정합니다.

    Windows 운영 체제의 경우 데이터 버퍼는 정적 데이터 영역 또는 전역적으로 할당된 영역에 상주할 수 있습니다. 데이터 버퍼는 이 영역 내에 완전히 맞아야 합니다.

반환 코드

AP_OK
기본 반환 코드입니다. 동사가 성공적으로 실행되었습니다.

AP_UNSUCCESSFUL
기본 반환 코드; 제공된 매개 변수 rtn_ctl 컨트롤을 TP(AP_IMMEDIATE)로 즉시 반환하도록 지정했으며 로컬 LU에는 사용 가능한 경합 승자 세션이 없습니다.

AP_PARAMETER_CHECK
기본 반환 코드입니다. 매개 변수 오류로 인해 동사가 실행되지 않았습니다.

AP_BAD_RETURN_CONTROL

보조 반환 코드; rtn_ctl 대해 지정된 값이 잘못되었습니다.

AP_BAD_SECURITY

보조 반환 코드; 보안 에 지정된 값이 잘못되었습니다.

AP_BAD_TP_ID

보조 반환 코드; tp_id 값이 APPC에서 할당한 TP 식별자와 일치하지 않습니다.

AP_PIP_LEN_INCORRECT

보조 반환 코드; pip_dlen 값이 32767보다 큽니다.

AP_UNKNOWN_PARTNER_MODE

보조 반환 코드; mode_name 대해 지정된 값이 잘못되었습니다.

AP_BAD_PARTNER_LU_ALIAS

보조 반환 코드; APPC는 제공된 partner_lu_alias 인식하지 못했습니다.

AP_ALLOCATION_ERROR
기본 반환 코드; APPC에서 대화를 할당하지 못했습니다. 대화 상태가 RESET로 설정됩니다.

이 코드는 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
    기본 반환 코드; 동사를 처리하는 동안 필수 구성 요소를 로드하거나 종료할 수 없습니다. 따라서 통신을 수행할 수 없습니다. 정정 작업은 시스템 관리자에게 문의하세요

    이 반환 코드를 ALLOCATE와 함께 사용하면 로컬 LU를 지원하는 통신 시스템을 찾을 수 없음을 나타낼 수 있습니다. 예를 들어 TP_STARTED 지정된 로컬 LU 별칭이 잘못되었거나 구성되지 않았습니다. lu_alias 또는 mode_name 8자 미만인 경우 이러한 필드가 오른쪽의 공백으로 채워져 있는지 확인해야 합니다. 이 오류는 ALLOCATE 요청을 충족할 수 있는 노드가 없으므로 이러한 매개 변수가 공백으로 채워지지 않으면 반환됩니다.

    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 바이트 스와핑 순서로 표시됩니다. 문제가 지속되면 시스템 관리자에게 문의하세요.

설명

이 동사는 호출 TP에 의해 실행되어 원격 TP와 전체 대화를 수행합니다. 원격 TP가 대화 시작 또는 데이터를 거부하는 경우 호출하는 TP는 거부 알림을 받지 않습니다.

TP가 이 동사를 발급하면 대화 상태가 RESET입니다. 상태 변경은 없습니다.

SEND_CONVERSATION 몇 가지 매개 변수는 EBCDIC 또는 ASCII 문자열입니다. TP는 CSV CONVERT 를 사용하여 문자열을 한 문자 집합에서 다른 문자 집합으로 변환할 수 있습니다.

일반적으로 mode_name 값은 호출된 TP 노드에 대해 구성되고 파트너 LU와 구성 중에 연결된 모드의 이름과 일치해야 합니다. 호출된 TP 노드에서 파트너 LU와 연결된 모드 중 하나가 암시적 모드인 경우 파트너 LU와 연결된 모드 이름이 mode_name 값과 일치하지 않는 경우 두 RU 간에 설정된 세션은 암시적 모드가 됩니다.