다음을 통해 공유


MC_POST_ON_RECEIPT

MC_POST_ON_RECEIPT 동사를 사용하면 데이터 또는 상태 실제로 동시에 수신하지 않고 LU(로컬 논리 단위)에 도착하면 애플리케이션이 알림을 받도록 등록할 수 있습니다. 이 동사는 RECEIVE 상태일 때만 발급할 수 있으며 대화 상태가 변경되지 않습니다.

TP(트랜잭션 프로그램)에서 이 동사를 발급하면 APPC는 즉시 TP에 컨트롤을 반환합니다. 지정된 조건이 충족되면 세마 매개 변수로 지정된 Win32® 이벤트가 신호를 받고 동사가 완료됩니다. 그런 다음 TP는 VCB(동사 제어 블록)의 반환 코드를 확인하여 데이터 또는 상태 알림이 로컬 LU에 도착했는지 여부를 확인하고 실제로 데이터 또는 상태 알림을 받기 위해 MC_RECEIVE_IMMEDIATE 또는 MC_RECEIVE_AND_WAIT 동사를 발급합니다.

MC_POST_ON_RECEIPT 동사는 LU 유형 6.2에 대한 IBM 트랜잭션 프로그래머 설명서에 설명된 대로 POST_ON_RECEIPTTEST 동사를 모두 구현합니다.

다음 구조체는 MC_POST_ON_RECEIPT 동사에서 사용하는 동사 제어 블록에 대해 설명합니다.

구문

  
struct mc_post_on_receipt {  
    unsigned short   opcode;  
    unsigned char    opext;  
    unsigned char    reserv1;  
    unsigned char    primary_rc;  
    unsigned long    secondary_rc;  
    unsigned char    tp_id[8];  
    unsigned long    conv_id;  
    unsigned short   reserv2;  
    unsigned char    reserv3;  
    unsigned char    reserv4;  
    unsigned short   max_len;  
    unsigned short   reserv5;  
    unsigned char *  reserv6;  
    unsigned char    reserv7[5];  
    unsigned long    sema;  
};   

구성원

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

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

reserv1
예약된 필드입니다.

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

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

tp_id
제공된 매개 변수입니다. 로컬 TP를 식별합니다. 이 매개 변수의 값은 호출하는 TP의 TP_STARTED 또는 호출된 TP의RECEIVE_ALLOCATE 의해 반환됩니다.

conv_id
제공된 매개 변수입니다. 대화 식별자를 제공합니다. 이 매개 변수의 값은 호출하는 TP의 MC_ALLOCATE 또는 호출된 TP의 RECEIVE_ALLOCATE 의해 반환됩니다.

reserv2
예약된 필드입니다.

reserv3
예약된 필드입니다.

reserv4
예약된 필드입니다.

max_len
제공된 매개 변수입니다. TP에 알림을 게시하도록 APPC를 트리거하는 데이터의 길이를 지정합니다.

reserv5
예약된 필드입니다.

reserv6
예약된 필드입니다.

reserv7
예약된 필드입니다.

Sema
제공된 매개 변수입니다. Win32 이벤트의 핸들을 지정합니다. 이벤트는 TP에 의해 만들어졌어야 하며 TP는 호출이 이루어지기 전과 동사가 완료된 후에 다시 설정되도록 해야 합니다.

반환 코드

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

AP_DATA

보조 반환 코드; 프로그램은 데이터를 받을 수 있습니다.

AP_NOT_DATA

보조 반환 코드; 데이터가 아닌 정보를 프로그램에서 받을 수 있습니다.

AP_CANCELLED
기본 반환 코드; 동사가 취소되었습니다.

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

AP_BAD_CONV_ID

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

AP_BAD_TP_ID

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

AP_INVALID_SEMAPHORE_HANDLE

보조 반환 코드; sema 매개 변수가 유효한 값으로 설정되지 않았습니다.

AP_STATE_CHECK
기본 반환 코드입니다. 동사가 잘못된 상태에서 발행되었으므로 실행되지 않았습니다.

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

이 코드는 MC_ALLOCATE 후 발급된 동사를 통해 반환될 수 있습니다.

AP_ALLOCATION_FAILURE_NO_RETRY

보조 반환 코드; 구성 오류 또는 세션 프로토콜 오류와 같은 영구적인 조건으로 인해 대화를 할당할 수 없습니다. 오류를 확인하려면 시스템 관리자가 오류 로그 파일을 검사해야 합니다. 오류가 수정될 때까지 할당을 다시 시도하지 마세요.

AP_ALLOCATION_FAILURE_RETRY

보조 반환 코드; 링크 오류와 같은 임시 조건으로 인해 대화를 할당할 수 없습니다. 오류의 원인은 시스템 오류 로그에 기록됩니다. 할당을 다시 시도하세요.

AP_CONVERSATION_TYPE_MISMATCH

보조 반환 코드; 파트너 LU 또는 TP는 할당 요청에 지정된 대화 유형(기본 또는 매핑됨)을 지원하지 않습니다.

AP_PIP_NOT_ALLOWED

보조 반환 코드; 할당 요청이 지정된 PIP 데이터이지만 파트너 TP에 이 데이터가 필요하지 않거나 파트너 LU가 지원하지 않습니다.

AP_PIP_NOT_SPECIFIED_CORRECTLY

보조 반환 코드; 파트너 TP에는 PIP 데이터가 필요하지만 할당 요청은 PIP 데이터 또는 잘못된 수의 매개 변수를 지정하지 않았습니다.

