Prepare_To_Receive (CPI-C)

La chiamata Prepare_To_Receive (nome funzione cmptr) modifica lo stato della conversazione per il programma locale da SEND a RECEIVE.

Sintassi

  
CM_ENTRY Prepare_To_Receive(   
  unsigned char FAR *conversation_ID,    
  CM_INT32 FAR *return_code              
);  

Parametri

conversation_ID
Parametro fornito. Specifica l'identificatore per la conversazione. Il valore di questo parametro è stato restituito da Initialize_Conversation o Accept_Conversation.

return_code
Codice restituito da questa chiamata. I codici restituiti validi sono elencati più avanti in questo argomento.

Codici restituiti

CM_OK
Codice restituito primario; la chiamata eseguita correttamente.

CM_OPERATION_NOT_ACCEPTED
Codice restituito primario; un'operazione precedente in questa conversazione è incompleta.

CM_OPERATION_INCOMPLETE
Codice restituito primario; l'operazione non è stata completata (la modalità di elaborazione non è bloccata solo) ed è ancora in corso. Il programma può eseguire Wait_For_Conversation per attendere il completamento dell'operazione o Cancel_Conversation per annullare l'operazione e la conversazione. Se Specify_Windows_Handle è stato chiamato, l'applicazione deve attendere la notifica da un messaggio di Microsoft® Windows® e non chiamare Wait_For_Conversation.

CM_PROGRAM_PARAMETER_CHECK
Codice restituito primario; il valore specificato da conversation_ID non è valido.

CM_PROGRAM_STATE_CHECK
Codice restituito primario; si è verificato uno dei seguenti:

  • Lo stato della conversazione non è SEND o SEND_PENDING.

  • Per una conversazione di base, la conversazione è in stato SEND. Tuttavia, il programma non ha completato l'invio di un record logico.

    Questi codici restituiti possono verificarsi se il tipo di preparazione della ricezione delle conversazioni è impostato su CM_PREP_TO_RECEIVE_CONFIRM o se il tipo di preparazione a ricezione è impostato su CM_PREP_TO_RECEIVE_SYNC_LEVEL e il livello di sincronizzazione delle conversazioni è impostato su CM_CONFIRM.

    CM_PRODUCT_SPECIFIC_ERROR
    Codice restituito primario; si è verificato un errore specifico del prodotto ed è stato registrato nel log degli errori dei prodotti.

    CM_CONVERSATION_TYPE_MISMATCH
    Codice restituito primario; l'unità logica partner (LU) o il programma non supporta il tipo di conversazione (basic o mappato) specificato nella richiesta di allocazione.

    CM_PIP_NOT_SPECIFIED_CORRECTLY
    Codice restituito primario; la richiesta di allocazione è stata rifiutata da un programma di transazione NON CPI-C LU 6.2 (TP). Il programma partner richiede una o più variabili di dati PIP, che non sono supportate da CPI-C.

    CM_SECURITY_NOT_VALID
    Codice restituito primario; l'identificatore utente o la password specificati nella richiesta di allocazione non sono stati accettati dall'LU partner.

    CM_SYNC_LEVEL_NOT_SUPPORTED_PGM
    Codice restituito primario; il programma partner non supporta il livello di sincronizzazione specificato nella richiesta di allocazione.

    CM_TPN_NOT_RECOGNIZED
    Codice restituito primario; l'lu partner non riconosce il nome del programma specificato nella richiesta di allocazione.

    CM_TP_NOT_AVAILABLE_NO_RETRY
    Codice restituito primario; il lu partner non può avviare il programma specificato nella richiesta di allocazione a causa di una condizione permanente. Il motivo dell'errore può essere connesso al nodo remoto. Non ripetere l'allocazione finché l'errore non è stato corretto.

    CM_TP_NOT_AVAILABLE_RETRY
    Codice restituito primario; il lu partner non può avviare il programma specificato nella richiesta di allocazione a causa di una condizione temporanea. Il motivo dell'errore può essere connesso al nodo remoto. Riprovare l'allocazione.

    CM_PROGRAM_ERROR_PURGING
    Codice restituito primario; si è verificato uno dei seguenti:

  • Durante lo stato RECEIVE o CONFIRM, il programma partner ha rilasciato Send_Error. I dati inviati ma non ancora ricevuti vengono eliminati.

  • Mentre in SEND_PENDING stato con la direzione degli errori impostata su CM_RECEIVE_ERROR, il programma partner ha rilasciato Send_Error. I dati non sono stati eliminati.

    CM_RESOURCE_FAILURE_NO_RETRY
    Codice restituito primario; si è verificato uno dei seguenti:

  • La conversazione è stata terminata prematuramente a causa di una condizione permanente. Non riprovare finché l'errore non è stato corretto.

  • Il programma partner non ha deallocato la conversazione prima di terminare normalmente.

    CM_RESOURCE_FAILURE_RETRY
    Codice restituito primario; la conversazione è stata terminata prematuramente a causa di una condizione temporanea, ad esempio l'errore del modem. Riprovare la conversazione.

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

  • Il programma remoto ha rilasciato Deallocate con il parametro di tipo impostato su CM_DEALLOCATE_ABEND o l'lu remoto ha eseguito questa operazione a causa di una condizione di terminazione anomalo del programma remoto. Se la conversazione per il programma remoto era in stato RECEIVE quando la chiamata è stata rilasciata, le informazioni inviate dal programma locale e non ancora ricevute dal programma remoto vengono rimosse.

  • Il TP remoto termina normalmente, ma non dealloca la conversazione prima di terminare. I servizi del nodo presso l'lu remoto deallocato la conversazione per conto del TP remoto.

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

  • Il programma partner ha rilasciato Deallocate con il parametro di tipo impostato su ABEND_SVC.

  • Il programma partner non ha deallocato la conversazione prima di terminare.

    Se la conversazione è in stato RECEIVE per il programma partner quando questa chiamata viene rilasciata dal programma locale, i dati inviati dal programma locale e non ancora ricevuti dal programma partner vengono eliminati.

    CM_DEALLOCATED_ABEND_TIMER
    Codice restituito primario; la conversazione è stata deallocata perché il programma partner ha rilasciato Deallocate con il parametro di tipo impostato su ABEND_TIMER. Se la conversazione è in stato RECEIVE per il programma partner quando questa chiamata viene rilasciata dal programma locale, i dati inviati dal programma locale e non ancora ricevuti dal programma partner vengono eliminati.

    CM_SVC_ERROR_PURGING
    Codice restituito primario; mentre nello stato SEND, il programma partner o l'lu partner ha rilasciato Send_Error con il parametro di tipo impostato su SVC. I dati inviati al programma partner potrebbero essere stati eliminati.

    Modifiche dello stato

    La conversazione può essere in stato SEND o SEND_PENDING.

    Le modifiche allo stato, riepilogate nella tabella seguente, sono basate sul valore del parametro return_code .

