L'intestazione MQRFH2 contiene informazioni sulla struttura di un messaggio, ed i clienti previsti, per abilitare un broker dei messaggi ad elaborare il messaggio e consegnarlo o pubblicarlo per tali clienti.
Il valore 'MQRFH2 ' deve essere inserito nel campo Formato dell'intestazione precedente (di solito MQMD). La costante MQFMT_RF_HEADER_2 è definita con questo valore.
Relativamente al linguaggio di programmazione C, è anche definita la costante MQFMT_RF_HEADER_2_ARRAY. Questa costante ha lo stesso valore diMQFMT_RF_HEADER_2, ma è un array di caratteri, non una stringa.
La serie di caratteri e la codifica dei campi nell'intestazione MQRFH2 sono come riportato di seguito:
Alcune serie di caratteri hanno una rappresentazione che dipende dalla codifica. Se NameValueCCSID definisce una di queste serie di caratteri, NameValueData deve essere nella stessa codifica degli altri campi nell'intestazione MQRFH2.
L'intestazione MQRFH2 contiene i seguenti campi:
Nome campo | Descrizione | Dettagli |
---|---|---|
StrucId | Identificativo della struttura | Il valore deve essere MQRFH_STRUC_ID, che è l'identificativo per la struttura dell'intestazione di formattazione e regole. Relativamente al linguaggio di programmazione C, è anche definita la costante MQRFH_STRUC_ID_ARRAY; tale costante ha lo stesso valore di MQRFH_STRUC_ID, ma è un array di caratteri, non una stringa. |
Version | Numero di versione della struttura | Il valore deve essere MQRFH_VERSION_2, che è la versione 2 della struttura dell'intestazione di formattazione e regole. |
Struclength | Lunghezza totale di MQRFH2 (incluso NameValueData) | Il valore iniziale di questo campo è MQRFH_STRUC_LENGTH_FIXED_2, che è la lunghezza della parte fissa della struttura di intestazione MQRFH2. Questa è la lunghezza in byte della struttura di intestazione MQRFH2, inclusi gli eventuali campiNameValueLength e NameValueData alla fine della struttura. Alla fine della struttura potrebbero essere presenti più di una coppia di questi campi, nella sequenza: lunghezza1, dati1, lunghezza2, dati2, ....... La lunghezza di eventuali dati utente che seguono l'ultimo campoNameValueData alla fine della struttura non è inclusa in StrucLength. Nota: Se Struclength non è un multiplo di quattro,
potrebbero verificarsi dei problemi con la conversione dei dati utente in alcuni ambienti del
sistema operativo.
|
Encoding | Codifica numerica dei dati che seguono NameValueData | Il valore iniziale di questo campo è MQENC_NATIVE. Questo campo specifica come sono rappresentati i valori numerici in qualsiasi dato che segue l'ultimo campoNameValueData. Ciò è valido per i dati interi binari, i dati interi decimali compressi e i dati a virgola mobile. |
CodedCharSetId | Identificativo della serie di caratteri dei dati che seguono NameValueData | Il valore iniziale di questo campo è MQCCSI_INHERIT, che significa che l'identificativo della serie di caratteri è lo stesso della struttura corrente. Questo campo identifica la serie di caratteri codificata per eventuali stringhe di caratteri nei dati che seguono l'ultimo campo NameValueData. |
Format | Nome del formato dei dati che seguono NameValueData | Il valore iniziale di questo campo è MQFMT_NONE. Questo campo specifica il nome del formato di eventuali dati che seguono l'ultimo campo NameValueData. Il nome deve essere riempito con spazi fino alla fine del campo. Nota: Non utilizzare un carattere nullo per terminare il nome prima della
fine del campo; il gestore code non cambia il carattere nullo con un carattere vuoto o qualsiasi altro carattere che segue il carattere nullo, nell'intestazione MQRFH2.
Nota: Non specificare un nome contenente all'interno o all'inizio caratteri vuoti.
|
Flags | Indicatori | Il valore iniziale di questo campo è MQRFH_NONE, che significa che non sono presenti indicatori. |
NameValueCCSID | Identificativo della serie di caratteri di NameValueData | Il valore iniziale di questo campo è 1208, che significa che è utilizzata la serie di caratteri codificata UTF-8. Questo campo identifica la serie di caratteri codificata per i dati nel campo NameValueData. Differisce dalla serie di caratteri per altre stringhe di caratteri nella struttura di intestazione MQRFH2 e potrebbe essere diversa dalla serie di caratteri per eventuali dati dei caratteri che seguono l'ultimo campo NameValueData. NameValueCCSID deve avere uno dei seguenti valori: 1200: UCS-2 (serie non determinata) 1208: UTF-8 13488: UCS-2 2.0 17584: una serie secondaria UCS-2 2.1 (include il simbolo dell'euro €) Per la serie di caratteri UCS-2, la codifica (ordine di byte) del campo NameValueData deve essere la stessa degli altri campi nella struttura di intestazione MQRFH2. Nota: Non sono supportati i caratteri da X'D800' a X'DFFF'.
|
I due seguenti campi sono facoltativi, ma se presenti devono presentarsi come coppia. Possono essere ripetuti come coppia il numero di volte richiesto. Se questi campi si presentano più di una volta, devono essere nella sequenza ..... lunghezza1, dati1, lunghezza2, dati2, ....... |
||
NameValueLength | Lunghezza di NameValueData | Questo campo specifica la lunghezza, in byte, del campo NameValueData che segue questo campo. Nota: Se NameValueLength non è un
multiplo di quattro, potrebbe riscontrarsi un problema con la conversione dei dati
che seguono il campo NameValueData.
|
NameValueData | Questa è una stringa di caratteri a lunghezza variabile che contiene i dati codificati utilizzando una struttura tipo XML | La lunghezza, in byte, di questa stringa è data dal campo NameValueLength che precede questo campo NameValueData. Per evitare il problema descritto nella nota allegata alla descrizione del campo NameValueLength, estendere questo campo con spazi cosicché la relativa lunghezza è un multiplo di quattro oppure terminare il campo con un carattere nullo. |
typedef struct tagMQRFH2 { MQCHAR4 StrucId; /* Identificativo struttura */ MQLONG Version; /* Numero versione struttura */ MQLONG StrucLength; /* Lunghezza totale di MQRFH2 incluso NameValueData */ MQLONG Encoding; /* Codifica numerica dei dati che seguono NameValueData */ MQLONG CodedCharSetId; /* Identificativo della serie di caratteri dei dati che seguono NameValueData */ MQCHAR8 Format; /* Nome del formato dei dati che seguono NameValueData */ MQLONG Flags; /* Indicatori */ MQLONG NameValueCCSID; /* ID serie di caratteri di NameValueData */ } MQRFH2;