Deallocate (CPI-C)
La chiamata Deallocate (nome funzione cmdeal) dealloca una conversazione tra due programmi.
Sintassi
CM_ENTRY Deallocate(
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; la conversazione viene deallocata.
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_PROGRAM_PARAMETER_CHECK
Codice restituito primario; il valore specificato da conversation_ID non è valido.
CM_PROGRAM_STATE_CHECK
Codice restituito primario; Gli errori di stato seguenti possono verificarsi quando il tipo di deallocazione indica una deallocazione normale (CM_DEALLOCATE_SYNC_LEVEL, CM_DEALLOCATE_FLUSH, CM_DEALLOCATE_CONFIRM):
La conversazione non è in stato SEND o SEND_PENDING.
Per una conversazione di base, la conversazione è in stato SEND, ma il programma non ha completato l'invio di un record logico.
I codici restituiti seguenti possono essere restituiti quando il deallocate_type è impostato su CM_DEALLOCATE_CONFIRM o su CM_DEALLOCATE_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 (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 parametro di tipo impostato su CM_DEALLOCATE_ABEND o l'lu remoto lo ha fatto a causa di una condizione di fine 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.Modifiche dello stato
A seconda del valore del parametro di tipo deallocate delle conversazioni (impostato da Set_Deallocate_Type), la conversazione può trovarsi in uno degli stati indicati nella tabella seguente quando il programma rilascia Deallocate:
Tipo di deallocazione | Stato consentito |
---|---|
CM_DEALLOCATE_FLUSH | SEND o SEND_PENDING |
CM_DEALLOCATE_CONFIRM | SEND o SEND_PENDING |
CM_DEALLOCATE_SYNC_LEVEL | SEND o SEND_PENDING |
CM_DEALLOCATE_ABEND | Qualsiasi ad eccezione di RESET |
Le modifiche dello stato, riepilogate nella tabella seguente, si basano sul valore del parametro return_code .
return_code | Nuovo stato |
---|---|
CM_OK | RESET |
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_RESOURCE_FAILURE_NO_RETRY | RESET |
CM_RESOURCE_FAILURE_RETRY | RESET |
CM_DEALLOCATED_ABEND | RESET |
CM_DEALLOCATED_ABEND_SVC | RESET |
CM_DEALLOCATED_ABEND_TIMER | RESET |
Tutti gli altri | Nessuna modifica |
Commenti
Prima di deallocare la conversazione, questa chiamata esegue l'equivalente della chiamata Flush o Confirmed , a seconda del livello di sincronizzazione della conversazione corrente e del tipo di deallocazione. Il tipo di deallocazione viene impostato da Set_Deallocate_Type.
Il programma partner riceve la notifica di deallocazione tramite uno dei parametri seguenti:
status_received è CM_CONFIRM_DEALLOC_RECEIVED
return_code è CM_DEALLOCATED_NORMAL
return_code è CM_DEALLOCATED_ABEND
Dopo l'esecuzione della chiamata, il conversation_ID non è più valido.
Per una conversazione di base, se il tipo di deallocazione delle conversazioni è impostato su CM_DEALLOCATE_ABEND e la lunghezza dei dati del log è maggiore di zero, il lu locale scrive i dati di log (specificati da Set_Log_Data) nel log degli errori locale e nel lu partner.
Dopo l'esecuzione della deallocazione , la lunghezza dei dati del log è impostata su zero e i dati del log sono impostati su Null.