return_code Nuovo stato
CM_OK RECEIVE
CM_PROGRAM_ERROR_PURGING RECEIVE
CM_SVC_ERROR_PURGING RECEIVE
CM_CONVERSATION_TYPE_MISMATCH RESET
CM_PIP_NOT_SPECIFIED_CORRECTLY RESET
CM_SECURITY_NOT_VALID RESET
CM_SYNC_LEVEL_NOT_SUPPORTED_PGM RESET
CM_TPN_NOT_RECOGNIZED RESET
CM_TP_NOT_AVAILABLE_NO_RETRY RESET
CM_TP_NOT_AVAILABLE_RETRY RESET
CM_DEALLOCATED_ABEND RESET
CM_RESOURCE_FAILURE_NO_RETRY RESET
CM_RESOURCE_FAILURE_RETRY RESET
CM_DEALLOCATED_ABEND_SVC RESET
CM_DEALLOCATED_ABEND_TIMER RESET
Tutti gli altri Nessuna modifica

Prima di modificare lo stato della conversazione, questa chiamata esegue l'equivalente di uno dei seguenti:

  • La chiamata Di scaricamento , inviando il contenuto del buffer di invio delle UNITÀ locali all'lu e al programma partner, se una delle condizioni seguenti è true:

    • Il tipo di preparare la ricezione delle conversazioni è impostato su CM_PREP_TO_RECEIVE_FLUSH.

    • Il tipo di preparazione della ricezione delle conversazioni è impostato su CM_PREP_TO_RECEIVE_SYNC_LEVEL e il livello di sincronizzazione delle conversazioni è impostato su CM_NONE.

  • La chiamata Conferma , l'invio del contenuto del buffer di invio delle UNITÀ locali e una richiesta di conferma al programma partner, se una delle condizioni seguenti è true:

    • Il tipo di preparazione alla ricezione delle conversazioni è impostato su CM_PREP_TO_RECEIVE_CONFIRM.

    • Il tipo di preparazione della ricezione delle conversazioni è impostato su CM_PREP_TO_RECEIVE_SYNC_LEVEL e il livello di sincronizzazione delle conversazioni è impostato su CM_CONFIRM.

    Il tipo di preparazione alla ricezione viene impostato da Set_Prepare_To_Receive_Type; il livello di sincronizzazione viene impostato da Set_Sync_Level.

    La conversazione non può cambiare in SEND o SEND_PENDING per il programma partner finché il programma partner riceve uno dei valori seguenti tramite il parametro status_received della chiamata di ricezione :

  • CM_SEND_RECEIVED

  • CM_CONFIRM_SEND_RECEIVED e risposte con la chiamata con conferma o Send_Error

Commenti

Dopo l'esecuzione di questa chiamata, il programma locale può ricevere dati.