MQDISC - Disconnetti gestore code
La chiamata MQDISC interrompe la connessione tra il gestore code e il programma applicativo ed è l'inverso della chiamata MQCONN o MQCONNX.
- Su z/OS®, tutte le applicazioni che utilizzano il consumo asincrono dei messaggi, la gestione degli eventi o il callback, il thread di controllo principale deve emettere una chiamata MQDISC prima di terminare. Per ulteriori dettagli, consultare Utilizzo asincrono dei messaggi IBM® MQ .
- Su z/OS, le applicazioni CICS® non devono emettere questa chiamata per disconnettersi dal gestore code.Se un'applicazione CICS effettua questa chiamata, non ha alcun effetto a meno che non sia stata effettuata una chiamata MQCONNX precedente, specificando una delle seguenti opzioni:
- MQCNO_SERIALIZE_CONN_TAG_Q_MGR
- MQCNO_SERIALIZE_CONN_TAG_QSG
- MQCNO_RESTRICT_CONN_TAG_Q_MGR o
- MQCNO_RESTRICT_CONN_TAG_QSG
Sintassi
MQDISC " (Hconn, CompCode, Reason)
Parametri
- Hconn
- Tipo: MQHCONN - input/output
Questo handle rappresenta la connessione al gestore code. Il valore di
Hconnè stato restituito da una chiamata MQCONN o MQCONNX precedente.Su z/OS per applicazioni CICS è possibile omettere la chiamata MQCONN e specificare il valore seguente perHconn:- DEF_MQH_HCONN
- Handle di connessione predefinito.
Una volta completata correttamente la chiamata, il gestore code impostaHconnsu un valore che non è un handle valido per l'ambiente. Questo valore è:- MQH_UNUSABLE_HCONN
- Handle di connessione inutilizzabile.
Su z/OS,
Hconnè impostato su un valore non definito. - CompCode
- Tipo: MQLONG - outputIl codice di completamento; è uno dei seguenti codici:
- MQCC_OK
- Completamento con esito positivo.
- AVVERTENZA MQCC
- Avvertenza (completamento parziale).
- MQCC_NON RIUSCITO
- Chiamata fallita.
- Motivo
- Tipo: MQLONG - outputSe
CompCodeè MQCC_OK:- MQRC_NONE
- (0, X'000 ') Nessun motivo per segnalare.
SeCompCodeè MQCC_WARNING:- MQRC_BACK_OUT
- (2003, X'7D3') Unità di lavoro ritirata.
- MQRC_CONN_TAG_NOT_RELEASED
- (2344, X' 928 ') Tag di connessione non rilasciata.
- MQRC_OUTCOME_PENDING
- (2124, X'84C') Il risultato dell'operazione di commit è in attesa.
SeCompCodeè MQCC_FAILED:- ERRORE CARICAMENTO MQRC_ADAPTER_DISC
- (2138, X'85A') Impossibile caricare il modulo di disconnessione dell'adattatore.
- MQRC_ADAPTER_NON_DISPONIBILE
- (2204, X'89C') Adattatore non disponibile.
- MQRC_ADAPTER_SERV_LOAD_ERROR
- (2130, X'852 ') Impossibile caricare il modulo di servizio adattatore.
- ERRORE USCITA MQRC_API
- (2374, X' 946 ') Uscita API non riuscita.
- MQRC_API_EXIT_INIT_ERROR
- (2375, X' 947 ') Inizializzazione dell'uscita API non riuscita.
- ERRORE USCITA API MQRC
- (2376, X' 948 ') Terminazione uscita API non riuscita.
- MQRC_ASID_MISMATCH
- (2157, X'86D') Gli ASID primari e domestici sono diversi.
- MQRC_CALL_IN_PROVERDE
- (2219, X'8AB') Chiamata MQI inserita prima del completamento della chiamata precedente.
- MQRC_CONNECTION_BROKEN
- (2009, X'7D9') Connessione al gestore di code persa.
- MQRC_CONNECTION_STOPPING
- (2203, X'89B') Chiusura della connessione.
- ERRORE MQRC_HCONN
- (2018, X'7E2') Maniglia di connessione non valida.
- MQRC_OUTCOME_MIXED
- (2123, X'84B') Il risultato dell'operazione di commit o back-out è misto.
- ERRORE MQRC_PAGESET_
- (2193, X'891 ') Errore di accesso al dataset della serie di pagine.
- ERRORE MQRC_Q_MGR_NAME_
- (2058, X'80A') Nome del gestore della coda non valido o non conosciuto.
- MQRC_Q_MGR_NOT_AVAILABLE
- (2059, X'80B') Il gestore della coda non è disponibile per la connessione.
- MQRC_Q_MGR_STOPPING
- (2162, X'872 ') Chiusura del gestore code.
- PROBLEMA_RISORSA_MQRC_
- (2102, X'836 ') Risorse di sistema insufficienti.
- MQRC_STORAGE_NON_DISPONIBILE
- (2071, X'817 ') Memoria disponibile insufficiente.
- ERRORE MQRC_UNEXPECTED_
- (2195, X'893 ') Si è verificato un errore non previsto.
Per informazioni dettagliate su questi codici, vedere Messaggi e codici motivo.
Note d'utilizzo
- Se viene emessa una chiamata MQDISC quando la connessione ha ancora oggetti aperti sotto quella connessione, il gestore code chiude tali oggetti, con le opzioni di chiusura impostate su MQCO_NONE.
- Se l'applicazione termina con modifiche di cui non è stato eseguito il commit in un'unità di lavoro, la disposizione di tali modifiche dipende dal modo in cui termina l'applicazione:
- Se l'applicazione emette la chiamata MQDISC prima di terminare:
- Per un'unità di lavoro coordinata dal gestore code, il gestore code emette la chiamata MQCMIT per conto dell'applicazione. Se possibile, viene eseguito il commit dell'unità di lavoro e, in caso contrario, viene eseguito il backout.
- Per un'unità di lavoro coordinata esternamente, non vi è alcuna variazione nello stato dell'unità di lavoro; tuttavia, il gestore code generalmente indica che l'unità di lavoro deve essere sottoposta a commit quando richiesto dal coordinatore dell'unità di lavoro.
Su z/OS, CICS, IMS (diversi dai programmi DL/1 batch) e le applicazioni RRS sono simili.
- Se l'applicazione termina normalmente ma senza emettere la chiamata MQDISC, l'azione intrapresa dipende dall'ambiente:
- Su z/OS, tranne che per le applicazioni MQ Java o MQ JMS , si verificano le azioni descritte nella nota 2a .
- In tutti gli altri casi, si verificano le azioni descritte nella nota 2c .
- Se l'applicazione termina in modo anomalo senza emettere la chiamata MQDISC, viene eseguito il backout dell'unità di lavoro.
- Se l'applicazione emette la chiamata MQDISC prima di terminare:
- In z/OS, si applicano i punti seguenti:
- Le applicazioni CICS non devono necessariamente emettere la chiamata MQDISC per disconnettersi dal gestore code, poiché il sistema CICS stesso si connette al gestore code e la chiamata MQDISC non ha alcun effetto su questa connessione.
- CICS, IMS (diversi dai programmi batch DL/1 ) e le applicazioni RRS utilizzano unità di lavoro coordinate da un coordinatore dell'unità di lavoro esterno. Di conseguenza, la chiamata MQDISC non influisce sullo stato dell'unità di lavoro (se presente) che esiste quando viene emessa la chiamata.
Tuttavia, la chiamata MQDISC indica la fine dell'utilizzo del tag di connessione
ConnTagassociato alla connessione da una precedente chiamata MQCONNX emessa dall'applicazione. Se esiste un'unità di lavoro attiva che fa riferimento alla tag di connessione quando viene emessa la chiamata MQDISC, la chiamata viene completata con il codice di completamento MQCC_WARNING e il codice di errore MQRC_CONN_TAG_NOT_RELEASED. La tag di collegamento non diventa disponibile per il riutilizzo fino a quando il coordinatore dell'unità di lavoro esterna non ha risolto l'unità di lavoro.
Richiamo C
MQDISC (&Hconn, &CompCode, &Reason);
MQHCONN Hconn; /* Connection handle */
MQLONG CompCode; /* Completion code */
MQLONG Reason; /* Reason code qualifying CompCode */
Richiamo COBOL
CALL 'MQDISC' USING HCONN, COMPCODE, REASON.
** Connection handle
01 HCONN PIC S9(9) BINARY.
** Completion code
01 COMPCODE PIC S9(9) BINARY.
** Reason code qualifying COMPCODE
01 REASON PIC S9(9) BINARY.
Chiamata PL/I
call MQDISC (Hconn, CompCode, Reason);
dcl Hconn fixed bin(31); /* Connection handle */
dcl CompCode fixed bin(31); /* Completion code */
dcl Reason fixed bin(31); /* Reason code qualifying CompCode */
Richiamo assembler System/390
CALL MQDISC,(HCONN,COMPCODE,REASON)
HCONN DS F Connection handle
COMPCODE DS F Completion code
REASON DS F Reason code qualifying COMPCODE
Richiamo Visual Basic
MQDISC Hconn, CompCode, Reason
Dim Hconn As Long 'Connection handle'
Dim CompCode As Long 'Completion code'
Dim Reason As Long 'Reason code qualifying CompCode'