Condividi tramite


MC_POST_ON_RECEIPT

Il verbo MC_POST_ON_RECEIPT consente all'applicazione di registrarsi per ricevere una notifica quando i dati o lo stato arrivano all'unità logica locale (LU) senza effettivamente riceverlo contemporaneamente. Questo verbo può essere emesso solo quando è in stato RECEIVE e non causa mai una modifica dello stato della conversazione.

Quando il programma di transazione emette questo verbo, APPC restituisce immediatamente il controllo al tp. Quando vengono soddisfatte le condizioni specificate, viene segnalato l'evento Win32® specificato dal parametro sema e il verbo viene completato. Il TP esamina quindi il codice restituito nel blocco di controllo verbo (VCB) per determinare se i dati o le notifiche sullo stato sono arrivati all'unità lu locale e generano un MC_RECEIVE_IMMEDIATE o MC_RECEIVE_AND_WAIT verbo per ricevere effettivamente i dati o la notifica sullo stato.

Il verbo MC_POST_ON_RECEIPT implementa sia i verbi POST_ON_RECEIPT che TEST , come descritto nel manuale del programmatore di transazioni IBM per LU Type 6.2.

Nella struttura seguente viene descritto il blocco di controllo verbo utilizzato dal verbo MC_POST_ON_RECEIPT .

Sintassi

  
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;  
};   

Membri

Opcode
Parametro fornito. Specifica il codice dell'operazione verbo, AP_M_POST_ON_RECEIPT.

opext
Parametro fornito. Specifica l'estensione dell'operazione verbo, AP_MAPPED_CONVERSATION.

reserv1
Campo riservato.

primary_rc
Parametro restituito. Specifica il codice restituito primario impostato da APPC al completamento del verbo. I codici restituiti validi variano a seconda del verbo APPC rilasciato. Per questo verbo, vedere Codici restituiti per i codici di errore validi.

secondary_rc
Parametro restituito. Specifica il codice restituito secondario impostato da APPC al completamento del verbo. I codici restituiti validi variano a seconda del verbo APPC rilasciato. Per questo verbo, vedere Codici restituiti per i codici di errore validi.

tp_id
Parametro fornito. Identifica il tp locale. Il valore di questo parametro viene restituito da TP_STARTED nella chiamata tp o daRECEIVE_ALLOCATE nel tp richiamato.

conv_id
Parametro fornito. Fornisce l'identificatore della conversazione. Il valore di questo parametro viene restituito da MC_ALLOCATE nella chiamata di TP o da RECEIVE_ALLOCATE nel tp richiamato.

reserv2
Campo riservato.

reserv3
Campo riservato.

reserv4
Campo riservato.

max_len
Parametro fornito. Specifica la lunghezza dei dati che attivano l'APPC per pubblicare una notifica al tp.

reserv5
Campo riservato.

reserv6
Campo riservato.

reserv7
Campo riservato.

sema
Parametro fornito. Specifica l'handle di un evento Win32. L'evento deve essere stato creato dal tp e il tp è responsabile della reimpostazione prima che venga effettuata una chiamata e dopo il completamento del verbo.

Codici di ritorno

AP_OK
Codice restituito primario; verbo eseguito correttamente.

AP_DATA

Codice restituito secondario; i dati sono disponibili per il programma da ricevere.

AP_NOT_DATA

Codice restituito secondario; informazioni diverse dai dati sono disponibili per la ricezione del programma.

AP_CANCELLED
Codice restituito primario; il verbo è stato annullato.

AP_PARAMETER_CHECK
Codice restituito primario; il verbo non è stato eseguito a causa di un errore di parametro.

AP_BAD_CONV_ID

Codice restituito secondario; il valore di conv_id non corrisponde a un identificatore di conversazione assegnato da APPC.

AP_BAD_TP_ID

Codice restituito secondario; il valore di tp_id non corrisponde a un identificatore TP assegnato da APPC.

AP_INVALID_SEMAPHORE_HANDLE

Codice restituito secondario; Il parametro sema non è stato impostato su un valore valido.

AP_STATE_CHECK
Codice restituito primario; il verbo non è stato eseguito perché è stato emesso in uno stato non valido.

AP_ALLOCATION_ERROR
Codice restituito primario; AppC non è riuscito ad allocare una conversazione. Lo stato della conversazione è impostato su RESET.

Questo codice può essere restituito tramite un verbo emesso dopo MC_ALLOCATE.

AP_ALLOCATION_FAILURE_NO_RETRY

Codice restituito secondario; La conversazione non può essere allocata a causa di una condizione permanente, ad esempio un errore di configurazione o un errore del protocollo di sessione. Per determinare l'errore, l'amministratore di sistema deve esaminare il file di log degli errori. Non ritentare l'allocazione fino a quando l'errore non è stato corretto.

AP_ALLOCATION_FAILURE_RETRY

Codice restituito secondario; Impossibile allocare la conversazione a causa di una condizione temporanea, ad esempio un errore di collegamento. Il motivo dell'errore viene registrato nel log degli errori di sistema. Ripetere l'allocazione.

AP_CONVERSATION_TYPE_MISMATCH

Codice restituito secondario; il lu partner o TP non supporta il tipo di conversazione (di base o mappato) specificato nella richiesta di allocazione.

AP_PIP_NOT_ALLOWED

