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
    , nel qual caso tutti gli handle di oggetto attualmente aperti vengono chiusi.

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 per Hconn :
DEF_MQH_HCONN
Handle di connessione predefinito.
Una volta completata correttamente la chiamata, il gestore code imposta Hconn su 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 - output
Il 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 - output
Se CompCode è MQCC_OK:
MQRC_NONE
(0, X'000 ') Nessun motivo per segnalare.
Se CompCode è 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.
Se CompCode è 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

  1. 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.
  2. 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:
    1. 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.

    2. 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 .
      A causa delle differenze tra gli ambienti, assicurarsi che le applicazioni che si desidera trasferire eseguano il commit o il backout dell'unità di lavoro prima che terminino.
    3. Se l'applicazione termina in modo anomalo senza emettere la chiamata MQDISC, viene eseguito il backout dell'unità di lavoro.
  3. 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 ConnTag associato 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.

Nota: in CICS, MQOP_START non è supportato. Utilizzare invece la chiamata alla funzione MQOP_START_WAIT.

Richiamo C

MQDISC (&Hconn, &CompCode, &Reason);
Dichiarare i parametri come segue:
MQHCONN  Hconn;     /* Connection handle */
MQLONG   CompCode;  /* Completion code */
MQLONG   Reason;    /* Reason code qualifying CompCode */

Richiamo COBOL

CALL 'MQDISC' USING HCONN, COMPCODE, REASON.
Dichiarare i parametri come segue:
**   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);
Dichiarare i parametri come segue:
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)
Dichiarare i parametri come segue:
HCONN     DS  F  Connection handle
COMPCODE  DS  F  Completion code
REASON    DS  F  Reason code qualifying COMPCODE

Richiamo Visual Basic

MQDISC Hconn, CompCode, Reason
Dichiarare i parametri come segue:
Dim Hconn    As Long 'Connection handle'
Dim CompCode As Long 'Completion code'
Dim Reason   As Long 'Reason code qualifying CompCode'