AP_SECURITY_NOT_VALID

보조 반환 코드; 할당 요청에 지정된 사용자 식별자 또는 암호가 파트너 LU에서 수락되지 않았습니다.

AP_SYNC_LEVEL_NOT_SUPPORTED

보조 반환 코드; 파트너 TP는 할당 요청에 지정된 sync_level (AP_NONE 또는 AP_CONFIRM_SYNC_LEVEL)을 지원하지 않거나 sync_level 인식되지 않았습니다.

AP_TP_NAME_NOT_RECOGNIZED

보조 반환 코드; 파트너 LU가 할당 요청에 지정된 TP 이름을 인식하지 못합니다.

AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

보조 반환 코드; 원격 LU가 요청된 파트너 TP를 시작할 수 없어 할당 요청을 거부했습니다. 영구적인 상태입니다. 오류의 원인이 원격 노드에 기록될 수 있습니다. 오류가 수정될 때까지 할당을 다시 시도하지 마세요.

AP_TRANS_PGM_NOT_AVAIL_RETRY

보조 반환 코드; 원격 LU가 요청된 파트너 TP를 시작할 수 없어 할당 요청을 거부했습니다. 조건(예: 시간 제한)은 일시적일 수 있습니다. 오류의 원인이 원격 노드에 기록될 수 있습니다. 할당을 다시 시도하세요.

AP_COMM_SUBSYSTEM_ABENDED
기본 반환 코드입니다. 다음 조건 중 하나를 나타냅니다.

  • 이 대화에서 사용하는 노드에 ABEND가 발생했습니다.

  • TP와 PU 2.1 노드 간의 연결이 끊어졌습니다(LAN 오류).

  • TP 컴퓨터의 SnaBase에서 ABEND가 발생했습니다.

    시스템 관리자는 오류 로그를 검사하여 ABEND의 원인을 확인해야 합니다.

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

    AP_DEALLOC_ABEND_PROG
    기본 반환 코드; 다음 이유 중 하나로 인해 대화의 할당이 취소되었습니다.

  • 파트너 TP가 MC_DEALLOCATE 발급했습니다.

  • 파트너 TP가 ABEND를 발견하여 파트너 LU가 MC_DEALLOCATE 요청을 보냅니다.

    AP_DEALLOC_NORMAL
    기본 반환 코드; 파트너 TP가 확인을 요청하지 않고 대화의 할당을 취소하고 다음 중 하나로 설정된 dealloc_type MC_DEALLOCATE 발급했습니다.

  • AP_CONFIRM_SYNC_LEVEL

  • AP_FLUSH

  • AP_SYNC_LEVEL 대화의 동기화 수준이 AP_NONE

    AP_PROG_ERROR_NO_TRUNC
    기본 반환 코드; 대화가 SEND 상태인 동안 파트너 TP가 MC_SEND_ERROR 발급했습니다. 데이터가 잘리지 않았습니다.

    AP_PROG_ERROR_PURGING
    기본 반환 코드; RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태에 있는 동안 파트너 TP는 MC_SEND_ERROR 발급했습니다. 전송되었지만 아직 수신되지 않은 데이터는 제거됩니다.

    AP_PROG_ERROR_TRUNC
    기본 반환 코드; 대화가 SEND 상태인 동안 파트너 TP가 MC_SEND_ERROR 발급했습니다. 데이터가 잘렸습니다.

    AP_SVC_ERROR_NO_TRUNC
    기본 반환 코드; 파트너 TP(또는 파트너 LU)는 RECEIVE, PENDING_POST , CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태에서 AP_SVC 설정된 err_type 사용하여 MC_SEND_ERROR 발급했습니다. 파트너 TP로 전송된 데이터가 잘리지 않았습니다.

    AP_SVC_ERROR_PURGING
    기본 반환 코드; 파트너 TP(또는 파트너 LU)는 RECEIVE, PENDING_POST , CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태에서 AP_SVC 설정된 err_type 사용하여 MC_SEND_ERROR 발급했습니다. 파트너 TP로 전송된 데이터가 제거되었을 수 있습니다.

    AP_SVC_ERROR_TRUNC
    기본 반환 코드; 파트너 TP(또는 파트너 LU)는 RECEIVE, PENDING_POST , CONFIRM, CONFIRM_SEND 또는 CONFIRM_DEALLOCATE 상태에서 AP_SVC 설정된 err_type 사용하여 MC_SEND_ERROR 발급했습니다. 파트너 TP로 전송된 데이터가 잘렸을 수 있습니다.

설명

MC_POST_ON_RECEIPT 동사는 미해결 상태이지만 동일한 대화에서 다음 동사를 실행할 수 있습니다.

GET_ATTRIBUTES

GET_TYPE

MC_DEALLOCATE

MC_RECEIVE_AND_WAIT

MC_RECEIVE_IMMEDIATE

MC_REQUEST_TO_SEND

MC_SEND_ERROR

MC_TEST_RTS

TP_ENDED

비동기 MC_POST_ON_RECEIPT 동사가 완료되기 전에 다음 동사를 실행하면 MC_POST_ON_RECEIPT 동사가 취소됩니다(Win32 이벤트는 신호를 받고 동사 제어 블록의 기본 반환 코드는 AP_CANCELLED 설정됨).

MC_DEALLOCATE

MC_RECEIVE_AND_WAIT

MC_RECEIVE_IMMEDIATE

MC_SEND_ERROR

TP_ENDED