Codice restituito secondario; la richiesta di allocazione ha specificato i dati PIP, ma il tp del partner non richiede questi dati o l'lu partner non lo supporta.

AP_PIP_NOT_SPECIFIED_CORRECTLY

Codice restituito secondario; il tp del partner richiede dati PIP, ma la richiesta di allocazione non ha specificato dati PIP o un numero errato di parametri.

AP_SECURITY_NOT_VALID

Codice restituito secondario; l'identificatore utente o la password specificata nella richiesta di allocazione non è stata accettata dall'lu partner.

AP_SYNC_LEVEL_NOT_SUPPORTED

Codice restituito secondario; il tp del partner non supporta il sync_level (AP_NONE o AP_CONFIRM_SYNC_LEVEL) specificato nella richiesta di allocazione oppure il sync_level non è stato riconosciuto.

AP_TP_NAME_NOT_RECOGNIZED

Codice restituito secondario; l'lu partner non riconosce il nome TP specificato nella richiesta di allocazione.

AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

Codice restituito secondario; l'unità lu remota ha rifiutato la richiesta di allocazione perché non è stato in grado di avviare il TP del partner richiesto. La condizione è permanente. Il motivo dell'errore può essere registrato nel nodo remoto. Non ritentare l'allocazione fino a quando l'errore non è stato corretto.

AP_TRANS_PGM_NOT_AVAIL_RETRY

Codice restituito secondario; l'unità lu remota ha rifiutato la richiesta di allocazione perché non è stato in grado di avviare il TP del partner richiesto. La condizione può essere temporanea, ad esempio un timeout. Il motivo dell'errore può essere registrato nel nodo remoto. Ripetere l'allocazione.

AP_COMM_SUBSYSTEM_ABENDED
Codice restituito primario; indica una delle condizioni seguenti:

  • Il nodo usato da questa conversazione ha rilevato un ABEND.

  • La connessione tra il tp e il nodo pu 2.1 è stata interrotta (errore LAN).

  • La SnaBase nel computer del TP ha incontrato un ABEND.

    L'amministratore di sistema deve esaminare il log degli errori per determinare il motivo di ABEND.

    AP_COMM_SUBSYSTEM_NOT_LOADED
    Codice restituito primario; Impossibile caricare o terminare un componente necessario durante l'elaborazione del verbo. Pertanto, la comunicazione non poteva avvenire. Contattare l'amministratore di sistema per un'azione correttiva.

    AP_DEALLOC_ABEND_PROG
    Codice restituito primario; la conversazione è stata deallocata per uno dei motivi seguenti:

  • Il partner TP ha rilasciato MC_DEALLOCATE.

  • Il partner TP ha rilevato un ABEND, causando l'invio di una richiesta di MC_DEALLOCATE da parte del partner LU.

    AP_DEALLOC_NORMAL
    Codice restituito primario; il tp del partner ha deallocato la conversazione senza richiedere conferma ed emesso MC_DEALLOCATE con dealloc_type impostato su uno dei seguenti:

  • AP_CONFIRM_SYNC_LEVEL

  • AP_FLUSH

  • AP_SYNC_LEVEL con il livello di sincronizzazione della conversazione specificata come AP_NONE

    AP_PROG_ERROR_NO_TRUNC
    Codice restituito primario; il tp del partner ha emesso MC_SEND_ERROR mentre la conversazione era in stato SEND. I dati non sono stati troncati.

    AP_PROG_ERROR_PURGING
    Codice restituito primario; durante lo stato RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE, il tp del partner ha emesso MC_SEND_ERROR. I dati inviati ma non ancora ricevuti vengono eliminati.

    AP_PROG_ERROR_TRUNC
    Codice restituito primario; il tp del partner ha emesso MC_SEND_ERROR mentre la conversazione era in stato SEND. I dati sono stati troncati.

    AP_SVC_ERROR_NO_TRUNC
    Codice restituito primario; il partner TP (o lu partner) ha emesso MC_SEND_ERROR con err_type impostato su AP_SVC mentre si trova nello stato RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE. I dati inviati al tp del partner non sono stati troncati.

    AP_SVC_ERROR_PURGING
    Codice restituito primario; il partner TP (o lu partner) ha emesso MC_SEND_ERROR con err_type impostato su AP_SVC mentre si trova nello stato RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE. I dati inviati al tp del partner potrebbero essere stati eliminati.

    AP_SVC_ERROR_TRUNC
    Codice restituito primario; il partner TP (o lu partner) ha emesso MC_SEND_ERROR con err_type impostato su AP_SVC mentre si trova nello stato RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE. I dati inviati al tp del partner potrebbero essere stati troncati.

Osservazioni:

Mentre un verbo MC_POST_ON_RECEIPT è in sospeso, i verbi seguenti possono essere emessi nella stessa conversazione:

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

L'emissione di uno dei verbi seguenti prima del completamento del verbo asincrono MC_POST_ON_RECEIPT fa sì che il verbo MC_POST_ON_RECEIPT venga annullato (l'evento Win32 viene segnalato e il codice restituito primario nel blocco di controllo verbo è impostato su AP_CANCELLED).

MC_DEALLOCATE

MC_RECEIVE_AND_WAIT

MC_RECEIVE_IMMEDIATE

MC_SEND_ERROR

TP_ENDED