Send_Error (CPI-C)

La chiamata Send_Error ( nome funzione cmserr) notifica al programma partner che il programma locale ha rilevato un errore a livello di applicazione.

Sintassi

  
CM_ENTRY Send_Error(   
  unsigned char FAR *conversation_ID,    
    CM_INT32 FAR *request_to_send_received,    
  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.

request_to_send_received
Parametro restituito. Specifica l'indicatore request-to-send-received. I valori possibili sono:

CM_REQ_TO_SEND_RECEIVED
Il programma partner ha rilasciato Request_To_Send, che richiede al programma locale di modificare lo stato RECEIVE della conversazione.

CM_REQ_TO_SEND_NOT_RECEIVED
Il programma partner non ha eseguito Request_To_Send. Questo valore non è rilevante se return_code è impostato su CM_PROGRAM_PARAMETER_CHECK o CM_STATE_CHECK.

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

Codici restituiti

Il valore di return_code varia a seconda dello stato della conversazione quando viene eseguita la chiamata.

STATO SEND

Se il programma invia la chiamata con la conversazione nello stato SEND, sono possibili i codici restituiti seguenti:

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 è solo non bloccante) ed è ancora in corso. Il programma può emettere 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_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 (di base 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 dal 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; l'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 fino a quando l'errore non è stato corretto.

CM_TP_NOT_AVAILABLE_RETRY
Codice restituito primario; l'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. Ripetere l'allocazione.

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

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

  • Mentre in SEND_PENDING stato con la direzione di errore impostata su CM_RECEIVE_ERROR, il programma partner ha emesso 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 un errore del modem. Ripetere la conversazione.

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

  • Il programma remoto ha emesso Deallocare con il parametroset di tipo per CM_DEALLOCATE_ABEND o l'lu remoto ha eseguito questa operazione a causa di una condizione di terminazione anomala del programma remoto. Se la conversazione per il programma remoto era in stato RECEIVE quando è stata eseguita la chiamata, le informazioni inviate dal programma locale e non ancora ricevute dal programma remoto vengono eliminate.

  • Il tp remoto termina normalmente ma non dealloca la conversazione prima di terminare. I servizi del nodo nel lu remoto deallocazione della 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 eseguita 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 emesso Deallocate con il parametro di tipo impostato su ABEND_TIMER. Se la conversazione è in stato RECEIVE per il programma partner quando questa chiamata viene eseguita 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; durante lo stato SEND, il programma partner o l'lu partner ha emesso Send_Error con il parametro di tipo impostato su SVC. I dati inviati al programma partner potrebbero essere stati eliminati.

    STATO RECEIVE

    Se la chiamata viene eseguita nello stato RECEIVE, sono possibili i codici restituiti seguenti:

    CM_OK
    Codice restituito primario; poiché le informazioni in ingresso vengono eliminate quando viene eseguita la chiamata Send_Error nello stato RECEIVE, CM_OK viene generato anziché quanto segue:

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING

  • CM_SVC_ERROR_NO_TRUNC

  • CM_SVC_ERROR_PURGING

  • CM_PROGRAM_ERROR_TRUNC

  • CM_SVC_ERROR_TRUNC (solo conversazione di base)

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

    Per una spiegazione di questi codici restituiti, vedere Codici restituiti comuni CPI-C.

    CM_DEALLOCATED_NORMAL
    Codice restituito primario; poiché le informazioni in ingresso vengono eliminate quando Send_Error viene emesso in stato RECEIVE, CM_DEALLOCATED_NORMAL viene generato anziché quanto segue:

  • CM_CONVERSATION_TYPE_MISMATCH

  • CM_PIP_NOT_SPECIFIED_CORRECTLY

  • CM_SECURITY_NOT_VALID

  • CM_SYNC_LEVEL_NOT_SUPPORTED_PGM

  • CM_TPN_NOT_RECOGNIZED

  • CM_TP_NOT_AVAILABLE_NO_RETRY

  • CM_TP_NOT_AVAILABLE_RETRY

  • CM_DEALLOCATED_ABEND

  • CM_DEALLOCATED_ABEND_SVC

  • CM_DEALLOCATED_ABEND_TIMER

    stato SEND_PENDING

    Se la chiamata viene eseguita in SEND_PENDING stato, sono possibili i codici restituiti seguenti:

  • CM_OK (codice restituito primario; la chiamata è stata eseguita correttamente).

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_PROGRAM_ERROR_PURGING

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

  • CM_DEALLOCATED_ABEND

  • CM_DEALLOCATED_ABEND_SVC

  • CM_DEALLOCATED_ABEND_TIMER

  • CM_SVC_ERROR_PURGING

    Per una spiegazione di questi codici restituiti, vedere Codici restituiti comuni CPI-C.

    CONFIRM, CONFIRM_SEND o stato di CONFIRM_DEALLOCATE

    Se la chiamata viene eseguita in CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE stato, sono possibili i codici restituiti seguenti:

  • CM_OK (codice restituito primario; la chiamata è stata eseguita correttamente).

  • CM_PRODUCT_SPECIFIC_ERROR

  • CM_RESOURCE_FAILURE_NO_RETRY

  • CM_RESOURCE_FAILURE_RETRY

    Per una spiegazione di questi codici restituiti, vedere Codici restituiti comuni CPI-C.

    Altri stati

    L'emissione di Send_Error con la conversazione nello stato RESET o INITIALIZE non è valida. Sono possibili i codici restituiti seguenti:

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

    CM_PROGRAM_STATE_CHECK
    Codice restituito primario; lo stato della conversazione non è SEND, RECEIVE, CONFIRM, CONFIRM_SEND, CONFIRM_DEALLOCATE o SEND_PENDING.

    Modifiche dello stato

    La conversazione può trovarsi in qualsiasi stato ad eccezione di INITIALIZE o RESET.

    Le modifiche dello stato, riepilogate nella tabella seguente, si basano sul valore del parametro return_code .

return_code Nuovo stato
CM_OK SEND
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_RESOURCE_FAILURE_RETRY RESET
CM_RESOURCE_FAILURE_NO_RETRY RESET
CM_DEALLOCATED_ABEND RESET
CM_DEALLOCATED_ABEND_PROG RESET
CM_DEALLOCATED_ABEND_SVC RESET
CM_DEALLOCATED_ABEND_TIMER RESET
CM_DEALLOCATED_NORMAL RESET
CM_PROGRAM_ERROR_PURGING RECEIVE
CM_SVC_ERROR_PURGING RECEIVE
Tutti gli altri Nessuna modifica

Al termine dell'esecuzione di questa chiamata, la conversazione è in stato SEND per il programma locale e nello stato RECEIVE per il programma partner.

In una conversazione di base, il programma locale può usare Set_Log_Data per specificare che i dati del log degli errori devono essere inviati al lu partner e aggiunti al log degli errori locale. Se la caratteristica della lunghezza dei dati del log delle conversazioni è maggiore di zero, l'lu formatta i dati e li archivia nel buffer di invio.

Al termine Send_Error , la lunghezza dei dati del log è impostata su zero e i dati di log su Null.

Se la conversazione è in stato RECEIVE quando il programma genera Send_Error, i dati in ingresso vengono eliminati da CPI-C. Questi dati includono:

  • Dati inviati da Send_Data.

  • Richieste di conferma.

  • La deallocazione richiede se il tipo di deallocazione delle conversazioni è impostato su CM_DEALLOCATE_CONFIRM o su CM_DEALLOCATE_SYNC_LEVEL con il livello di sincronizzazione impostato su CM_CONFIRM.

    CPI-C non consente di acquistare un indicatore request-to-send in ingresso.

    Se la conversazione è in SEND_PENDING stato, il programma locale può emettere Set_Error_Direction per specificare se l'errore segnalato è dovuto ai dati ricevuti o dall'elaborazione del programma locale dopo aver ricevuto correttamente i dati.

Commenti

Il programma locale può usare Send_Error per scopi quali informare il programma partner di un errore rilevato nei dati ricevuti, rifiutare una richiesta di conferma o troncare un record logico incompleto inviato.

Send_Error scarica il buffer di invio delle unità di archiviazione locali e invia al programma partner il contenuto del buffer di invio seguito dalla notifica di errore.

La notifica di errore viene inviata al partner come uno dei valori di return_code seguenti:

  • CM_PROGRAM_ERROR_TRUNC

  • CM_PROGRAM_ERROR_NO_TRUNC

  • CM_PROGRAM_ERROR_PURGING