555
MQSeries ® para AS/400 ® Consulta de programación de aplicaciones (ILE RPG) Versión 5 Release 1 SC10-3412-00 IBM

amqwak00

  • Upload
    sonibox

  • View
    87

  • Download
    0

Embed Size (px)

Citation preview

Page 1: amqwak00

MQSeries® para AS/400®

Consulta de programación de aplicaciones(ILE RPG)Versión 5 Release 1

SC10-3412-00

IBM

Page 2: amqwak00
Page 3: amqwak00

MQSeries® para AS/400®

Consulta de programación de aplicaciones(ILE RPG)Versión 5 Release 1

SC10-3412-00

IBM

Page 4: amqwak00

NotaAntes de utilizar esta información y el producto al que da soporte, lea sin falta la información general del “Apéndice G.Avisos” en la página 509.

Primera edición (marzo de 2000)

Esta edición es aplicable a MQSeries para AS/400 Versión 5 Release 1 y a todos los releases y modificacionesulteriores hasta que se indique lo contrario en nuevas ediciones.

© Copyright International Business Machines Corporation 1994, 2000. Reservados todos los derechos.

Page 5: amqwak00

Contenido

Tablas . . . . . . . . . . . . . . . ix

Acerca de este manual . . . . . . . . xiDestinatarios del manual . . . . . . . . . . xiConocimientos necesarios para comprender estemanual . . . . . . . . . . . . . . . . xiCómo utilizar este manual . . . . . . . . . xii

Presentación del texto en este manual . . . . xiiTérminos utilizados en este manual . . . . . xii

Parte 1. Descripciones de tipos dedatos . . . . . . . . . . . . . . . 1

Capítulo 1. Tipos de datos elementales 3Convenios utilizados en las descripciones de los tiposde datos . . . . . . . . . . . . . . . . 3Tipos de datos elementales . . . . . . . . . 3

MQBYTE - Byte . . . . . . . . . . . . 3MQBYTEn – Serie de n bytes . . . . . . . . 4MQCHAR – Carácter . . . . . . . . . . 4MQCHARn – Serie de n caracteres . . . . . . 4MQHCONN – Asa de conexión . . . . . . . 5MQHOBJ – Asa de objeto . . . . . . . . . 5MQLONG – Entero largo . . . . . . . . . 5Tipos de datos elementales . . . . . . . . 5

Capítulo 2. Tipos de datos de estructura– Consideraciones sobre programación . 7Convenios utilizados en las descripciones de los tiposde datos . . . . . . . . . . . . . . . . 7Consideraciones sobre el lenguaje . . . . . . . 8

Archivos COPY . . . . . . . . . . . . 8Llamadas . . . . . . . . . . . . . . 9Estructuras . . . . . . . . . . . . . 10Convenios de notación . . . . . . . . . 10Procedimientos MQI . . . . . . . . . . 10Consideraciones sobre las hebras . . . . . . 11Parámetros de llamada MQI . . . . . . . . 11Constantes con nombre . . . . . . . . . 11Control de compromiso . . . . . . . . . 11Codificación de las llamadas de enlace . . . . 12Codificación de las llamadas dinámicas . . . . 13

Capítulo 3. MQBO - Opciones deempezar . . . . . . . . . . . . . . 15Visión general . . . . . . . . . . . . . 15Campos . . . . . . . . . . . . . . . 15Valores iniciales y declaración RPG . . . . . . 16

Declaración RPG . . . . . . . . . . . 16

Capítulo 4. MQCIH - Cabecera depuente CICS . . . . . . . . . . . . 17Visión general . . . . . . . . . . . . . 18

Campos . . . . . . . . . . . . . . . 19Valores iniciales y declaración RPG . . . . . . 28

Declaración RPG . . . . . . . . . . . 29

Capítulo 5. MQCNO - Opciones deconectar . . . . . . . . . . . . . . 31Visión general . . . . . . . . . . . . . 31Campos . . . . . . . . . . . . . . . 31Valores iniciales y declaración RPG . . . . . . 35

Declaración RPG . . . . . . . . . . . 35

Capítulo 6. MQDH - Cabecera dedistribución . . . . . . . . . . . . 37Visión general . . . . . . . . . . . . . 37Campos . . . . . . . . . . . . . . . 38Valores iniciales y declaración RPG . . . . . . 41

Declaración RPG . . . . . . . . . . . 41

Capítulo 7. MQDLH - Cabecera demensaje no entregado . . . . . . . . 43Visión general . . . . . . . . . . . . . 43Campos . . . . . . . . . . . . . . . 45Valores iniciales y declaración RPG . . . . . . 49

Declaración RPG . . . . . . . . . . . 49

Capítulo 8. MQGMO - Opciones deobtener mensaje . . . . . . . . . . 51Visión general . . . . . . . . . . . . . 51Campos . . . . . . . . . . . . . . . 52Valores iniciales y declaración RPG . . . . . . 76

Declaración RPG . . . . . . . . . . . 76

Capítulo 9. MQIIH - Cabecera de puenteIMS . . . . . . . . . . . . . . . . 79Visión general . . . . . . . . . . . . . 79Campos . . . . . . . . . . . . . . . 80Valores iniciales y declaración RPG . . . . . . 83

Declaración RPG . . . . . . . . . . . 84

Capítulo 10. MQMD - Descriptor demensaje . . . . . . . . . . . . . . 85Visión general . . . . . . . . . . . . . 86Campos . . . . . . . . . . . . . . . 87Valores iniciales y declaración RPG . . . . . . 134

Declaración RPG . . . . . . . . . . . 135

Capítulo 11. MQMDE - Extensión dedescriptor de mensaje . . . . . . . 137Visión general . . . . . . . . . . . . . 137Campos . . . . . . . . . . . . . . . 140Valores iniciales y declaración de RPG . . . . . 141

Declaración de RPG . . . . . . . . . . 142

© Copyright IBM Corp. 1994, 2000 iii

Page 6: amqwak00

Capítulo 12. MQOD - Descriptor deobjeto . . . . . . . . . . . . . . 143Visión general . . . . . . . . . . . . . 143Campos . . . . . . . . . . . . . . . 144Valores iniciales y declaración de RPG . . . . . 151

Declaración de RPG . . . . . . . . . . 152

Capítulo 13. MQOR - Registro deobjeto . . . . . . . . . . . . . . 153Visión general . . . . . . . . . . . . . 153Campos . . . . . . . . . . . . . . . 153Valores iniciales y declaración de RPG . . . . . 153

Declaración de RPG . . . . . . . . . . 154

Capítulo 14. MQPMO - Opciones deponer mensaje . . . . . . . . . . . 155Visión general . . . . . . . . . . . . . 155Campos . . . . . . . . . . . . . . . 156Valores iniciales y declaración de RPG . . . . . 170

Declaración de RPG . . . . . . . . . . 171

Capítulo 15. MQPMR - Registro deponer mensaje . . . . . . . . . . . 173Visión general . . . . . . . . . . . . . 173Campos . . . . . . . . . . . . . . . 173Valores iniciales y declaración de RPG . . . . . 175

Declaración de RPG . . . . . . . . . . 175

Capítulo 16. MQRMH - Cabecera demensaje de referencia . . . . . . . 177Visión general . . . . . . . . . . . . . 177Campos . . . . . . . . . . . . . . . 178Valores iniciales y declaración de RPG . . . . . 184

Declaración de RPG . . . . . . . . . . 185

Capítulo 17. MQRR - Registro derespuesta . . . . . . . . . . . . . 187Visión general . . . . . . . . . . . . . 187Campos . . . . . . . . . . . . . . . 187Valores iniciales y declaración de RPG . . . . . 188

Declaración de RPG . . . . . . . . . . 188

Capítulo 18. MQTM - Mensajedesencadenante . . . . . . . . . . 189Visión general . . . . . . . . . . . . . 189Campos . . . . . . . . . . . . . . . 190Valores iniciales y declaración de RPG . . . . . 193

Declaración de RPG . . . . . . . . . . 193

Capítulo 19. MQTMC2 - Mensajedesencadenante (formato decaracteres) . . . . . . . . . . . . 195Visión general . . . . . . . . . . . . . 195Campos . . . . . . . . . . . . . . . 196Valores iniciales y declaración de RPG . . . . . 197

Declaración de RPG . . . . . . . . . . 197

Capítulo 20. MQWIH - Cabecera deinformación de trabajo . . . . . . . 199Visión general . . . . . . . . . . . . . 199Campos . . . . . . . . . . . . . . . 199Valores iniciales y declaración de RPG . . . . . 201

Declaración de RPG . . . . . . . . . . 201

Capítulo 21. MQXQH - Cabecera decola de transmisión . . . . . . . . 203Visión general . . . . . . . . . . . . . 203Campos . . . . . . . . . . . . . . . 206Valores iniciales y declaración de RPG . . . . . 207

Declaración de RPG . . . . . . . . . . 207

Parte 2. Llamadas de funciones 209

Capítulo 22. Descripciones de lasllamadas . . . . . . . . . . . . . 211Convenios utilizados en las descripciones de lasllamadas . . . . . . . . . . . . . . . 211

Capítulo 23. MQBACK - Restituircambios . . . . . . . . . . . . . 213Sintaxis . . . . . . . . . . . . . . . 213Parámetros . . . . . . . . . . . . . . 213Notas de utilización . . . . . . . . . . . 214Invocación RPG . . . . . . . . . . . . 215

Capítulo 24. MQBEGIN - Empezarunidad de trabajo . . . . . . . . . 217Sintaxis . . . . . . . . . . . . . . . 217Parámetros . . . . . . . . . . . . . . 217Notas de utilización . . . . . . . . . . . 218Invocación RPG (ILE) . . . . . . . . . . 220

Capítulo 25. MQCLOSE - Cerrar objeto 221Sintaxis . . . . . . . . . . . . . . . 221Parámetros . . . . . . . . . . . . . . 221Notas de utilización . . . . . . . . . . . 224Invocación RPG . . . . . . . . . . . . 226

Capítulo 26. MQCMIT - Comprometercambios . . . . . . . . . . . . . 227Sintaxis . . . . . . . . . . . . . . . 227Parámetros . . . . . . . . . . . . . . 227Notas de utilización . . . . . . . . . . . 228Invocación RPG . . . . . . . . . . . . 229

Capítulo 27. MQCONN - Conectargestor de colas . . . . . . . . . . 231Sintaxis . . . . . . . . . . . . . . . 231Parámetros . . . . . . . . . . . . . . 231Notas de utilización . . . . . . . . . . . 234Invocación RPG . . . . . . . . . . . . 235

Capítulo 28. MQCONNX - Conectargestor de colas (ampliado) . . . . . 237

iv Consulta de programación de aplicaciones (ILE RPG)

Page 7: amqwak00

Sintaxis . . . . . . . . . . . . . . . 237Parámetros . . . . . . . . . . . . . . 237Invocación RPG . . . . . . . . . . . . 238

Capítulo 29. MQDISC - Desconectargestor de colas . . . . . . . . . . 239Sintaxis . . . . . . . . . . . . . . . 239Parámetros . . . . . . . . . . . . . . 239Notas de utilización . . . . . . . . . . . 240Invocación RPG . . . . . . . . . . . . 240

Capítulo 30. MQGET - Obtenermensaje . . . . . . . . . . . . . . 241Sintaxis . . . . . . . . . . . . . . . 241Parámetros . . . . . . . . . . . . . . 241Notas de utilización . . . . . . . . . . . 246Invocación RPG . . . . . . . . . . . . 250

Capítulo 31. MQINQ - Consultar losatributos de objeto . . . . . . . . . 251Sintaxis . . . . . . . . . . . . . . . 251Parámetros . . . . . . . . . . . . . . 251Notas de utilización . . . . . . . . . . . 259Invocación RPG . . . . . . . . . . . . 260

Capítulo 32. MQOPEN - Abrir objeto 261Sintaxis . . . . . . . . . . . . . . . 261Parámetros . . . . . . . . . . . . . . 261Notas de utilización . . . . . . . . . . . 270Invocación RPG . . . . . . . . . . . . 275

Capítulo 33. MQPUT - Poner mensaje 277Sintaxis . . . . . . . . . . . . . . . 277Parámetros . . . . . . . . . . . . . . 277Notas de utilización . . . . . . . . . . . 282Invocación RPG . . . . . . . . . . . . 286

Capítulo 34. MQPUT1 - Poner unmensaje . . . . . . . . . . . . . . 287Sintaxis . . . . . . . . . . . . . . . 287Parámetros . . . . . . . . . . . . . . 287Notas de utilización . . . . . . . . . . . 292Invocación RPG . . . . . . . . . . . . 293

Capítulo 35. MQSET - Estableceratributos de objeto . . . . . . . . . 295Sintaxis . . . . . . . . . . . . . . . 295Parámetros . . . . . . . . . . . . . . 295Notas de utilización . . . . . . . . . . . 298Invocación RPG . . . . . . . . . . . . 299

Parte 3. Atributos de objeto . . . . 301

Capítulo 36. Atributos de los objetosde MQSeries . . . . . . . . . . . . 303

Capítulo 37. Atributos de todas lascolas . . . . . . . . . . . . . . . 305

Capítulo 38. Atributos de colas localesy colas modelo . . . . . . . . . . . 311

Capítulo 39. Atributos de definicioneslocales de colas remotas . . . . . . 327

Capítulo 40. Atributos de colas alias 329

Capítulo 41. Atributos de las listas denombres . . . . . . . . . . . . . 331

Capítulo 42. Atributos de lasdefiniciones de proceso . . . . . . . 333

Capítulo 43. Atributos del gestor decolas . . . . . . . . . . . . . . . 337

Parte 4. Aplicaciones . . . . . . . 349

Capítulo 44. Creación de unaaplicación . . . . . . . . . . . . . 351Archivos de copia MQSeries . . . . . . . . 351Preparación de los programas para su ejecución 351Interfaces para el gestor de punto de sincronismoexterno de AS/400 . . . . . . . . . . . 352Puntos de sincronismo en las aplicaciones CICSpara AS/400. . . . . . . . . . . . . . 353

Capítulo 45. Programas de ejemplo 355Características explicadas en los programas deejemplo . . . . . . . . . . . . . . . 356Preparación y ejecución de los programas deejemplo . . . . . . . . . . . . . . . 357

Ejecución de los programas de ejemplo . . . . 357El programa de ejemplo de poner . . . . . . 357

Diseño del programa de ejemplo de poner . . 358El programa de ejemplo de examinar . . . . . 358

Diseño del programa de ejemplo de examinar 358El programa de ejemplo de obtener . . . . . . 359

Diseño del programa de ejemplo de obtener . . 359El programa de ejemplo de petición . . . . . . 360

Utilización del desencadenamiento con elejemplo de petición . . . . . . . . . . 360Diseño del programa de ejemplo de petición 361

El programa de ejemplo de eco . . . . . . . 363Diseño del programa de ejemplo de eco . . . 364

El programa de ejemplo de consultar . . . . . 364Diseño del programa de ejemplo de consultar 365

El programa de ejemplo de establecer . . . . . 366Diseño del programa de ejemplo de establecer 366

Los programas de ejemplo de desencadenamiento 367El supervisor de desencadenamiento de ejemploAMQ3TRG4 . . . . . . . . . . . . . 367

Contenido v

|||

Page 8: amqwak00

El servidor desencadenante de ejemploAMQ3SRV4 . . . . . . . . . . . . . 368Finalización de los programas de ejemplo dedesencadenamiento . . . . . . . . . . 368

Ejecución de los ejemplos utilizando colas remotas 369

Parte 5. Apéndices . . . . . . . . 371

Apéndice A. Códigos de retorno . . . 373Códigos de terminación . . . . . . . . . . 373Códigos de razón . . . . . . . . . . . . 373

Apéndice B. Constantes de MQSeries 443Lista de constantes . . . . . . . . . . . 443

LN* (Longitudes de campos de tipo serie decaracteres y de tipo byte) . . . . . . . . 443AC* (Símbolo de contabilidad) . . . . . . 444ATT* (Tipo de símbolo de contabilidad) . . . 444AT* (Tipo de aplicación) . . . . . . . . . 445BND* (Enlace) . . . . . . . . . . . . 445BO* (Opciones de empezar) . . . . . . . 445BO* (Identificador de estructura de opciones deempezar) . . . . . . . . . . . . . . 446BO* (Versión de opciones de empezar) . . . . 446CA* (Selector de atributo de tipo carácter) . . . 446AD* (Descriptor ADS de cabecera CICS) . . . 447CC* (Código de terminación) . . . . . . . 447CS* (Identificador de juego de caracterescodificado) . . . . . . . . . . . . . 447CT* (Tarea conversacional de cabecera CICS) 447FC* (Recurso de cabecera CICS) . . . . . . 447CF* (Nombre de función de cabecera CICS) . . 447WI* (Intervalo de espera de obtener de cabeceraCICS) . . . . . . . . . . . . . . . 448CI* (Identificador de correlación) . . . . . . 448MQ* (Identificador de llamada) . . . . . . 448CIF* (Distintivos de cabecera CICS) . . . . . 448CI* (Longitud de cabecera CICS) . . . . . . 448CI* (Identificador de estructura de cabeceraCICS) . . . . . . . . . . . . . . . 448CI* (Versión de cabecera CICS) . . . . . . 448LT* (Tipo de enlace de cabecera CICS) . . . . 449CMLV* (Nivel de mandato) . . . . . . . 449CN* (Opciones de conectar) . . . . . . . 449CN* (Identificador de estructura de opciones deconectar) . . . . . . . . . . . . . . 449CN* (Versión de opciones de conectar) . . . . 449CO* (Opciones de cerrar) . . . . . . . . 449OL* (Longitud de datos de salida de cabeceraCICS) . . . . . . . . . . . . . . . 450CRC* (Código de retorno de cabecera CICS) . . 450SC* (Código de inicio de transacción decabecera CICS) . . . . . . . . . . . . 450TE* (Estado de final de tarea de cabecera CICS) 450CU* (Control de unidad de trabajo de cabeceraCICS) . . . . . . . . . . . . . . . 450DCC* (Máscaras y factores de convertircaracteres) . . . . . . . . . . . . . 451DCC* (Opciones de convertir caracteres) . . . 451

DH* (Identificador de estructura de cabecera dedistribución). . . . . . . . . . . . . 451DH* (Versión de cabecera de distribución) . . . 451DHF* (Distintivos de cabecera de distribución) 451DL* (Soporte de lista de distribución) . . . . 451DL* (Identificador de estructura de cabecera demensaje no entregado) . . . . . . . . . 452DL* (Versión de cabecera de mensaje noentregado) . . . . . . . . . . . . . 452DX* (Identificador de estructura de parámetrode rutina de salida de conversión de datos) . . 452DX* (Versión de estructura de parámetro derutina de salida de conversión de datos) . . . 452EI* (Intervalo de caducidad) . . . . . . . 452EN* (Codificación). . . . . . . . . . . 452EN* (Máscaras de codificación) . . . . . . 452EN* (Codificación para enteros decimalesempaquetados) . . . . . . . . . . . . 453EN* (Codificación para números de comaflotante) . . . . . . . . . . . . . . 453EN* (Codificación para enteros binarios) . . . 453EV* (Notificación de sucesos) . . . . . . . 453FB* (Información de retorno) . . . . . . . 453FM* (Formato) . . . . . . . . . . . . 454GI* (Identificador de grupo) . . . . . . . 454GM* (Opciones de obtener mensaje) . . . . . 455GM* (Identificador de estructura de opciones deobtener mensaje) . . . . . . . . . . . 455GM* (Versión de opciones de obtener mensaje) 455GS* (Estado de grupo) . . . . . . . . . 455HC* (Asa de conexión) . . . . . . . . . 456HO* (Asa de objeto) . . . . . . . . . . 456IA* (Selector de atributo de tipo entero) . . . 456IAU* (Autenticador IMS) . . . . . . . . 457IAV* (Valor de atributo de tipo entero) . . . . 457ICM* (Modalidad de compromiso IMS). . . . 457II* (Distintivos de cabecera IMS) . . . . . . 457II* (Longitud de cabecera IMS) . . . . . . 458II* (Identificador de estructura de cabecera IMS) 458II* (Versión de cabecera IMS) . . . . . . . 458ISS* (Ámbito de seguridad IMS) . . . . . . 458ITI* (Identificador de instancia de transacciónIMS) . . . . . . . . . . . . . . . 458ITS* (Estado de transacción IMS) . . . . . . 458MD* (Identificador de estructura de descriptorde mensaje) . . . . . . . . . . . . . 458MD* (Versión de descriptor de mensaje) . . . 458ME* (Longitud de extensión de descriptor demensaje) . . . . . . . . . . . . . . 459ME* (Identificador de estructura de extensión dedescriptor de mensaje) . . . . . . . . . 459ME* (Versión de extensión de descriptor demensaje) . . . . . . . . . . . . . . 459MEF* (Distintivos de extensión de descriptor demensaje) . . . . . . . . . . . . . . 459MS* (Secuencia de entrega de mensajes) . . . 459MF* (Distintivos de mensaje) . . . . . . . 459MF* (Máscaras de distintivos de mensaje) . . . 460MI* (Identificador de mensaje). . . . . . . 460MO* (Opciones de emparejar) . . . . . . . 460MT* (Tipo de mensaje) . . . . . . . . . 460

vi Consulta de programación de aplicaciones (ILE RPG)

||

Page 9: amqwak00

MTK* (Símbolo de mensaje) . . . . . . . 460NC* (Cuenta de nombres) . . . . . . . . 460OD* (Longitud de descriptor de objeto) . . . 461OD* (Identificador de estructura de descriptorde objeto) . . . . . . . . . . . . . 461OD* (Versión de descriptor de objeto) . . . . 461OII* (Identificador de instancia de objeto) . . . 461OL* (Longitud original) . . . . . . . . . 461OO* (Opciones de abrir). . . . . . . . . 461OT* (Tipo de objeto) . . . . . . . . . . 462PE* (Permanencia). . . . . . . . . . . 462PL* (Plataforma) . . . . . . . . . . . 462PM* (Opciones de poner mensaje) . . . . . 462PM* (Longitud de estructura de opciones deponer mensaje) . . . . . . . . . . . . 463PM* (Identificador de estructura de opciones deponer mensaje) . . . . . . . . . . . . 463PM* (Versión de opciones de poner mensaje) 463PF* (Distintivos de campo de registro de ponermensaje) . . . . . . . . . . . . . . 463PR* (Prioridad) . . . . . . . . . . . . 463QA* (Inhibir obtener). . . . . . . . . . 463QA* (Inhibir poner) . . . . . . . . . . 463QA* (Memorización de restitución) . . . . . 464QA* (Compartibilidad de cola) . . . . . . 464QD* (Tipo de definición de cola) . . . . . . 464QSIE* (Sucesos de intervalo de servicio) . . . 464QT* (Tipo de cola) . . . . . . . . . . . 464RC* (Código de razón) . . . . . . . . . 464RL* (Longitud devuelta) . . . . . . . . . 468RM* (Identificador de estructura de cabecera demensaje de referencia) . . . . . . . . . 469RM* (Versión de cabecera de mensaje dereferencia) . . . . . . . . . . . . . 469RM* (Distintivos de cabecera de mensaje dereferencia) . . . . . . . . . . . . . 469RO* (Opciones de informe) . . . . . . . . 469RO* (Máscaras de opciones de informe) . . . 469SCO* (Ámbito de cola) . . . . . . . . . 470SEG* (Segmentación) . . . . . . . . . . 470SI* (Identificador de seguridad) . . . . . . 470SIT* (Tipo de identificador de seguridad) . . . 470SP* (Punto de sincronismo). . . . . . . . 470SS* (Estado de segmento) . . . . . . . . 470TC* (Control de desencadenamiento) . . . . 470TM* (Identificador de estructura de mensajedesencadenante) . . . . . . . . . . . 471TM* (Versión de mensaje desencadenante). . . 471TC* (Identificador de estructura de formato detipo carácter de mensaje desencadenante) . . . 471TC* (Versión de formato de tipo carácter demensaje desencadenante) . . . . . . . . 471TT* (Tipo de desencadenante) . . . . . . . 471US* (Utilización) . . . . . . . . . . . 471WI* (Intervalo de espera) . . . . . . . . 471WI* (Distintivos de cabecera de información decarga de trabajo) . . . . . . . . . . . 472WI* (Longitud de estructura de cabecera deinformación de carga de trabajo) . . . . . . 472WI* (Identificador de estructura de cabecera deinformación de carga de trabajo) . . . . . . 472

WI* (Versión de cabecera de información decarga de trabajo) . . . . . . . . . . . 472XR* (Respuesta de rutina de salida deconversión de datos) . . . . . . . . . . 472XQ* (Identificador de estructura de cabecera decola de transmisión) . . . . . . . . . . 472XQ* (Versión de cabecera de cola detransmisión) . . . . . . . . . . . . . 473

Apéndice C. Normas para validar lasopciones de la MQI . . . . . . . . . 475Llamada MQOPEN . . . . . . . . . . . 475Llamada MQPUT . . . . . . . . . . . . 475Llamada MQPUT1 . . . . . . . . . . . 476Llamada MQGET . . . . . . . . . . . . 476Llamada MQCLOSE . . . . . . . . . . . 476

Apéndice D. Codificaciones demáquina . . . . . . . . . . . . . 477Codificación de entero binario . . . . . . . . 477Codificación de entero decimal empaquetado. . . 478Codificación de coma flotante . . . . . . . . 478Construcción de codificaciones . . . . . . . 479Análisis de codificaciones . . . . . . . . . 479

Utilización de la aritmética . . . . . . . . 479Resumen de las codificaciones de arquitectura demáquina . . . . . . . . . . . . . . . 480

Apéndice E. Opciones de informe . . 481Estructura del campo de informe . . . . . . . 481Análisis del campo de informe . . . . . . . 482

Utilización de la aritmética . . . . . . . . 483Estructura del campo de distintivos de mensaje 483

Apéndice F. Conversión de datos . . . 485Proceso de conversión . . . . . . . . . . 485Convenios de proceso . . . . . . . . . . 487Conversión de los mensajes de informe. . . . . 491MQDXP – Parámetro de rutina de salida deconversión de datos . . . . . . . . . . . 493

Campos . . . . . . . . . . . . . . 493Declaración RPG (ILE) . . . . . . . . . 498

MQXCNVC - Convertir caracteres . . . . . . 499Sintaxis . . . . . . . . . . . . . . 499Parámetros . . . . . . . . . . . . . 499

Invocación RPG . . . . . . . . . . . . 504MQCONVX - Rutina de salida de conversión dedatos . . . . . . . . . . . . . . . . 504

Sintaxis . . . . . . . . . . . . . . 504Parámetros . . . . . . . . . . . . . 504Notas de utilización . . . . . . . . . . 506

Invocación RPG . . . . . . . . . . . . 508

Apéndice G. Avisos . . . . . . . . . 509Información de la interfaz de programación . . . 511Marcas registradas. . . . . . . . . . . . 511

Glosario de términos y abreviaturas 513

Contenido vii

||||

||

||||

|||||||||

|||

Page 10: amqwak00

Bibliografía . . . . . . . . . . . . 527Publicaciones de las distintas plataformas deMQSeries. . . . . . . . . . . . . . . 527Publicaciones específicas de cada plataformaMQSeries. . . . . . . . . . . . . . . 529Manuales en copia software . . . . . . . . 530

Formato BookManager . . . . . . . . . 530Formato HTML . . . . . . . . . . . 530Portable Document Format (PDF) . . . . . 530

Formato PostScript . . . . . . . . . . 530Formato de ayuda Windows . . . . . . . 530

Información de MQSeries disponible en Internet 531Publicaciones relacionadas . . . . . . . . . 531

Índice . . . . . . . . . . . . . . . 533

Envío de comentarios a IBM . . . . . 539

viii Consulta de programación de aplicaciones (ILE RPG)

Page 11: amqwak00

Tablas

1. Tipos de datos elementales . . . . . . . . 52. Archivos COPY de RPG. . . . . . . . . 83. Llamadas de servicio ILE RPG soportadas por

cada programa de servicio . . . . . . . 124. Campos de MQBO . . . . . . . . . . 155. Valores iniciales de campos de MQBO . . . 166. Campos de MQCIH. . . . . . . . . . 177. Contenido de los campos de información de

error de la estructura MQCIH . . . . . . 188. Valores iniciales de los campos de MQCIH 289. Campos de MQCNO . . . . . . . . . 31

10. Valores iniciales de campos de MQCNO 3511. Campos de MQDH . . . . . . . . . . 3712. Valores iniciales de los campos de MQDH 4113. Campos de MQDLH . . . . . . . . . 4314. Valores iniciales de campos de MQDLH 4915. Campos de MQGMO . . . . . . . . . 5116. Opciones MQGET relacionadas con los

mensajes de grupos y de segmentos demensajes lógicos . . . . . . . . . . . 64

17. Salida cuando la llamada MQGET oMQCLOSE no es coherente con la informaciónde grupo y de segmento . . . . . . . . 66

18. Valores iniciales de campos de MQGMO 7619. Campos de MQIIH . . . . . . . . . . 7920. Valores iniciales de los campos de MQIIH 8321. Campos de MQMD . . . . . . . . . . 8522. Valores iniciales de campos de MQMD 13423. Campos de MQMDE . . . . . . . . . 13724. Acción del gestor de colas cuando se

especifica MQMDE en MQPUT o MQPUT1 . 13825. Valores iniciales de los campos de MQMDE 14126. Campos de MQOD . . . . . . . . . 14327. Valores iniciales de campos de MQOD 15128. Campos de MQOR. . . . . . . . . . 15329. Valores iniciales de campos de MQOR 15330. Campos de MQPMO . . . . . . . . . 15531. Opciones de MQPUT relacionadas con los

mensajes de los grupos y los segmentos demensajes lógicos . . . . . . . . . . 160

32. Resultado cuando no existe coherencia entrela llamada MQPUT o MQCLOSE y lainformación de grupos y segmentos . . . . 162

33. Valores iniciales de campos de MQPMO 17034. Campos de MQPMR . . . . . . . . . 17335. Campos de MQRMH . . . . . . . . . 17736. Valores iniciales de campos de MQRMH 18437. Campos de MQRR . . . . . . . . . . 18738. Valores iniciales de campos de MQRR 18839. Campos de MQTM . . . . . . . . . 18940. Valores iniciales de campos de MQTM 19341. Campos de MQTMC2. . . . . . . . . 19542. Valores iniciales de campos de MQTMC2 19743. Campos de MQWIH . . . . . . . . . 19944. Valores iniciales de campos de MQWIH 20145. Campos de MQXQH . . . . . . . . . 20346. Valores iniciales de campos de MQXQH 20747. Efectos de las opciones MQCLOSE en

distintos tipos de objetos y colas . . . . . 22248. Opciones MQOPEN válidas para cada tipo de

cola . . . . . . . . . . . . . . . 26749. Atributos de todas las colas . . . . . . . 30550. Atributos de colas locales y modelo . . . . 31151. Atributos de definiciones locales de colas

remotas . . . . . . . . . . . . . 32752. Atributos de las listas de nombres . . . . 33153. Atributos de las definiciones de proceso 33354. Atributos del gestor de colas . . . . . . 33755. Nombres de los programas de ejemplo 35556. Programas de ejemplo que explican la

utilización de la MQI . . . . . . . . . 35657. Detalles del programa de ejemplo de

cliente/servidor. . . . . . . . . . . 36258. Resumen de codificaciones de arquitecturas

de máquina . . . . . . . . . . . . 48059. Campos de MQDXP . . . . . . . . . 493

© Copyright IBM Corp. 1994, 2000 ix

||

Page 12: amqwak00

x Consulta de programación de aplicaciones (ILE RPG)

Page 13: amqwak00

Acerca de este manual

MQSeries para AS/400 Versión 5 Release 1 forma parte del conjunto de productosIBM® MQSeries. Proporciona servicios de programación de aplicaciones en laplataforma AS/400 que permiten programar de un modo distinto. Esta estilo deprogramación permite codificar comunicaciones indirectas de programa aprograma utilizando colas de mensajes.

El presente manual:v Ofrece una descripción completa de la interfaz de programación MQSeries para

AS/400 en el lenguaje de programación RPG.v Contiene información acerca de cómo construir una aplicación ejecutable.v Contiene descripciones de programas de ejemplo.

Notas para los usuarios

1. En este manual se describe la interfaz de programación MQSeries paraAS/400 únicamente en el lenguaje de programación RPG–ILE. Si necesitainformación detallada acerca del lenguaje de programación RPG–OPM,debería consultar el manual MQSeries Consulta de programación deaplicaciones (RPG) V4R2.

2. Existen dos formas de utilizar la MQI desde dentro de un programa RPG:v Llamadas dinámicas a la interfaz de programa QMQM.v Llamadas de enlace estático a los procedimientos de MQI.

Utilizar llamadas de enlace suele ser el método preferido, especialmentecuando el programa efectúa llamadas repetidas a la MQI, pues requieremenos recursos.

La nueva funcionalidad solo está disponible mediante la interfaz deLlamada de enlace estático.

Para obtener información acerca de cómo diseñar y escribir aplicaciones queutilizan los servicios que proporciona MQSeries, consulte la publicación MQSeriesApplication Programming Guide.

Destinatarios del manualEl presente manual es para los diseñadores de aplicaciones que utilizan técnicas decolas de mensajes y para los programadores que tienen que implementar estosdiseños.

Conocimientos necesarios para comprender este manualPara escribir aplicaciones de colas de mensajes utilizando MQSeries para AS/400,debe saber cómo escribir programas en el lenguaje de programación RPG.

Para comprender este manual no es necesario haber escrito antes programas decolas de mensajes.

© Copyright IBM Corp. 1994, 2000 xi

|||||

|||

|||

|||

Page 14: amqwak00

Cómo utilizar este manualEste manual contiene información de consulta que, por ejemplo, le permiteaveriguar rápidamente cómo utilizar una llamada determinada o cómo corregiruna situación de error específica.

El manual está dividido en cuatro partes:

Parte 1. Descripciones de tipos de datosDescribe los tipos de datos que las llamadas MQI utilizan.

Parte 2. Llamadas de funcionesDescribe los parámetros y los códigos de retorno de las llamadas.

Parte 3. Atributos de objetoDescribe los atributos de los objetos de MQSeries para AS/400.

Parte 4. AplicacionesDescribe cómo construir programas MQSeries para AS/400 y el diseño delas aplicaciones de ejemplo que se proporcionan junto con MQSeries paraAS/400.

Presentación del texto en este manualEste manual utiliza los siguientes tipos de letras:MQOPEN

Ejemplo del nombre de una llamadaCMPCOD Ejemplo del nombre de un parámetro de una llamadaMQMD

Ejemplo del nombre de un tipo de datos o de una estructuraOOSETA

Ejemplo del nombre de un valor

Términos utilizados en este manualTodos los términos nuevos presentados en este manual están definidos en elglosario. En el cuerpo del manual, se utilizan las siguientes abreviaturas deproductos:CICS El producto CICS® para AS/400

Además, utilizamos las siguientes abreviaturas de nombres para este compiladorde lenguaje:RPG Hace referencia al compilador IBM ILE RPG para OS/400™

Acerca de este manual

xii Consulta de programación de aplicaciones (ILE RPG)

Page 15: amqwak00

Parte 1. Descripciones de tipos de datos

Capítulo 1. Tipos de datos elementales . . . . 3Convenios utilizados en las descripciones de los tiposde datos . . . . . . . . . . . . . . . . 3Tipos de datos elementales . . . . . . . . . 3

MQBYTE - Byte . . . . . . . . . . . . 3MQBYTEn – Serie de n bytes . . . . . . . . 4MQCHAR – Carácter . . . . . . . . . . 4MQCHARn – Serie de n caracteres . . . . . . 4MQHCONN – Asa de conexión . . . . . . . 5MQHOBJ – Asa de objeto . . . . . . . . . 5MQLONG – Entero largo . . . . . . . . . 5Tipos de datos elementales . . . . . . . . 5

Capítulo 2. Tipos de datos de estructura –Consideraciones sobre programación . . . . . 7Convenios utilizados en las descripciones de los tiposde datos . . . . . . . . . . . . . . . . 7Consideraciones sobre el lenguaje . . . . . . . 8

Archivos COPY . . . . . . . . . . . . 8Llamadas . . . . . . . . . . . . . . 9Estructuras . . . . . . . . . . . . . 10Convenios de notación . . . . . . . . . 10Procedimientos MQI . . . . . . . . . . 10Consideraciones sobre las hebras . . . . . . 11Parámetros de llamada MQI . . . . . . . . 11Constantes con nombre . . . . . . . . . 11Control de compromiso . . . . . . . . . 11Codificación de las llamadas de enlace . . . . 12Codificación de las llamadas dinámicas . . . . 13

Capítulo 3. MQBO - Opciones de empezar . . . 15Visión general . . . . . . . . . . . . . 15Campos . . . . . . . . . . . . . . . 15Valores iniciales y declaración RPG . . . . . . 16

Declaración RPG . . . . . . . . . . . 16

Capítulo 4. MQCIH - Cabecera de puente CICS 17Visión general . . . . . . . . . . . . . 18Campos . . . . . . . . . . . . . . . 19Valores iniciales y declaración RPG . . . . . . 28

Declaración RPG . . . . . . . . . . . 29

Capítulo 5. MQCNO - Opciones de conectar . . 31Visión general . . . . . . . . . . . . . 31Campos . . . . . . . . . . . . . . . 31Valores iniciales y declaración RPG . . . . . . 35

Declaración RPG . . . . . . . . . . . 35

Capítulo 6. MQDH - Cabecera de distribución . . 37Visión general . . . . . . . . . . . . . 37Campos . . . . . . . . . . . . . . . 38Valores iniciales y declaración RPG . . . . . . 41

Declaración RPG . . . . . . . . . . . 41

Capítulo 7. MQDLH - Cabecera de mensaje noentregado . . . . . . . . . . . . . . 43Visión general . . . . . . . . . . . . . 43Campos . . . . . . . . . . . . . . . 45Valores iniciales y declaración RPG . . . . . . 49

Declaración RPG . . . . . . . . . . . 49

Capítulo 8. MQGMO - Opciones de obtenermensaje . . . . . . . . . . . . . . . 51Visión general . . . . . . . . . . . . . 51Campos . . . . . . . . . . . . . . . 52Valores iniciales y declaración RPG . . . . . . 76

Declaración RPG . . . . . . . . . . . 76

Capítulo 9. MQIIH - Cabecera de puente IMS . . 79Visión general . . . . . . . . . . . . . 79Campos . . . . . . . . . . . . . . . 80Valores iniciales y declaración RPG . . . . . . 83

Declaración RPG . . . . . . . . . . . 84

Capítulo 10. MQMD - Descriptor de mensaje . . 85Visión general . . . . . . . . . . . . . 86Campos . . . . . . . . . . . . . . . 87Valores iniciales y declaración RPG . . . . . . 134

Declaración RPG . . . . . . . . . . . 135

Capítulo 11. MQMDE - Extensión de descriptorde mensaje . . . . . . . . . . . . . 137Visión general . . . . . . . . . . . . . 137Campos . . . . . . . . . . . . . . . 140Valores iniciales y declaración de RPG . . . . . 141

Declaración de RPG . . . . . . . . . . 142

Capítulo 12. MQOD - Descriptor de objeto . . . 143Visión general . . . . . . . . . . . . . 143Campos . . . . . . . . . . . . . . . 144Valores iniciales y declaración de RPG . . . . . 151

Declaración de RPG . . . . . . . . . . 152

Capítulo 13. MQOR - Registro de objeto . . . 153Visión general . . . . . . . . . . . . . 153Campos . . . . . . . . . . . . . . . 153Valores iniciales y declaración de RPG . . . . . 153

Declaración de RPG . . . . . . . . . . 154

Capítulo 14. MQPMO - Opciones de ponermensaje . . . . . . . . . . . . . . . 155Visión general . . . . . . . . . . . . . 155Campos . . . . . . . . . . . . . . . 156Valores iniciales y declaración de RPG . . . . . 170

Declaración de RPG . . . . . . . . . . 171

Capítulo 15. MQPMR - Registro de ponermensaje . . . . . . . . . . . . . . . 173Visión general . . . . . . . . . . . . . 173

© Copyright IBM Corp. 1994, 2000 1

Page 16: amqwak00

Campos . . . . . . . . . . . . . . . 173Valores iniciales y declaración de RPG . . . . . 175

Declaración de RPG . . . . . . . . . . 175

Capítulo 16. MQRMH - Cabecera de mensaje dereferencia . . . . . . . . . . . . . . 177Visión general . . . . . . . . . . . . . 177Campos . . . . . . . . . . . . . . . 178Valores iniciales y declaración de RPG . . . . . 184

Declaración de RPG . . . . . . . . . . 185

Capítulo 17. MQRR - Registro de respuesta . . 187Visión general . . . . . . . . . . . . . 187Campos . . . . . . . . . . . . . . . 187Valores iniciales y declaración de RPG . . . . . 188

Declaración de RPG . . . . . . . . . . 188

Capítulo 18. MQTM - Mensaje desencadenante 189Visión general . . . . . . . . . . . . . 189Campos . . . . . . . . . . . . . . . 190Valores iniciales y declaración de RPG . . . . . 193

Declaración de RPG . . . . . . . . . . 193

Capítulo 19. MQTMC2 - Mensajedesencadenante (formato de caracteres) . . . 195Visión general . . . . . . . . . . . . . 195Campos . . . . . . . . . . . . . . . 196Valores iniciales y declaración de RPG . . . . . 197

Declaración de RPG . . . . . . . . . . 197

Capítulo 20. MQWIH - Cabecera de informaciónde trabajo . . . . . . . . . . . . . . 199Visión general . . . . . . . . . . . . . 199Campos . . . . . . . . . . . . . . . 199Valores iniciales y declaración de RPG . . . . . 201

Declaración de RPG . . . . . . . . . . 201

Capítulo 21. MQXQH - Cabecera de cola detransmisión . . . . . . . . . . . . . 203Visión general . . . . . . . . . . . . . 203Campos . . . . . . . . . . . . . . . 206Valores iniciales y declaración de RPG . . . . . 207

Declaración de RPG . . . . . . . . . . 207

Tipos de datos

2 Consulta de programación de aplicaciones (ILE RPG)

Page 17: amqwak00

Capítulo 1. Tipos de datos elementales

En este capítulo se describen los tipos de datos elementales utilizados por la MQI.

Los tipos de datos elementales son los siguientes:v MQBYTE – Bytev MQBYTEn – Serie de n bytesv MQCHAR – Carácter de un único bytev MQCHARn – Serie de n caracteres de un único bytev MQHCONN – Asa de conexiónv MQHOBJ – Asa de objetov MQLONG – Entero largo

Convenios utilizados en las descripciones de los tipos de datosPara cada tipo de datos elemental, este capítulo proporciona una descripción de suutilización, en un formato independiente del lenguaje de programación. A esto lesigue una declaración típica en la versión ILE del lenguaje de programación RPG.Las definiciones de los tipos de datos elementales se incluyen aquí paraproporcionar coherencia. RPG utiliza especificaciones ‘D’ allí donde se puedendeclarar campos de trabajo utilizando cualesquiera atributos que sean necesarios.No obstante, esto se puede hacer en las especificaciones de cálculo donde se utilizael campo.

Para utilizar los tipos de datos elementales, debe crear:v Un miembro /COPY que contenga todos los tipos de datos, ov Una estructura de datos externa (PF) que contenga todos los tipos de datos.

Entonces deben especificarse los campos de trabajo con atributos ‘LIKE’ para elcampo de tipo de datos adecuado.

La ventaja de la segunda opción es que las definiciones se pueden utilizar como un‘ARCHIVO DE REFERENCIA DE CAMPOS’ para otros objetos de AS/400. Sicambia una definición de tipo de datos MQ, es relativamente sencillo volver acrear estos objetos.

Tipos de datos elementalesTodos los demás tipos de datos que se describen en este capítulo equivalendirectamente a los tipos de datos elementales, o a agregados de los tipos de datoselementales (matrices o estructuras).

MQBYTE - ByteEl tipo de datos MQBYTE representa un solo byte de datos. El byte no tieneninguna interpretación determinada; se trata como una serie de bits, y no como uncarácter o número binario. No se requiere ninguna alineación especial.

A veces se utiliza una matriz de MQBYTE para representar un área dealmacenamiento principal cuya naturaleza desconoce el gestor de colas. Porejemplo, el área puede contener datos de mensajes de aplicación o una estructura.La alineación del límite de este área debe ser compatible con la naturaleza de losdatos que contiene.

© Copyright IBM Corp. 1994, 2000 3

Page 18: amqwak00

MQBYTEn – Serie de n bytesCada tipo de datos MQBYTEn representa una serie de n bytes, siendo n uno de lossiguientes valores:

16, 24, 32 ó 64

Cada byte se describe mediante el tipo de datos MQBYTE. No se requiere ningunaalineación especial.

Si los datos de la serie tienen una longitud menor que la longitud definida de laserie, los datos deben rellenarse con nulos para completar la serie.

Cuando el gestor de colas devuelve series de bytes a la aplicación (por ejemplo, enla llamada MQGET), el gestor de colas siempre rellena con nulos hasta llegar a lalongitud definida de la serie.

Existen constantes que definen las longitudes de los campos de tipo serie de bytes;vea “LN* (Longitudes de campos de tipo serie de caracteres y de tipo byte)” en lapágina 443.

MQCHAR – CarácterEl tipo de datos MQCHAR representa un único carácter. El identificador de juegode caracteres del carácter es el mismo que el del gestor de colas (véase el atributoCodedCharSetId en la página 340). No se requiere ninguna alineación especial.

Nota: Los datos de mensajes de aplicación especificados en las llamadas MQGET,MQPUT, y MQPUT1 se describen mediante el tipo de datos MQBYTE, nomediante el tipo de datos MQCHAR.

MQCHARn – Serie de n caracteresCada tipo de datos MQCHARn representa una serie de n caracteres, siendo n unode los siguientes valores:

4, 8, 12, 16, 20, 28, 32, 48, 64, 128 ó 256

Cada carácter se describe mediante el tipo de datos MQCHAR. No se requiereninguna alineación especial.

Si los datos de la serie tienen una longitud menor que la longitud definida de laserie, los datos deben rellenarse con espacios en blanco para completar la serie. Enalgunos casos, se puede utilizar un carácter nulo para finalizar la serieprematuramente, en lugar de rellenar con espacios en blanco; el carácter nulo y loscaracteres que le siguen se tratan como espacios en blanco, hasta llegar a lalongitud definida de la serie. Los lugares en los que se pueden utilizar nulos seidentifican en las descripciones de los tipos de datos y la llamada.

Cuando el gestor de colas devuelve series de caracteres a la aplicación (porejemplo, en la llamada MQGET), el gestor de colas siempre rellena con espacios enblanco hasta llegar a la longitud definida de la serie; el gestor de colas no utiliza elcarácter nulo para delimitar la serie.

Existen constantes que definen las longitudes de los campos de tipo serie decaracteres; vea “LN* (Longitudes de campos de tipo serie de caracteres y de tipobyte)” en la página 443.

Tipos de datos elementales

4 Consulta de programación de aplicaciones (ILE RPG)

Page 19: amqwak00

MQHCONN – Asa de conexiónEl tipo de datos MQHCONN representa un asa de conexión, es decir, la conexióncon un gestor de colas determinado. El asa de conexión debe estar alineada en sulímite natural.

Nota: Las aplicaciones deben comprobar las variables de este tipo únicamente parala condición de igualdad.

MQHOBJ – Asa de objetoEl tipo de datos MQHOBJ representa un asa de objeto que proporciona acceso a unobjeto. El asa de objeto debe estar alineada en su límite natural.

Nota: Las aplicaciones deben comprobar las variables de este tipo únicamente parala condición de igualdad.

MQLONG – Entero largoEl tipo de datos MQLONG es un entero binario con signo de 32 bits que puedetener cualquiera de los valores comprendidos entre −2.147.483.648 y +2.147.483.647(a menos que el contexto establezca otras restricciones) y debe estar alineado en sulímite natural.

Tipos de datos elementalesTabla 1. Tipos de datos elementales

Tipo de datos Representación

MQBYTE Un campo alfanumérico de 1 byte.

MQBYTE16 Un campo alfanumérico de 16 bytes.

MQBYTE24 Un campo alfanumérico de 24 bytes.

MQBYTE32 Un campo alfanumérico de 32 bytes.

MQBYTE64 Un campo alfanumérico de 64 bytes.

MQCHAR Un campo alfanumérico de 1 byte.

MQCHAR4 Un campo alfanumérico de 4 bytes.

MQCHAR8 Un campo alfanumérico de 8 bytes.

MQCHAR12 Un campo alfanumérico de 12 bytes.

MQCHAR16 Un campo alfanumérico de 16 bytes.

MQCHAR20 Un campo alfanumérico de 20 bytes.

MQCHAR28 Un campo alfanumérico de 28 bytes.

MQCHAR32 Un campo alfanumérico de 32 bytes.

MQCHAR48 Un campo alfanumérico de 48 bytes.

MQCHAR64 Un campo alfanumérico de 64 bytes.

MQCHAR128 Un campo alfanumérico de 128 bytes.

MQCHAR256 Un campo alfanumérico de 256 bytes.

MQHCONN Un entero con signo de 10 dígitos.

MQHOBJ Un entero con signo de 10 dígitos.

MQLONG Un entero con signo de 10 dígitos.

PMQLONG Un entero con signo de 10 dígitos.

Tipos de datos elementales

Capítulo 1. Tipos de datos elementales 5

Page 20: amqwak00

Tipos de datos elementales

6 Consulta de programación de aplicaciones (ILE RPG)

Page 21: amqwak00

Capítulo 2. Tipos de datos de estructura – Consideracionessobre programación

En este capítulo se describen los tipos de datos de estructura utilizados por laMQI, que son los siguientes:v MQGMO – Opciones de obtener mensajev MQMD – Descriptor de mensajev MQMDE – Extensión de descriptor de mensajev MQOD – Descriptor de objetov MQOR – Registro de objetov MQPMO – Opciones de poner mensajev MQPMR – Registro de poner mensajev MQRMH – Cabecera de referencia de mensajev MQRR – Registro de respuesta

La MQI también utiliza los siguientes tipos de datos de estructura, que se incluyenen este capítulo para que la información sea completa, pero que no forman partede la interfaz de programación de aplicaciones.v MQCIH – Cabecera de puente CICSv MQDH – Cabecera de distribuciónv MQDLH – Cabecera de mensaje no entregadov MQIIH – Cabecera de puente IMS™

v MQTM – Mensaje desencadenantev MQTMC2 – Mensaje desencadenante (formato de caracteres 2)v MQWIH – Cabecera de información de trabajov MQXQH – Cabecera de cola de transmisión

Nota: La estructura del parámetro de rutina de salida de conversión de datosMQDXP figura en el “Apéndice F. Conversión de datos” en la página 485,junto con las llamadas de conversión de datos asociadas.

Convenios utilizados en las descripciones de los tipos de datosLa descripción de cada tipo de datos de estructura contiene las siguientessecciones:

Nombre de estructuraEl nombre de la estructura, seguido de una breve descripción de para quésirve la estructura.

CamposEn cada campo, el nombre va seguido de su tipo de datos elemental entreparéntesis ( ); por ejemplo:

Versión (entero con signo de 10 dígitos)

También encontrará una descripción de para qué sirve el campo, junto conuna lista de los valores que este puede adoptar. Los nombres de lasconstantes se muestran en mayúsculas; por ejemplo, GMSIDV. Losconjuntos de constantes que tienen el mismo prefijo se representan con elcarácter *, por ejemplo: IA*.

En las descripciones de los campos, se utilizan los siguientes términos:

© Copyright IBM Corp. 1994, 2000 7

Page 22: amqwak00

entradaEl usuario proporciona información en el campo al efectuar unallamada.

salida El gestor de colas devuelve información en el campo cuando lallamada se completa o falla.

entrada/salidaEl usuario proporciona información en el campo al efectuar unallamada y el gestor de colas cambia la información cuando lallamada se completa o falla.

Valores inicialesUna tabla que muestra los valores iniciales para cada campo de losarchivos de definición de datos suministrados con la MQI.

Declaración ILEDeclaración típica de la estructura en ILE.

Consideraciones sobre el lenguajeEsta sección contiene información que le ayudará a utilizar la MQI del lenguaje deprogramación RPG.

Archivos COPYSe proporcionan varios archivos COPY como parte de la definición de la interfazde cola de mensajes (MQI), que sirven de ayuda para escribir programas deaplicación RPG que utilizan la gestión de colas de mensajes. Existen dos conjuntosde archivos COPY:v Los archivos COPY cuyos nombres terminan por la letra “G” se utilizan con

programas que emplean el enlace estático.v Los archivos COPY cuyos nombres terminan por la letra “R” se utilizan con

programas que emplean el enlace dinámico.

Los archivos COPY residen en QRPGLESRC en la biblioteca QMQM.

Para cada conjunto de archivos COPY, existen dos archivos que contienenconstantes con nombre, y un archivo para cada una de las estructuras. Los archivosCOPY se resumen en la Tabla 2.

Tabla 2. Archivos COPY de RPG

Nombre archivo(enlace estático)

Nombre archivo(enlacedinámico)

Contenido

CMQBOG – Estructura de opciones de empezar

CMQCIHG CMQCIHR Estructura de cabecera de información de CICS

CMQCNOG – Estructura de opciones de conectar

CMQDHG CMQDHR Estructura de cabecera de distribución

CMQDLHG CMQDLHR Estructura de cabecera de mensajes no entregados (mensajes en espera)

CMQDXPG CMQDXPR Estructura de parámetro de rutina de salida de conversión de datos

CMQGMOG CMQGMOR Estructura de opciones de obtener mensaje

CMQIIHG CMQIIHR Estructura de cabecera de información de IMS

CMQMDG CMQMDR Estructura de descriptor de mensaje

Tipos de datos de estructura

8 Consulta de programación de aplicaciones (ILE RPG)

Page 23: amqwak00

Tabla 2. Archivos COPY de RPG (continuación)

Nombre archivo(enlace estático)

Nombre archivo(enlacedinámico)

Contenido

CMQMDEG CMQMDER Estructura de extensión de descriptor de mensaje

CMQMD1G CMQMD1R Versión 1 de estructura de descriptor de mensaje

CMQODG CMQODR Estructura de descriptor de objeto

CMQORG CMQORR Estructura de registro de objeto

CMQPMOG CMQPMOR Estructura de opciones de poner mensaje

CMQRRG CMQRRR Estructura de registro de respuesta

CMQTMG CMQTMR Estructura de mensaje desencadenante

CMQTMCG CMQTMCR Estructura de mensaje desencadenante (formato de caracteres)

CMQTMC2G CMQTMC2R Versión 2 de estructura de mensaje desencadenante (formato de caracteres)

CMQWIHG CMQWIHR Estructura de cabecera de información de trabajo

CMQXQHG CMQXQHR Estructura de cabecera de cola de transmisión

CMQG CMQR Constantes con nombre para la MQI principal

CMQXG CMQXR Constantes con nombre para rutina de salida de conversión de datos

LlamadasEn el “Capítulo 22. Descripciones de las llamadas” en la página 211, las llamadas sedescriben utilizando sus nombres individuales. En RPG que utiliza el enlacedinámico, todas las llamadas se realizan al nombre único QMQM, y la funciónconcreta que es necesaria se especifica codificando un parámetro adicional queprecede a los parámetros normales de la llamada. Las siguientes constantes connombre se pueden utilizar para este parámetro adicional, a fin de identificar lafunción necesaria:

Constante con nombreFunción necesaria

MQCLOSCerrar objeto.

MQCONNConectar gestor de colas.

MQDISCDesconectar gestor de colas.

MQGETObtener mensaje.

MQINQConsultar los atributos de objeto.

MQOPENAbrir objeto.

MQPUTPoner mensaje.

MQPUT1Poner un solo mensaje.

MQSETEstablecer atributos de objeto.

Consideraciones sobre el lenguaje

Capítulo 2. Tipos de datos de estructura – Consideraciones sobre programación 9

Page 24: amqwak00

Estas constantes tienen nombres que son iguales que las llamadas que identifican,a excepción de la constante para la llamada MQCLOSE, cuya abreviatura esMQCLOS.

Nota: Las llamadas MQBACK, MQCMIT y MQCONNX no están disponibles paralas aplicaciones que se ejecutan en modalidad de compatibilidad.

EstructurasA excepción de la estructura MQTMC, todas las estructuras MQ se definen convalores iniciales para los campos. Estos valores iniciales se definen en la tabla quecorresponde a cada estructura.

Las declaraciones de estructuras no contienen sentencias DS. Esto permite a laaplicación declarar una única estructura de datos o una estructura de datos queaparezca varias veces, codificando la sentencia DS y, a continuación, utilizando lasentencia /COPY para copiar en el resto de la declaración:D*..1....:....2....:....3....:....4....:....5....:....6....:....7D* Declarar una estructura de datos MQMD con 5 aparicionesDMYMD DS 5

D/COPY CMQMDR

Convenios de notaciónEn las siguientes secciones se explica lo siguiente:v Cómo se deben invocar las llamadasv Cómo se deben declarar los parámetrosv Cómo se deben declarar los diversos tipos de datos

En algunos casos, los parámetros son series de caracteres o matrices cuyo tamañono es fijo. En tales casos se utiliza una letra “n” minúscula para representar unaconstante numérica. Cuando la declaración para estos parámetros se codifica, la“n” debe sustituirse por el valor numérico necesario.

Procedimientos MQICuando se utilizan las llamadas de enlace ILE, es preciso enlazar con losprocedimientos MQI al crear el programa. Estos procedimientos se exportan desdelos siguientes programas de servicio, según convenga:

QMQM/AMQZSTUBEste programa de servicio proporciona enlaces de compatibilidad paraaplicaciones escritas antes de la versión 5.1 que no necesitan acceso aninguna de las nuevas posibilidades que ofrece la versión 5.1. La signaturade este programa de servicio coincide con la que contiene la versión 4.2.1.

QMQM/LIBMQMEste programa de servicio contiene los enlaces monohebra para la versión5.1. Consulte más adelante las consideraciones especiales sobre cómoescribir aplicaciones con hebras.

QMQM/LIBMQM_REste programa de servicio contiene los enlaces multihebra para la versión5.1. Consulte más adelante las consideraciones especiales sobre cómoescribir aplicaciones con hebras.

Utilice el mandato CRTPGM para crear sus programas. Por ejemplo, el siguientemandato crearía un programa monohebra que utiliza las llamadas de enlace ILE:CRTPGM PGM(MYPROGRAM) BNDSRVPGM(QMQM/LIBMQM)

Consideraciones sobre el lenguaje

10 Consulta de programación de aplicaciones (ILE RPG)

Page 25: amqwak00

Consideraciones sobre las hebrasEn general, los programas RPG no deben utilizar los programas de serviciomultihebra. Son excepciones los programas RPG creados con la versión 4.4 delcompilador ILE RPG y que contienen la palabra clave THREAD(*SERIALIZE) en laespecificación de control. Sin embargo, aunque estos programas son seguros en laejecución multihebra, hay que prestar mucha atención al diseño global de laaplicación, pues THREAD(*SERIALIZE) fuerza la serialización de los procedimientosRPG a nivel de módulo y esto puede tener efectos negativos sobre el rendimientoglobal.

Cuando los programas RPG se utilizan como rutinas de salida de conversión dedatos, es preciso hacer que sean seguros en la ejecución multihebra, y también hayque recompilarlos utilizando la versión 4.4 del compilador ILE RPG con la palabraclave THREAD(*SERIALIZE) especificada en la especificación de control.

Para obtener más información acerca de las hebras, vea las publicaciones AS/400ILE RPG/400 Consulta y AS/400 ILE RPG/400 Guía del programador.

Parámetros de llamada MQIMuchos parámetros pasados a la MQI pueden tener más de una funciónconcurrente. Esto se debe a que el valor entero pasado suele comprobarse según elvalor de los bits individuales que hay dentro del campo, y no según su valor total.Esto le permite ‘añadir’ varias funciones conjuntamente y pasarlas como un únicoparámetro.

Constantes con nombreHay un gran número de valores distintos de tipo carácter y entero queproporcionan intercambio de datos entre el programa de aplicación y la MQI. Conel fin de facilitar un método más legible y coherente de utilizar esos valores, atodos se les han asignado constantes con nombre.

Se recomienda utilizar las constantes con nombre y no los valores que representan,pues con ello mejora la legibilidad del código fuente del programa. Asimismo, si elvalor de alguna de esas constantes cambia, solo será necesario volver a compilar elprograma para incorporar los cambios.

Todas las constantes con nombre están disponibles haciendo referencia a losmiembros de COPY.

Control de compromisoLas funciones de punto de sincronización MQCMIT y MQBACK de MQI estándisponibles para los programas ILE RPG que se ejecutan en la modalidad normal;estas llamadas permiten al programa comprometer y restituir los cambiosrealizados en los recursos de MQ.

Las llamadas MQCMIT y MQBACK no están disponibles para los programas ILERPG que se ejecutan en la modalidad de compatibilidad. En esos programas sedeben utilizar los códigos de operación COMMIT y ROLBK.

Consideraciones sobre el lenguaje

Capítulo 2. Tipos de datos de estructura – Consideraciones sobre programación 11

Page 26: amqwak00

Codificación de las llamadas de enlaceLos procedimientos ILE de MQI se enumeran en la Tabla 3.

Tabla 3. Llamadas de servicio ILE RPG soportadas por cada programa de servicio

Nombre de llamada LIBMQM yLIBMQM_R

AMQZSTUB AMQVSTUB

MQBACK U

MQBEGIN U

MQCMIT U

MQCLOSE U U

MQCONN U U

MQCONNX U

MQDISC U U

MQGET U U

MQINQ U U

MQOPEN U U

MQPUT U U

MQPUT1 U U

MQSET U U

MQXCNVC U U

Para utilizar estos procedimientos es necesario hacer lo siguiente:1. Definir los procedimientos externos en las especificaciones ‘D’. Están todos

disponibles dentro del miembro de archivo COPY CMQG que contiene lasconstantes con nombre.

2. Utilizar el código de operación CALLP para llamar al procedimiento junto consus parámetros.

Por ejemplo, la llamada MQOPEN requiere la inclusión del siguiente código:D******************************************************************D** Llamada MQOPEN -- Abrir objeto (Desde archivo COPY CMQG) **D******************************************************************D*D*..1....:....2....:....3....:....4....:....5....:....6....:....7..

DMQOPEN PR EXTPROC('MQOPEN')D* Asa de conexiónD HCONN 10I 0 VALUED* Descriptor de objetoD OBJDSC 224AD* Opciones que controlan la acción de MQOPEND OPTS 10I 0 VALUED* Asa de objetoD HOBJ 10I 0D* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0D*

Para llamar al procedimiento, después de inicializar los distintos parámetros esnecesario el siguiente código:...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+....8

C CALLP MQOPEN(HCONN : MQOD : OPTS : HOBJ :C CMPCOD : REASON)

Consideraciones sobre el lenguaje

12 Consulta de programación de aplicaciones (ILE RPG)

Page 27: amqwak00

Aquí, la estructura MQOD se define utilizando el miembro de COPY CMQODG,que la desglosa en sus componentes.

Codificación de las llamadas dinámicasPara utilizar la MQI mediante llamadas dinámicas a QMQM se necesita elsiguiente código. El ejemplo vuelve a ser MQOPEN:...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+....8

C Z-ADD MQOPEN CIDC CALL 'QMQM'C PARM CID 9 0C PARM HCONN 9 0C PARM MQODC PARM OPTS 9 0C PARM HOBJ 9 0C PARM CMPCOD 9 0C PARM REASON 9 0*

Aquí, la estructura MQOD se define utilizando el miembro de COPY CMQODR,que la divide en sus componentes.

Nota: Las llamadas que utilizan el enlace dinámico no pueden acceder a lasnuevas funciones de la versión 5 release 1. Por ejemplo, las llamadasMQBACK, MQBEGIN, MQCMIT y MQCONNX se pueden utilizarsolamente con el enlace estático.

Consideraciones sobre el lenguaje

Capítulo 2. Tipos de datos de estructura – Consideraciones sobre programación 13

Page 28: amqwak00

Consideraciones sobre el lenguaje

14 Consulta de programación de aplicaciones (ILE RPG)

Page 29: amqwak00

Capítulo 3. MQBO - Opciones de empezar

En la siguiente tabla se resumen los campos de la estructura.

Tabla 4. Campos de MQBO

Campo Descripción Página

BOSID Identificador de estructura 15

BOVER Número de versión de estructura 15

BOOPT Opciones que controlan la acción de MQBEGIN 15

Visión generalLa estructura MQBO es un parámetro de entrada/salida para la llamadaMQBEGIN.

Esta estructura está soportada en los siguientes entornos: AIX, HP-UX, OS/2,OS/400, Sun Solaris, Windows NT.

CamposBOSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

BOSIDVIdentificador de la estructura de opciones de empezar.

Siempre es un campo de entrada. El valor inicial de este campo es BOSIDV.

BOVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

BOVER1Número de versión de la estructura de opciones de empezar.

La siguiente constante especifica el número de la versión actual:

BOVERCVersión actual de la estructura de opciones de empezar.

Siempre es un campo de entrada. El valor inicial de este campo es BOVER1.

BOOPT (entero con signo de 10 dígitos)Opciones que controlan la acción de MQBEGIN.

El valor debe ser:

BONONENo se especifican opciones.

Siempre es un campo de entrada. El valor inicial de este campo es BONONE.

© Copyright IBM Corp. 1994, 2000 15

|

Page 30: amqwak00

Valores iniciales y declaración RPGTabla 5. Valores iniciales de campos de MQBO

Nombre de campo Nombre de constante Valor de constante

BOSID BOSIDV 'BObb' (Ver nota 1)

BOVER BOVER1 1

BOOPT BONONE 0

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQBOD*D* Identificador de estructuraD BOSID 1 4D* Número de versión de la estructuraD BOVER 5 8I 0D* Opciones que controlan la acción de MQBEGIND BOOPT 9 12I 0

MQBO - Opciones de empezar

16 Consulta de programación de aplicaciones (ILE RPG)

Page 31: amqwak00

Capítulo 4. MQCIH - Cabecera de puente CICS

En la siguiente tabla se resumen los campos de la estructura.

Tabla 6. Campos de MQCIH

Campo Descripción Página

CISID Identificador de estructura 19

CIVER Número de versión de estructura 19

CILEN Longitud de estructura MQCIH 19

CIENC Reservado 20

CICSI Reservado 20

CIFMT Nombre del formato MQ™ de los datos quesiguen a MQCIH

20

CIFLG Distintivos 20

CIRET Código de retorno del puente 20

CICC Código de terminación de MQ o CICS EIBRESP 21

CIREA Código de razón o de información de retorno deMQ, o CICS EIBRESP2

21

CIUOW Control de unidad de trabajo 21

CIGWI Intervalo de espera para llamada MQGET emitidapor tarea de puente

22

CILT Tipo de enlace 22

CIODL Longitud de datos de COMMAREA de salida 22

CIFKT Tiempo de liberación de recurso de puente 23

CIADS Descriptor ADS de envío/recepción 23

CICT Indica si la tarea puede ser conversacional 23

CITES Estado al final de la tarea 24

CIFAC Valor de símbolo BVT 24

CIFNC Nombre de llamada MQ o función CICS EIBFN 24

CIAC Código abend (finalización anómala) 25

CIAUT Contraseña o certificado de acceso 25

CIRFM Nombre del formato MQ del mensaje de respuesta 25

CIRSI ID de sistema remoto que se ha de utilizar 26

CIRTI ID de transacción remota que se ha de conectar 26

CITI Transacción que se ha de conectar 26

CIFL Atributos emulados de terminal 26

CIAI Clave AID 26

CISC Código de inicio de transacción 26

CICNC Código abend de transacción 27

CINTI Siguiente transacción que se ha de conectar 27

Nota: Los campos restantes no están presentes si CIVER es menor que CIVER2.

CICP Posición del cursor 28

© Copyright IBM Corp. 1994, 2000 17

Page 32: amqwak00

Tabla 6. Campos de MQCIH (continuación)

Campo Descripción Página

CIEO Desplazamiento de error en mensaje 28

CIII Número de elemento del último mensaje leído 28

Visión generalLa estructura MQCIH describe la información que puede estar presente alprincipio de un mensaje enviado al puente CICS a través de MQSeries paraOS/390™. La estructura se puede omitir si los valores que necesita la aplicaciónson los mismos que los valores iniciales mostrados en la Tabla 8 en la página 28 yel puente se ejecuta con AUTH=LOCAL o IDENTIFY. El nombre del formato deesta estructura es FMCICS.

La versión actual de MQCIH es CIVER2. Los campos que existen solamente en laestructura de la versión 2 se identifican como tales en las descripciones que siguen.La declaración de MQCIH proporcionada en el archivo COPY contiene los nuevoscampos, con el valor inicial del campo CIVER establecido en GMVER2.

Son aplicables condiciones especiales para el juego de caracteres y la codificaciónque se utilizan para la estructura MQCIH y los datos de mensajes de aplicación:v Las aplicaciones que se conectan al gestor de colas que es propietario de la cola

del puente CICS deben proporcionar una estructura MQCIH que tenga el juegode caracteres y la codificación del gestor de colas. Esto se debe a que laconversión de datos de la estructura MQCIH no se lleva a cabo en este caso.

v Las aplicaciones que se conectan a otros gestores de colas pueden proporcionaruna estructura MQCIH que tenga cualquiera de los juegos de caracteres ycodificaciones soportados; la conversión de los datos de mensajes de aplicación yde MQCIH la lleva a cabo el gestor de colas, según convenga.

Nota: Existe una excepción a esta regla. Si el gestor de colas que es propietariode la cola del puente CICS utiliza CICS para la gestión de colasdistribuidas, la MQCIH debe tener el juego de caracteres y la codificaciónde ese gestor de colas.

v Los datos de mensajes de aplicación que siguen a la estructura MQCIH debentener el mismo juego de caracteres y la misma codificación que la estructuraMQCIH. Los campos CICSI y CIENC de la estructura MQCIH no se puedenutilizar para especificar el juego de caracteres y la codificación de los datos demensajes de aplicación.

La aplicación debe asegurar que los campos documentados como campos de“petición” tienen valores adecuados en el mensaje que la aplicación envía al puenteCICS; estos campos se entran en el puente. Los campos documentados comocampos de “respuesta” los establece el puente CICS en el mensaje de respuesta queenvía a la aplicación.

La información de error se devuelve en los campos CIRET, CIFNC, CICC, CIREA yCIAC. El que se establezca uno u otro depende del valor del campo CIRET; consultela Tabla 7.

Tabla 7. Contenido de los campos de información de error de la estructura MQCIH

CIRET CIFNC CICC CIREA CIAC

CRC000 – – – –

MQCIH - Cabecera de puente CICS

18 Consulta de programación de aplicaciones (ILE RPG)

Page 33: amqwak00

Tabla 7. Contenido de los campos de información de error de la estructura MQCIH (continuación)

CIRET CIFNC CICC CIREA CIAC

CRC003 – – FBC* –

CRC002 CRC008 Nombre llamadaMQ

MQ CMPCOD MQ REASON –

CRC001 CRC006 CRC007 CRC009 CICS EIBFN CICS EIBRESP CICS EIBRESP2 –

CRC004 CRC005 – – – CICS ABCODE

CamposCISID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

CISIDVIdentificador de la estructura de cabecera de información de CICS.

Es un campo de petición. El valor inicial de este campo es CISIDV.

CIVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser uno de los siguientes:

CIVER1Estructura de cabecera de información de CICS de la versión 1.

CIVER2Estructura de cabecera de información de CICS de la versión 2.

Los campos que existen solamente en la estructura de la versión 2 seidentifican como tales en las descripciones que siguen.

La siguiente constante especifica el número de la versión actual:

CIVERCEstructura de cabecera de información de CICS de la versión actual.

Es un campo de petición. El valor inicial de este campo es CIVER2.

CILEN (entero con signo de 10 dígitos)Longitud de la estructura MQCIH.

El valor debe ser uno de los siguientes:

CILEN1Longitud de la estructura de cabecera de información de CICS de laversión 1.

CILEN2Longitud de la estructura de cabecera de información de CICS de laversión 2.

La siguiente constante especifica la longitud de la versión actual:

CILENCLongitud de la estructura de cabecera de información de CICS de laversión actual.

MQCIH - Cabecera de puente CICS

Capítulo 4. MQCIH - Cabecera de puente CICS 19

Page 34: amqwak00

Es un campo de petición. El valor inicial de este campo es CILEN2.

CIENC (entero con signo de 10 dígitos)Reservado.

Es un campo reservado; su valor no es significativo. El valor inicial de estecampo es 0.

CICSI (entero con signo de 10 dígitos)Reservado.

Es un campo reservado; su valor no es significativo. El valor inicial de estecampo es 0.

CIFMT (serie de caracteres de 8 bytes)Nombre del formato MQ de los datos que siguen a MQCIH.

Es el nombre del formato MQ de los datos que siguen a la estructura MQCIH.Las reglas para codificarlo son las mismas que las del campo MDFMT de MQMD.

Este nombre de formato también se utiliza para el mensaje de respuesta, si elcampo CIRFM tiene el valor FMNONE.

Si el mensaje de petición tiene como resultado la generación de un mensaje derespuesta de error, este tiene el nombre de formato FMSTR.

Es un campo de petición. La longitud de este campo la proporciona LNFMT. Elvalor inicial de este campo es FMNONE.

CIFLG (entero con signo de 10 dígitos)Distintivos.

El valor debe ser:

CIFNONSin distintivos.

Es un campo de petición. El valor inicial de este campo es CIFNON.

CIRET (entero con signo de 10 dígitos)Código de retorno del puente.

Es el código de retorno del puente CICS que describe el resultado del procesollevado a cabo por el puente. Los campos CIFNC, CICC, CIREA y CIAC puedencontener información adicional (consulte la Tabla 7 en la página 18). El valor esuno de los siguientes valores:

CRC000(0, X'000') No hay ningún error.

CRC001(1, X'001') La sentencia EXEC de CICS detectó un error.

CRC002(2, X'002') La llamada MQ detectó un error.

CRC003(3, X'003') El puente CICS detectó un error.

CRC004(4, X'004') El puente CICS finalizó de forma no satisfactoria.

MQCIH - Cabecera de puente CICS

20 Consulta de programación de aplicaciones (ILE RPG)

Page 35: amqwak00

CRC005(5, X'005') La aplicación finalizó de forma no satisfactoria.

CRC006(6, X'006') Se produjo un error de seguridad.

CRC007(7, X'007') Programa no disponible.

CRC008(8, X'008') El segundo o último mensaje de la unidad de trabajo actualno se recibió en el tiempo especificado.

CRC009(9, X'009') Transacción no disponible.

Es un campo de respuesta. El valor inicial de este campo es CRC000.

CICC (entero con signo de 10 dígitos)Código de terminación MQ o CICS EIBRESP.

El valor devuelto en este campo depende de CIRET; consulte la Tabla 7 en lapágina 18.

Es un campo de respuesta. El valor inicial de este campo es CCOK

CIREA (entero con signo de 10 dígitos)Código de razón o de información de retorno MQ, o CICS EIBRESP2.

El valor devuelto en este campo depende de CIRET; consulte la Tabla 7 en lapágina 18.

Es un campo de respuesta. El valor inicial de este campo es RCNONE.

CIUOW (entero con signo de 10 dígitos)Control de unidad de trabajo.

Controla el proceso de la unidad de trabajo llevado a cabo por el puente CICS.Se puede solicitar que el puente ejecute una única transacción, o uno o másprogramas dentro de una unidad de trabajo. El campo indica si el puente CICSdebe iniciar una unidad de trabajo, realizar la función solicitada dentro de launidad de trabajo actual, o finalizar la unidad de trabajo comprometiéndola orestituyéndola. Hay varias combinaciones aceptadas, a fin de optimizar losflujos de transmisión de datos.

El valor debe ser uno de los siguientes:

CUONLYIniciar unidad de trabajo, realizar función y, a continuación,comprometer la unidad de trabajo (DPL y 3270).

CUCONTDatos adicionales para la unidad de trabajo actual (3270 solamente).

CUFRSTIniciar unidad de trabajo y realizar función (DPL solamente).

CUMIDLRealizar función dentro de la unidad de trabajo actual (DPLsolamente).

MQCIH - Cabecera de puente CICS

Capítulo 4. MQCIH - Cabecera de puente CICS 21

Page 36: amqwak00

CULASTRealizar función y, a continuación, comprometer la unidad de trabajo(DPL solamente).

CUCMITComprometer la unidad de trabajo (DPL solamente).

CUBACKRestituir la unidad de trabajo (DPL solamente).

Es un campo de petición. El valor inicial de este campo es CUONLY.

CIGWI (entero con signo de 10 dígitos)Intervalo de espera para llamada MQGET emitida por tarea de puente.

Este campo solo es aplicable cuando CIUOW tiene el valor CUFRST. Permite quela aplicación emisora especifique el tiempo aproximado, en milisegundos, quelas llamadas MQGET emitidas por el puente deben esperar a los mensajes depetición segundo y posteriores para la unidad de trabajo iniciada por estemensaje. Esto prevalece sobre el intervalo de espera por omisión utilizado porel puente. Se pueden utilizar los siguientes valores especiales:

WIDFLTIntervalo de espera por omisión.

Hace que el puente CICS espere durante el tiempo que se especificó aliniciar el puente.

WIULIMIntervalo de espera ilimitado.

Es un campo de petición. El valor inicial de este campo es WIDFLT.

CILT (entero con signo de 10 dígitos)Tipo de enlace.

Indica el tipo de objeto que el puente debe intentar enlazar. El valor debe seruno de los siguientes:

LTPROGPrograma DPL.

LTTRANTransacción 3270.

Es un campo de petición. El valor inicial de este campo es LTPROG.

CIODL (entero con signo de 10 dígitos)Longitud de datos de la COMMAREA de salida.

Es la longitud de los datos de usuario que se han de devolver al cliente en unmensaje de respuesta. Esta longitud incluye el nombre de programa de 8 bytes.La longitud de la COMMAREA pasada al programa enlazado es la máximaentre la longitud de este campo y la longitud de los datos de usuario delmensaje de petición, menos 8.

Nota: La longitud de los datos de usuario de un mensaje es la longitud delmensaje excluida la estructura MQCIH.

MQCIH - Cabecera de puente CICS

22 Consulta de programación de aplicaciones (ILE RPG)

Page 37: amqwak00

Si la longitud de los datos de usuario del mensaje de petición es menor queCIODL, se utiliza la opción DATALENGTH del mandato LINK; esto permite que elLINK sea enviado eficazmente por la función a otra región CICS.

Se puede utilizar el siguiente valor especial:

OLINPTLa longitud de salida es la misma que la de entrada.

Este valor puede ser necesario incluso en el caso de que no se soliciterespuesta, con el fin de asegurar que la COMMAREA pasada alprograma enlazado tenga el tamaño suficiente.

Es un campo de petición que solo se utiliza para programas DPL. El valorinicial de este campo es OLINPT.

CIFKT (entero con signo de 10 dígitos)Tiempo de liberación de recurso de puente.

Es la cantidad de tiempo, en segundos, que el recurso de puente se mantendrádespués de que finalice la transacción de usuario.

Es un campo de petición que solo se utiliza para transacciones 3270. El valorinicial de este campo es 0.

CIADS (entero con signo de 10 dígitos)Descriptor ADS de envío/recepción.

Es un indicador que especifica si deben enviarse descriptores ADS en laspeticiones SEND y RECEIVE de BMS. El valor debe ser uno de los siguientes:

ADNONESin descriptor ADS.

ADSENDDescriptor ADS de envío.

ADRECVDescriptor ADS de recepción.

ADMSGFDescriptor ADS de recepción.

Es un campo de petición que solo se utiliza para transacciones 3270. El valorinicial de este campo es ADNONE.

CICT (entero con signo de 10 dígitos)Indica si la tarea puede ser conversacional.

Es un indicador que especifica si se debe permitir que la tarea emita peticionesde información adicional, o si debe finalizar de forma anómala. El valor debeser uno de los siguientes:

CTYESLa tarea es conversacional.

CTNOLa tarea no es conversacional.

Es un campo de petición que solo se utiliza para transacciones 3270. El valorinicial de este campo es CTNO.

MQCIH - Cabecera de puente CICS

Capítulo 4. MQCIH - Cabecera de puente CICS 23

Page 38: amqwak00

CITES (entero con signo de 10 dígitos)Estado al final de la tarea.

Este campo muestra el estado de la transacción de usuario al final de la tarea.Se devuelve uno de los siguientes valores:

TENOSYNo sincronizada.

La transacción de usuario todavía no se ha completado y no se hasincronizado.

TECMITComprometer la unidad de trabajo.

La transacción de usuario todavía no se ha completado, pero hasincronizado la primera unidad de trabajo.

TEBACKRestituir la unidad de trabajo.

La transacción de usuario todavía no se ha completado. La unidad detrabajo actual se restituirá.

TEENDTFinalizar tarea.

La transacción de usuario ha finalizado (o ha finalizado de formaanómala).

Es un campo de respuesta que solo se utiliza para transacciones 3270. El valorinicial de este campo es TENOSY.

CIFAC (serie de bits de 8 bytes)Valor de símbolo BVT.

Es un símbolo de recurso de puente de 8 bytes. El propósito de un símbolo derecurso de puente es permitir que varias transacciones de unaseudoconversación utilicen el mismo recurso de puente (terminal 3270 virtual).En el primer o único mensaje de una seudoconversación, hay que establecer unvalor FCNONE; esto indica a CICS que asigne un nuevo recurso de puentepara este mensaje. Se devuelve un símbolo de recurso de puente en mensajesde respuesta cuando se especifica un CIFKT distinto de cero en el mensaje deentrada. Los mensajes de entrada posteriores pueden utilizar entonces elmismo símbolo de recurso de puente.

Se define el siguiente valor especial:

FCNONENo se ha especificado ningún símbolo BVT.

Es un campo de petición y de respuesta que solo se utiliza para transacciones3270. La longitud de este campo la proporciona LNFAC. El valor inicial de estecampo es FCNONE.

CIFNC (serie de caracteres de 4 bytes)Nombre de llamada MQ o función CICS EIBFN.

El valor devuelto en este campo depende de CIRET; consulte la Tabla 7 en lapágina 18. Los siguientes valores son posibles cuando CIFNC contiene unnombre de llamada MQ:

MQCIH - Cabecera de puente CICS

24 Consulta de programación de aplicaciones (ILE RPG)

Page 39: amqwak00

CFCONNLlamada MQCONN.

CFGETLlamada MQGET.

CFINQLlamada MQINQ.

CFOPENLlamada MQOPEN.

CFPUTLlamada MQPUT.

CFPUT1Llamada MQPUT1.

CFNONESin llamada.

Es un campo de respuesta. La longitud de este campo la proporcionaLNFUNC. El valor inicial de este campo es CFNONE.

CIAC (serie de caracteres de 4 bytes)Código abend (finalización anómala).

El valor devuelto en este campo depende de CIRET; consulte la Tabla 7 en lapágina 18.

Es un campo de respuesta. La longitud de este campo la proporcionaLNABNC. El valor inicial del campo son 4 caracteres en blanco.

CIAUT (serie de caracteres de 8 bytes)Contraseña o certificado de acceso.

Es una contraseña o un certificado de acceso. Si la autentificación deidentificador de usuario está activa para el puente CICS, se utiliza CIAUT con elidentificador de usuario del contexto de identidad MQMD para autentificar alemisor del mensaje.

Es un campo de petición. La longitud de este campo la proporciona LNAUTH.El valor inicial de este campo son 8 espacios en blanco.

CIRS1 (serie de caracteres de 8 bytes)Reservado.

Es un campo reservado. El valor debe ser 8 espacios en blanco.

CIRFM (serie de caracteres de 8 bytes)Nombre del formato MQ del mensaje de respuesta.

Es el nombre del formato MQ del mensaje de respuesta que se enviará enrespuesta al mensaje actual. Las reglas para codificarlo son las mismas que lasdel campo MDFMT de MQMD.

Es un campo de petición que solo se utiliza para programas DPL. La longitudde este campo la proporciona LNFMT. El valor inicial de este campo esFMNONE.

MQCIH - Cabecera de puente CICS

Capítulo 4. MQCIH - Cabecera de puente CICS 25

Page 40: amqwak00

CIRSI (serie de caracteres de 4 bytes)ID de sistema remoto que se ha de utilizar.

Es un campo reservado. El valor debe ser 4 espacios en blanco. La longitud deeste campo la proporciona LNRSID.

CIRTI (serie de caracteres de 4 bytes)ID de transacción remota que se ha de conectar.

Es un campo reservado. El valor debe ser 4 espacios en blanco. La longitud delcampo la proporciona LNTRID.

CITI (serie de caracteres de 4 bytes)Transacción que se ha de conectar.

Si CILT tiene el valor LTTRAN, CITI es el identificador de la transacción deusuario que se ha de ejecutar; en este caso hay que especificar un valor distintodel blanco.

Si CILT tiene el valor LTPROG, CITI es el código de transacción bajo el que sehan de ejecutar todos los programas de la unidad de trabajo. Si el valorespecificado es el espacio en blanco, se utiliza el código de transacción poromisión del puente DPL de CICS (CKBP). Si el valor no es el espacio enblanco, debe haberse definido en CICS como transacción local cuyo programainicial es CSQCBP00. Este campo solo es aplicable cuando CIUOW tiene el valorCUFRST o CUONLY.

Es un campo de petición. La longitud del campo la proporciona LNTRID. Elvalor inicial del campo es 4 espacios en blanco.

CIFL (serie de caracteres de 4 bytes)Atributos emulados de terminal.

Es el nombre de un terminal instalado que se ha de utilizar como modelo parael recurso de puente. Un valor de espacios en blanco significa que CIFL setoma de la definición de perfil de transacción de puente, o se utiliza un valorpor omisión.

Es un campo de petición que solo se utiliza para transacciones 3270. Lalongitud de este campo la proporciona LNFACL. El valor inicial del campo es4 espacios en blanco.

CIAI (serie de caracteres de 4 bytes)Clave AID.

Es el valor inicial de la clave AID cuando se inicia la transacción. Es un valorde 1 byte, justificado por la izquierda.

Es un campo de petición que solo se utiliza para transacciones 3270. Lalongitud de este campo la proporciona LNATID. El valor inicial del campo es 4espacios en blanco.

CISC (serie de caracteres de 4 bytes)Código de inicio de transacción.

Es un indicador que especifica si el puente emula una transacción de terminalo una transacción iniciada. El valor debe ser uno de los siguientes:

MQCIH - Cabecera de puente CICS

26 Consulta de programación de aplicaciones (ILE RPG)

Page 41: amqwak00

SCSTRTInicio.

SCDATADatos de inicio.

SCTERMTerminar entrada.

SCNONENinguno.

En la respuesta del puente, este campo se establece en el código de inicioadecuado para el siguiente ID de transacción que contiene el campo CINTI. Larespuesta admite los siguientes códigos de inicio:

SCSTRTSCDATASCTERM

Para el servidor de transacciones CICS Versión 1.2, este campo es un campo desolo petición; su valor en la respuesta no está definido.

Para el servidor de transacciones CICS Versión 1.3 y releases posteriores, es uncampo de petición y de respuesta.

Este campo solo se utiliza para transacciones 3270. La longitud de este campola proporciona LNSTCO. El valor inicial del campo es SCNONE.

CICNC (serie de caracteres de 4 bytes)Código abend de transacción.

Es el código abend que se ha de utilizar para finalizar la transacción(normalmente una transacción conversacional que solicita más datos). De noser así, el campo se establece en espacios en blanco.

Es un campo de petición que solo se utiliza para transacciones 3270. Lalongitud de este campo la proporciona LNCNCL. El valor inicial del campo es4 espacios en blanco.

CINTI (serie de caracteres de 4 bytes)Siguiente transacción que se ha de conectar.

Es el nombre de la siguiente transacción devuelta por la transacción delusuario (en general mediante EXEC CICS RETURN TRANSID). Si no hay mástransacciones, el campo se establece en espacios en blanco.

Es un campo de respuesta que solo se utiliza para transacciones 3270. Lalongitud del campo la proporciona LNTRID. El valor inicial del campo es 4espacios en blanco.

CIRS2 (serie de caracteres de 8 bytes)Reservado.

Es un campo reservado. El valor debe ser 8 espacios en blanco.

CIRS3 (serie de caracteres de 8 bytes)Reservado.

Es un campo reservado. El valor debe ser 8 espacios en blanco.

MQCIH - Cabecera de puente CICS

Capítulo 4. MQCIH - Cabecera de puente CICS 27

Page 42: amqwak00

Los campos restantes no están presentes si CIVER es menor que CIVER2.

CICP (entero con signo de 10 dígitos)Posición del cursor.

Es la posición inicial del cursor cuando se inicia la transacción. Posteriormente,y en las transacciones conversacionales, la posición del cursor está en el vectorRECEIVE.

Es un campo de petición que solo se utiliza para transacciones 3270. El valorinicial del campo es 0. Este campo no está presente si CIVER es menor queCIVER2.

CIEO (entero con signo de 10 dígitos)Desplazamiento de error en mensaje.

Es la posición de los datos no válidos detectados por la rutina de salida delpuente. Este campo proporciona el desplazamiento desde el principio delmensaje hasta la ubicación de los datos no válidos.

Es un campo de respuesta que solo se utiliza para transacciones 3270. El valorinicial del campo es 0. Este campo no está presente si CIVER es menor queCIVER2.

CIII (entero con signo de 10 dígitos)Número de elemento del último mensaje leído.

Es un campo reservado. El valor debe ser 0. Este campo no está presente siCIVER es menor que CIVER2.

CIRS4 (entero con signo de 10 dígitos)Reservado.

Es un campo reservado. El valor debe ser 0. Este campo no está presente siCIVER es menor que CIVER2.

Valores iniciales y declaración RPGTabla 8. Valores iniciales de los campos de MQCIH

Nombre de campo Nombre de constante Valor de constante

CISID CISIDV 'CIHb' (Ver nota 1)

CIVER CIVER2 2

CILEN CILEN2 180

CIENC Ninguno 0

CICSI Ninguno 0

CIFMT FMNONE 'bbbbbbbb'

CIFLG CIFNON 0

CIRET CRC000 0

CICC CCOK 0

CIREA RCNONE 0

CIUOW CUONLY 273

CIGWI WIDFLT -2

CILT LTPROG 1

MQCIH - Cabecera de puente CICS

28 Consulta de programación de aplicaciones (ILE RPG)

|||

|||

Page 43: amqwak00

Tabla 8. Valores iniciales de los campos de MQCIH (continuación)

Nombre de campo Nombre de constante Valor de constante

CIODL OLINPT -1

CIFKT Ninguno 0

CIADS ADNONE 0

CICT CTNO 0

CITES TENOSY 0

CIFAC FCNONE Nulos

CIFNC CFNONE 'bbbb'

CIAC Ninguno 'bbbb'

CIAUT Ninguno 'bbbbbbbb'

CIRS1 Ninguno 'bbbbbbbb'

CIRFM FMNONE 'bbbbbbbb'

CIRSI Ninguno 'bbbb'

CIRTI Ninguno 'bbbb'

CITI Ninguno 'bbbb'

CIFL Ninguno 'bbbb'

CIAI Ninguno 'bbbb'

CISC SCNONE 'bbbb'

CICNC Ninguno 'bbbb'

CINTI Ninguno 'bbbb'

CIRS2 Ninguno 'bbbbbbbb'

CIRS3 Ninguno 'bbbbbbbb'

CICP Ninguno 0

CIEO Ninguno 0

CIII Ninguno 0

CIRS4 Ninguno 0

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQCIHD*D* Identificador de estructuraD CISID 1 4D* Número de versión de estructuraD CIVER 5 8I 0D* Longitud de estructura MQCIHD CILEN 9 12I 0D* ReservadoD CIENC 13 16I 0D* ReservadoD CICSI 17 20I 0D* Nombre del formato MQ de los datos que siguen a MQCIHD CIFMT 21 28D* DistintivosD CIFLG 29 32I 0

declaración RPG

Capítulo 4. MQCIH - Cabecera de puente CICS 29

|||

|||

|||

|||

Page 44: amqwak00

D* Código de retorno del puenteD CIRET 33 36I 0D* Código de terminación MQ o CICS EIBRESPD CICC 37 40I 0D* Código de razón o de información de retorno MQ, o CICS EIBRESP2D CIREA 41 44I 0D* Control de unidad de trabajoD CIUOW 45 48I 0D* Intervalo de espera para llamada MQGET emitida por tarea de puenteD CIGWI 49 52I 0D* Tipo de enlaceD CILT 53 56I 0D* Longitud de datos de la COMMAREA de salidaD CIODL 57 60I 0D* Tiempo de liberación de recurso de puenteD CIFKT 61 64I 0D* Descriptor ADS de envío/recepciónD CIADS 65 68I 0D* Indica si la tarea puede ser conversacionalD CICT 69 72I 0D* Estado al final de la tareaD CITES 73 76I 0D* Valor de símbolo BVTD CIFAC 77 84D* Nombre de llamada MQ o función CICS EIBFND CIFNC 85 88D* Código abend (finalización anómala)D CIAC 89 92D* Contraseña o certificado de accesoD CIAUT 93 100D* ReservadoD CIRS1 101 108D* Nombre del formato MQ del mensaje de respuestaD CIRFM 109 116D* ID de sistema remoto que se ha de utilizarD CIRSI 117 120D* ID de transacción remota que se ha de conectarD CIRTI 121 124D* Transacción que se ha de conectarD CITI 125 128D* Atributos emulados de terminalD CIFL 129 132D* Clave AIDD CIAI 133 136D* Código de inicio de transacciónD CISC 137 140D* Código abend de transacciónD CICNC 141 144D* Siguiente transacción que se ha de conectarD CINTI 145 148D* ReservadoD CIRS2 149 156D* ReservadoD CIRS3 157 164D* Posición del cursorD CICP 165 168I 0D* Desplazamiento de error en mensajeD CIEO 169 172I 0D* Número de elemento del último mensaje leídoD CIII 173 176I 0D* ReservadoD CIRS4 177 180I 0

declaración RPG

30 Consulta de programación de aplicaciones (ILE RPG)

Page 45: amqwak00

Capítulo 5. MQCNO - Opciones de conectar

En la siguiente tabla se resumen los campos de la estructura.

Tabla 9. Campos de MQCNO

Campo Descripción Página

CNSID Identificador de estructura 31

CNVER Número de versión de estructura 31

CNOPT Opciones que controlan la acción de MQCONNX 32

Nota: Los campos restantes no están presentes si CNVER es menor que CNVER2.

CNCCO Desplazamiento de estructura MQCD paraconexión de cliente

33

CNCCP Dirección de estructura MQCD para conexión decliente

33

Visión generalLa estructura MQCNO es un parámetro de entrada/salida de la llamadaMQCONNX.

CamposCNSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

CNSIDVIdentificador de la estructura de opciones de conectar.

Siempre es un campo de entrada. El valor inicial del campo es CNSIDV.

CNVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser uno de los siguientes:

CNVER1Estructura de opciones de conectar de la versión 1.

CNVER2Estructura de opciones de conectar de la versión 2.

Los campos que existen solamente en la estructura de la versión 2 seidentifican como tales en las descripciones que siguen.

La siguiente constante especifica el número de la versión actual:

CNVERCVersión actual de la estructura de opciones de conectar.

Siempre es un campo de entrada. El valor inicial del campo es CNVER1.

© Copyright IBM Corp. 1994, 2000 31

Page 46: amqwak00

CNOPT (entero con signo de 10 dígitos)Opciones que controlan la acción de MQCONNX.

Opciones de enlazar: Las siguientes opciones controlan el tipo de enlace MQque se utilizará; solo se puede especificar una de estas opciones:

CNSBNDEnlace estándar.

Esta opción hace que la aplicación y el agente del gestor de colas local(el componente que gestiona las operaciones de gestión de colas) seejecuten en unidades de ejecución aparte (generalmente, en procesosaparte). De esta manera se mantiene la integridad del gestor de colas,es decir, se protege al gestor de colas contra los programas errantes.

CNSBND debe utilizarse en situaciones en las que la aplicación no sehaya probado totlamente, o en las que no pueda confiarse plenamenteen ella. CNSBND es el valor por omisión.

CNSBND se ha definido como ayuda para la documentación delprograma. No se pretende que esta opción se utilice con ninguna otraopción que controla el tipo de enlace utilizado, pero como su valor escero, no es posible detectar tal uso.

CNFBNDEnlace de vía rápida.

Esta opción hace que la aplicación y el agente del gestor de colas localformen parte de la misma unidad de ejecución. Es lo contrario delmétodo normal de enlace, en el que la aplicación y el gestor de colaslocal se ejecutan en unidades de ejecución aparte.

CNFBND se pasa por alto si lo especifica una aplicación de clienteMQ; el proceso continúa como si la opción no se hubiese especificado.

CNFBND puede aportar ventajas en situaciones en las que el uso devarios procesos supone una actividad general de rendimientosignificativa, en comparación con el recurso global utilizado por laaplicación. Las aplicaciones que utilizan el enlace de vía rápida seconocen como aplicaciones de confianza.

Hay que tener en cuenta los siguientes puntos importantes al decidir sidebe utilizarse el enlace de vía rápida:v La utilización de la opción CNFBND compromete la integridad del

gestor de colas, porque permite a una aplicación conflictiva alteraro dañar los mensajes y otras áreas de datos que pertenecen algestor de colas. Por consiguiente, hay que considerar su utilizaciónúnicamente en las situaciones en las que estas cuestiones se hanevaluado al completo.

v La aplicación no debe utilizar señales asíncronas ni interrupciones detemporizador (por ejemplo, sigkill) con CNFBND. También existenrestricciones para la utilización de segmentos de memoriacompartida. Consulte la publicación MQSeries ApplicationProgramming Guide para obtener más información.

v La aplicación no debe tener más de una hebra conectada al gestor decolas al mismo tiempo.

v La aplicación debe utilizar la llamada MQDISC para desconectarsedel gestor de colas.

MQCNO - Opciones de conectar

32 Consulta de programación de aplicaciones (ILE RPG)

Page 47: amqwak00

v La aplicación debe finalizar antes de finalizar el gestor de colas conel mandato endmqm.

Los siguientes puntos son aplicables a la utilización de CNFBND en losentornos indicados:v En OS/400, el trabajo debe ejecutarse bajo un perfil de usuario que

pertenezca al grupo QMQMADM. Además, el programa no debe terminarde forma anómala, pues de lo contrario el resultado puede serimprevisible.

Para obtener más información acerca de las repercusiones que tiene lautilización de aplicaciones de confianza, consulte la publicaciónMQSeries Application Programming Guide.

Opción por omisión: Si ninguna de las opciones que acabamos de describir esnecesaria, se puede utilizar la siguiente opción:

CNNONENo se especifican opciones.

CNNONE se ha definido como ayuda para la documentación delprograma. No se pretende que esta opción se utilice con ninguna otraopción, pero como su valor es cero no es posible detectar tal uso.

Siempre es un campo de entrada. El valor inicial de este campo es CNNONE.

Los campos restantes no están presentes si CNVER es menor que CNVER2.

CNCCO (entero con signo de 10 dígitos)Desplazamiento de la estructura MQCD para conexión de cliente.

Es el desplazamiento en bytes de una estructura de definición de canal MQCDdesde el principio de la estructura MQCNO. El desplazamiento puede serpositivo o negativo.

CNCCO solo se utiliza cuando la aplicación que emite la llamada MQCONNX seejecuta como cliente MQ. Para obtener información acerca de cómo utilizar estecampo, consulte la descripción del campo CNCCP.

Es un campo de entrada. El valor inicial del campo es 0. Este campo no estápresente si CNVER es menor que CNVER2.

CNCCP (puntero)Dirección de la estructura MQCD para conexión de cliente.

CNCCO y CNCCP solo se utilizan cuando la aplicación que emite la llamadaMQCONNX se ejecuta como cliente MQ. Al especificar uno u otro de estoscampos, la aplicación puede controlar la definición del canal de conexión decliente proporcionando una estructura de definición de canal MQCD quecontiene los valores necesarios.

Si la aplicación se ejecuta como cliente MQ, pero no proporciona unaestructura MQCD, se utiliza la variable de entorno MQSERVER para seleccionar ladefinición de canal. Si MQSERVER no está establecida, se utiliza la tabla decanales de cliente.

Si la aplicación no se ejecuta como cliente MQ, CNCCO y CNCCP se pasan por alto.

MQCNO - Opciones de conectar

Capítulo 5. MQCNO - Opciones de conectar 33

Page 48: amqwak00

Si la aplicación proporciona una estructura MQCD, los campos enumerados acontinuación deben establecerse en los valores necesarios; los demás camposde MQCD se pasan por alto. Las series de caracteres pueden rellenarse conespacios en blanco hasta completar la longitud del campo, o pueden terminarcon un carácter nulo. Consulte la publicación MQSeries Intercommunication paraobtener más información acerca de los campos de la estructura MQCD.

Campo de MQCD ValorCDCHN Nombre de canal.CDVER Número de versión de la estructura. No debe ser menor que CDVER6.CDTRT Cualquier tipo de transporte soportado.CDMOD Nombre de modalidad LU 6.2.CDTP Nombre de programa de transacción LU 6.2.CDSCX Nombre de rutina de salida de seguridad de canal.CDSNX Nombre de rutina de salida de emisión de canal.CDRCX Nombre de rutina de salida de recepción de canal.CDMML Longitud máxima, en bytes, de los mensajes que se pueden enviar por el

canal de conexión de cliente.CDSCD Datos de usuario para rutina de salida de seguridad.CDSND Datos de usuario para rutina de salida de emisión.CDRCD Datos de usuario para rutina de salida de recepción.CDUID Identificador de usuario que se ha de utilizar para establecer una sesión

LU 6.2.CDPW Contraseña que se ha de utilizar para establecer una sesión LU 6.2.CDCON Nombre de conexión.CDHBI Tiempo, en segundos, entre flujos de pulsaciones.CDLEN Longitud de la estructura MQCD.CDXNL Longitud de los nombres de rutina de salida direccionados por CDSXP y

CDRXP. Debe ser mayor que cero si CDSXP o CDRXP se establecen en unvalor que no es el puntero nulo.

CDXDL Longitud de los datos de la rutina de salida direccionados por CDSUP yCDRUP. Debe ser mayor que cero si CDSUP o CDRUP se establecen en unvalor que no es el puntero nulo.

CDSXD Número de rutinas de salida de emisión direccionadas por CDSXP. Si escero, CDSNX y CDSND proporcionan los datos y el nombre de la rutina desalida. Si es mayor que cero, CDSXP y CDSUP proporcionan los datos ynombres de las rutinas de salida, y CDSNX y CDSND deben ser espacios enblanco.

CDRXD Número de rutinas de salida de recepción direccionadas por CDRXP. Si escero, CDRCX y CDRCD proporcionan los datos y el nombre de la rutina desalida. Si es mayor que cero, CDRXP y CDRUP proporcionan los datos ynombres de las rutinas de salida, y CDRCX y CDRCD deben ser espacios enblanco.

CDSXP Dirección del nombre de la primera rutina de salida de emisión.CDSUP Dirección de los datos para la primera rutina de salida de emisión.CDRXP Dirección del nombre de la primera rutina de salida de recepción.CDRUP Dirección de los datos para la primera rutina de salida de recepción.CDLRL Longitud del identificador largo de usuario remoto.CDLRP Dirección del identificador largo de usuario remoto.CDRSI Identificador de seguridad remoto.

La estructura de definición de canal se puede proporcionar de una de las dosformas siguientes:v Utilizando el campo de desplazamiento CNCCO

En este caso, la aplicación debe declarar su propia estructura que contieneuna MQCNO seguida de la estructura de definición de canal MQCD, y debe

MQCNO - Opciones de conectar

34 Consulta de programación de aplicaciones (ILE RPG)

Page 49: amqwak00

establecer CNCCO como el desplazamiento de la estructura de definición decanal desde el principio de MQCNO. Hay que tener cuidado y asegurarsede que este desplazamiento es correcto. CNCCP debe establecerse en elpuntero nulo o en bytes nulos.

v Utilizando el campo de puntero CNCCP

En este caso, la aplicación puede declarar la estructura de definición decanal independientemente de la estructura MQCNO, y puede establecerCNCCP como la dirección de la estructura de definición de canal. CNCCO debeestablecerse en cero.

Sea cual sea la técnica elegida, solo se puede utilizar CNCCO o CNCCP; si ambosson distintos de cero, la llamada falla con el código de razón RC2278.

Cuando se ha completado la llamada MQCONNX, no se vuelve a hacerreferencia a la estructura MQCD.

Es un campo de entrada. El valor inicial del campo es el puntero nulo. Estecampo no está presente si CNVER es menor que CNVER2.

Valores iniciales y declaración RPGTabla 10. Valores iniciales de campos de MQCNO

Nombre de campo Nombre de constante Valor de constante

CNSID CNSIDV 'CNOb' (Ver nota 1)

CNVER CNVER1 1

CNOPT CNNONE 0

CNCCO Ninguno 0

CNCCP Ninguno Puntero nulo o bytesnulos

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQCNOD*D* Identificador de estructuraD CNSID 1 4D* Número de versión de estructuraD CNVER 5 8I 0D* Opciones que controlan la acción de MQCONNXD CNOPT 9 12I 0D* Desplazamiento de estructura MQCD para conexión de clienteD CNCCO 13 16I 0D* Dirección de estructura MQCD para conexión de clienteD CNCCP 17 32*

MQCNO - Opciones de conectar

Capítulo 5. MQCNO - Opciones de conectar 35

|||

||||

Page 50: amqwak00

MQCNO - Opciones de conectar

36 Consulta de programación de aplicaciones (ILE RPG)

Page 51: amqwak00

Capítulo 6. MQDH - Cabecera de distribución

En la siguiente tabla se resumen los campos de la estructura.

Tabla 11. Campos de MQDH

Campo Descripción Página

DHSID Identificador de estructura 38

DHVER Número de versión de estructura 38

DHLEN Longitud de estructura MQDH más los registrossiguientes

38

DHENC Codificación numérica de los datos que siguen ala matriz de registros MQPMR

39

DHCSI Identificador del juego de caracteres de los datosque siguen a la matriz de registros MQPMR

39

DHFMT Nombre del formato de los datos que siguen a lamatriz de registros MQPMR

39

DHFLG Distintivos generales 39

DHPRF Distintivos que indican qué campos de MQPMRestán presentes

40

DHCNT Número de registros de objeto presentes 40

DHORO Desplazamiento del primer registro de objetodesde el principio de MQDH

40

DHPRO Desplazamiento del primer registro de ponermensaje desde el principio de MQDH

41

Visión generalLa estructura MQDH describe los datos que están presentes en un mensaje de unacola de transmisión cuando se trata de un mensaje de lista de distribución (esdecir, el mensaje se envía a varias colas destino). Esta estructura la utilizan lasaplicaciones especializadas que transfieren mensajes directamente a colas detransmisión, o que eliminan mensajes de colas de transmisión (por ejemplo:agentes del canal de mensajes).

Esta estructura no deben utilizarla las aplicaciones normales que simplementedesean transferir mensajes a listas de distribución. Esas aplicaciones deben utilizarla estructura MQOD para definir los destinos de la lista de distribución, y laestructura MQPMO para especificar las propiedades de los mensajes o recibirinformación acerca de los mensajes enviados a cada destino en particular.

Esta estructura está soportada en los siguientes entornos: AIX, cliente DOS, HP-UX,OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Cuando una aplicación transfiere un mensaje a una lista de distribución, y algunoso todos los destinos son remotos, el gestor de colas pone como prefijo de los datosdel mensaje de aplicación las estructuras MQXQH y MQDH, y transfiere elmensaje a la cola de transmisión pertinente. Por consiguiente, los datos aparecenen la siguiente secuencia cuando el mensaje está en una cola de transmisión:v Estructura MQXQH

© Copyright IBM Corp. 1994, 2000 37

Page 52: amqwak00

v Estructura MQDHv Datos del mensaje de aplicación

En función de los destinos, es posible que el gestor de colas genere más de uno deestos mensajes y los transfiera a colas de transmisión diferentes. En tal caso, lasestructuras MQDH de dichos mensajes identifican distintos subconjuntos de losdestinos definidos en la lista de distribución abierta por la aplicación.

Las aplicaciones que ponen mensajes de lista de distribución directamente en unacola de transmisión deben respetar la secuencia que se ha descrito, y debengarantizar que la estructura MQDH es correcta. Si la estructura MQDH no esválida, el gestor de colas puede optar por que falle la llamada MQPUT o lallamada MQPUT1, con el código de razón RC2135.

Los mensajes se pueden guardar en una cola en forma de lista de distribuciónúnicamente si la cola se ha definido de tal manera que pueda aceptar mensajes delista de distribución (véase el atributo de cola DistLists que se describe en el“Capítulo 38. Atributos de colas locales y colas modelo” en la página 311). Si unaaplicación transfiere un mensaje de lista de distribución directamente a una colaque no acepta listas de distribución, el gestor de colas divide el mensaje de lista dedistribución en mensajes individuales, y transfiere estos mensajes a la cola.

CamposDHSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

DHSIDVIdentificador de la estructura de cabecera de distribución.

El valor inicial de este campo es DHSIDV.

DHVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

DHVER1Número de versión de la estructura de cabecera de distribución.

La siguiente constante especifica el número de la versión actual:

DHVERCVersión actual de la estructura de cabecera de distribución.

El valor inicial de este campo es DHVER1.

DHLEN (entero con signo de 10 dígitos)Longitud de la estructura MQDH más los registros siguientes.

Es el número de bytes desde el principio de la estructura MQDH hasta elprincipio de los datos de mensaje que siguen a las matrices de los registrosMQOR y MQPMR. Los datos aparecen en la siguiente secuencia:v Estructura MQDHv Matriz de registros MQORv Matriz de registros MQPMR

MQDH - Cabecera de distribución

38 Consulta de programación de aplicaciones (ILE RPG)

Page 53: amqwak00

v Datos de mensaje

Las matrices de los registros MQOR y MQPMR se direccionan mediantedesplazamientos que están incluidos en la estructura MQDH. Si estosdesplazamientos tienen como resultado bytes inutilizados en uno o más de lossiguientes elementos: la estructura MQDH, las matrices de los registros y losdatos de mensaje, los bytes inutilizados deberán incluirse en el valor de DHLEN,pero el gestor de colas no preservará el contenido de dichos bytes. Es válidoque la matriz de registros MQPMR preceda a la matriz de registros MQOR.

El valor inicial de este campo es 0.

DHENC (entero con signo de 10 dígitos)Codificación numérica de los datos que siguen a la matriz de registrosMQPMR.

El valor inicial de este campo es 0.

DHCSI (entero con signo de 10 dígitos)Identificador del juego de caracteres de los datos que siguen a la matriz deregistros MQPMR.

El valor inicial de este campo es 0.

DHFMT (serie de caracteres de 8 bytes)Nombre del formato de los datos que siguen a la matriz de registros MQPMR.

El valor inicial de este campo es FMNONE.

DHFLG (entero con signo de 10 dígitos)Distintivos generales.

Se puede especificar el siguiente distintivo:

DHFNEWGenerar nuevos identificadores de mensaje.

Este distintivo indica que se ha de generar un nuevo identificador demensaje para cada destino de la lista de distribución. Solo se puedeestablecer cuando no hay registros de poner mensaje presentes, ocuando los registros están presentes pero no contienen el campo PRMID.

Al utilizar este distintivo, la generación de los identificadores demensaje se difiere hasta el último momento posible, a saber, elmomento en que el mensaje de lista de distribución se dividefinalmente en mensajes individuales. Esto reduce al mínimo lacantidad de información de control que debe ir con el mensaje de listade distribución.

Cuando una aplicación transfiere un mensaje a una lista dedistribución, el gestor de colas establece DHFNEW en la MQDH quegenera si se cumplen las dos condiciones siguientes:v No hay registros de poner mensaje proporcionados por la aplicación,

o los registros proporcionados no contienen el campo PRMID.v El campo MDMID de MQMD es MINONE, o el campo PMOPT en

MQPMO incluye PMNMID

Si no se necesitan distintivos, se puede especificar lo siguiente:

MQDH - Cabecera de distribución

Capítulo 6. MQDH - Cabecera de distribución 39

Page 54: amqwak00

DHFNONSin distintivos.

Esta constante indica que no se han especificado distintivos. DHFNONse ha definido como ayuda para la documentación del programa. Nose pretende que esta constante se utilice con ninguna otra, pero comosu valor es cero no es posible detectar tal uso.

El valor inicial de este campo es DHFNON.

DHPRF (entero con signo de 10 dígitos)Distintivos que indican qué campos de MQPMR están presentes.

Se pueden especificar cero o más de los siguientes distintivos:

PFMIDEl campo de identificador de mensaje está presente.

PFCIDEl campo de identificador de correlación está presente.

PFGIDEl campo de identificador de grupo está presente.

PFFB El campo de información de retorno está presente.

PFACCEl campo de símbolo de contabilidad está presente.

Si no hay campos de MQPMR presentes, se puede especificar lo siguiente:

PFNONENo hay campos de registro de poner mensaje presentes.

PFNONE se ha definido como ayuda para la documentación delprograma. No se pretende que esta constante se utilice con ningunaotra, pero como su valor es cero no es posible detectar tal uso.

El valor inicial de este campo es PFNONE.

DHCNT (entero con signo de 10 dígitos)Número de registros de objeto presentes.

Define el número de destinos. Una lista de distribución siempre tiene quecontener, como mínimo, un destino, por lo que DHCNT siempre debe ser mayorque cero.

El valor inicial de este campo es 0.

DHORO (entero con signo de 10 dígitos)Desplazamiento del primer registro de objeto desde el principio de MQDH.

Este campo proporciona el desplazamiento, en bytes, del primer registro de lamatriz de registros de objeto MQOR que contiene los nombres de las colasdestino. En esta matriz hay registros DHCNT. Estos registros (más los bytes quese saltan entre el primer registro de objeto y el campo anterior) se incluyen enla longitud que proporciona el campo DHLEN.

Una lista de distribución siempre debe contener, como mínimo, un destino, porlo que DHORO siempre debe ser mayor que cero.

MQDH - Cabecera de distribución

40 Consulta de programación de aplicaciones (ILE RPG)

Page 55: amqwak00

El valor inicial de este campo es 0.

DHPRO (entero con signo de 10 dígitos)Desplazamiento del primer registro de poner mensaje desde el principio deMQDH.

Este campo proporciona el desplazamiento, en bytes, del primer registro de lamatriz de registros de poner mensaje MQPMR que contiene las propiedadesdel mensaje. En caso de estar presente, en esta matriz hay registros DHCNT.Estos registros (más los bytes que se saltan entre el primer registro de ponermensaje y el campo anterior) se incluyen en la longitud que proporciona elcampo DHLEN.

Los registros de poner mensaje son opcionales; si no se proporcionan registros,DHPRO es cero, y DHPRF tiene el valor PFNONE.

El valor inicial de este campo es 0.

Valores iniciales y declaración RPGTabla 12. Valores iniciales de los campos de MQDH

Nombre de campo Nombre de constante Valor de constante

DHSID DHSIDV 'DHbb' (Ver nota 1)

DHVER DHVER1 1

DHLEN Ninguno 0

DHENC Ninguno 0

DHCSI Ninguno 0

DHFMT FMNONE 'bbbbbbbb'

DHFLG DHFNON 0

DHPRF PFNONE 0

DHCNT Ninguno 0

DHORO Ninguno 0

DHPRO Ninguno 0

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQDHD*D* Identificador de estructuraD DHSID 1 4D* Número de versión de estructuraD DHVER 5 8I 0D* Longitud de la estructura MQDH más los registros siguientesD DHLEN 9 12I 0D* Codificación numérica de los datos que siguen a la matriz deD* registros MQPMRD DHENC 13 16I 0D* Identificador de juego de caracteres de los datos que siguenD* a la matriz de registros MQPMRD DHCSI 17 20I 0D* Nombre del formato de los datos que siguen a la matriz de

MQDH - Cabecera de distribución

Capítulo 6. MQDH - Cabecera de distribución 41

Page 56: amqwak00

D* registros MQPMRD DHFMT 21 28D* Distintivos generalesD DHFLG 29 32I 0D* Distintivos que indican qué campos de MQPMR están presentesD DHPRF 33 36I 0D* Número de registros de objeto presentesD DHCNT 37 40I 0D* Desplazamiento del primer registro de objeto desde elD* principio de MQDHD DHORO 41 44I 0D* Desplazamiento del primer registro de ponerD* mensaje desde el principio de MQDHD DHPRO 45 48I 0

MQDH - Cabecera de distribución

42 Consulta de programación de aplicaciones (ILE RPG)

Page 57: amqwak00

Capítulo 7. MQDLH - Cabecera de mensaje no entregado

En la siguiente tabla se resumen los campos de la estructura.

Tabla 13. Campos de MQDLH

Campo Descripción Página

DLSID Identificador de estructura 45

DLVER Número de versión de estructura 45

DLREA Mensaje de razón ha llegado a cola de mensajesno entregados

45

DLDQ Nombre de la cola destino original 46

DLDM Nombre del gestor de colas destino original 47

DLENC Codificación numérica de los datos que siguen aMQDLH

47

DLCSI Identificador del juego de caracteres de los datosque siguen a MQDLH

47

DLFMT Nombre del formato de los datos que siguen aMQDLH

47

DLPAT Tipo de aplicación que transfiere el mensaje a lacola de mensajes no entregados

48

DLPAN Nombre de la aplicación que transfiere el mensajea la cola de mensajes no entregados

48

DLPD Fecha en que el mensaje se transfirió a la cola demensajes no entregados

48

DLPT Hora en que el mensaje se transfirió a la cola demensajes no entregados

49

Visión generalLa estructura MQDLH describe la información que se pone como prefijo en losdatos de mensaje de aplicación de los mensajes de la cola de mensajes noentregados (mensajes en espera). Un mensaje puede llegar a la cola de mensajes noentregados porque el gestor de colas o el agente de canal de mensajes lo haredirigido a la cola o porque una aplicación lo ha transferido directamente a lamisma.

Se lleva a cabo un proceso especial cuando un mensaje que es un segmento setransfiere con una estructura MQDLH al principio; consulte la descripción de laestructura MQMDE para obtener información más detallada.

Esta estructura no está soportada en los siguientes entornos: Windows de 16 bits,Windows de 32 bits.

Las aplicaciones que transfieren mensajes directamente a la cola de mensajes noentregados deben poner como prefijo de los datos de mensaje una estructuraMQDLH, y deben inicializar los campos con valores adecuados. Sin embargo, elgestor de colas no comprueba si la estructura MQDLH está presente, ni tampoco sise han especificado valores válidos para los campos.

© Copyright IBM Corp. 1994, 2000 43

Page 58: amqwak00

Si un mensaje es demasiado largo para transferirlo a la cola de mensajes noentregados, la aplicación debería considerar una de las siguientes acciones:v Truncar los datos del mensaje para que quepan en la cola de mensajes no

entregados.v Registrar el mensaje en almacenamiento auxiliar y colocar en la cola de mensajes

no entregados un mensaje de registro de excepción indicándolo.v Eliminar el mensaje y devolver un error a su originador. Si se trata de un

mensaje crítico (o puede serlo), solo deberá realizarse esta operación en el casode que se sepa a ciencia cierta que el originador todavía dispone de una copiadel mensaje; por ejemplo, un mensaje que haya recibido un agente de canal demensajes procedente de un canal de comunicación.

La acción adecuada (si la hay) dependerá del diseño de la aplicación.

Cuando se transfiere un mensaje a la cola de mensajes no entregados, todos loscampos del descriptor de mensaje MQMD deben copiarse a partir de los deldescriptor de mensaje original (si lo hay), a excepción de los siguientes:v Los campos MDCSI y MDENC deben establecerse en el juego de caracteres y la

codificación que se esté utilizando para los campos de la estructura MQDLH.v El campo MDFMT debe establecerse en FMDLH para indicar que los datos

empiezan por una estructura MQDLH.v Los campos de contexto:

MDUIDMDACCMDAIDMDPATMDPANMDPDMDPTMDAOD

deben establecerse utilizando la opción de contexto adecuada a la naturaleza delprograma:– Un programa que ponga en la cola de mensajes no entregados un mensaje

que no esté relacionado con ningún mensaje anterior debe utilizar la opciónPMDEFC; esto hará que el gestor de colas establezca todos los campos decontexto del descriptor de mensaje en sus valores por omisión.

– Un programa que ponga en la cola de mensajes no entregados un mensajeque acaba de recibir debe utilizar la opción PMPASA para poder conservar lainformación de contexto original.

– Un programa que ponga en la cola de mensajes no entregados una respuesta aun mensaje que acaba de recibir debe utilizar la opción PMPASI; de estaforma conserva la información de identidad pero hace que la informaciónoriginal sea la del servidor.

– Un agente de canal de mensajes que ponga en la cola de mensajes noentregados un mensaje que haya recibido de su canal de comunicación debeutilizar la opción PMSETA, con el fin de conservar la información de contextooriginal.

En la estructura MQDLH propiamente dicha, los campos deben establecerse delmodo siguiente:v Los campos DLCSI, DLENC y DLFMT deben establecerse en los valores que describen

los datos de mensaje de aplicación que siguen a la estructura MQDLH; por logeneral, se trata de los valores del descriptor de mensaje original.

MQDLH - Cabecera de mensaje no entregado

44 Consulta de programación de aplicaciones (ILE RPG)

Page 59: amqwak00

v Los campos de contexto DLPAT, DLPAN, DLPD y DLPT deben establecerse en losvalores adecuados para la aplicación que pone el mensaje en la cola de mensajesno entregados; estos valores no están relacionados con el mensaje original.

v Los demás campos se han de establecer según corresponda.

Los datos de tipo carácter de la estructura MQDLH deben tener el juego decaracteres definido por el campo MDCSI del descriptor de mensaje. Los datosnuméricos de la estructura MQDLH deben tener la codificación de datos definidapor el campo MDENC del descriptor de mensaje. La aplicación debe asegurarse deque todos los campos contienen valores válidos y de que los campos de caracteresse rellenan con espacios en blanco hasta alcanzar la longitud definida del campo;los datos de tipo carácter no deben terminar prematuramente mediante un carácternulo, ya que el gestor de colas no convierte en espacios en blanco los caracteresnulos, ni los caracteres subsiguientes, de la estructura MQDLH.

Las aplicaciones que obtienen mensajes de la cola de mensajes no entregadosdeben comprobar que dichos mensajes empiezan por una estructura MQDLH. Laaplicación puede determinar si hay una estructura MQDLH presente examinandoel campo MDFMT del descriptor de mensaje MQMD; si el campo tiene el valorFMDLH, los datos del mensaje empiezan por una estructura MQDLH. Lasaplicaciones que obtienen mensajes de la cola de mensajes no entregados tambiéndeben saber que dichos mensajes pueden haberse truncado si originalmente erandemasiado largos para la cola.

CamposDLSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

DLSIDVIdentificador de la estructura de cabecera de mensaje no entregado.

El valor inicial de este campo es DLSIDV.

DLVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

DLVER1Número de versión de la estructura de cabecera de mensaje noentregado.

La siguiente constante especifica el número de la versión actual:

DLVERCVersión actual de la estructura de cabecera de mensaje no entregado.

El valor inicial de este campo es DLVER1.

DLREA (entero con signo de 10 dígitos)Mensaje de razón llegado a la cola de mensajes no entregados.

Indica la razón por la que el mensaje se colocó en la cola mensajes noentregados en vez de en la cola destino original. Debe ser uno de los valoresFB* o RC* (por ejemplo, RC2053). Consulte la descripción del campo MDFB en el

MQDLH - Cabecera de mensaje no entregado

Capítulo 7. MQDLH - Cabecera de mensaje no entregado 45

Page 60: amqwak00

“Capítulo 10. MQMD - Descriptor de mensaje” en la página 85 para obtenerinformación detallada acerca de los valores FB* que pueden aparecer con másfrecuencia.

Si el valor está en el rango de FBIFST a FBILST, el código de error IMS real sepuede determinar restando FBIERR del valor del campo DLREA.

Algunos valores FB* solo aparecen en este campo. Están relacionados conmensajes de depósito, mensajes desencadenantes o mensajes de cola detransmisión que se han transferido a la cola de mensajes no entregados. Son lossiguientes:

FBABEGLa aplicación no puede iniciarse.

Una aplicación que procesa un mensaje desencadenante no ha podidoarrancar la aplicación indicada en el campo TMAI del mensajedesencadenante (consulte el “Capítulo 18. MQTM - Mensajedesencadenante” en la página 189).

FBATYPError de tipo de aplicación.

Una aplicación que procesa un mensaje desencadenante no ha podidoarrancar la aplicación porque el campo TMAT del mensajedesencadenante no es válido (consulte el “Capítulo 18. MQTM -Mensaje desencadenante” en la página 189).

FBNARMEl mensaje no es un mensaje de depósito.

FBSBCXMensaje detenido por rutina de salida de definición automática decanal.

FBSBMXMensaje detenido por rutina de salida de mensaje de canal.

FBTM La estructura MQTM no es válida o no está presente.

El campo MDFMT de MQMD especifica FMTM, pero el mensaje noempieza por una estructura MQTM válida. Por ejemplo, puede que elmnemotécnico de atención TMSID no sea válido, que TMVER no sereconozca o que la longitud del mensaje desencadenante seainsuficiente para contener la estructura MQTM.

FBXQMEEl mensaje de la cola de transmisión no tiene el formato correcto.

Un agente de canal de mensajes ha comprobado que un mensaje de lacola de transmisión no tiene el formato correcto. El agente de canal demensajes pone el mensaje en la cola de mensajes no entregadosutilizando este código de información de retorno.

El valor inicial de este campo es RCNONE.

DLDQ (serie de caracteres de 48 bytes)Nombre de la cola destino original.

Es el nombre de la cola de mensajes que constituía el destino original delmensaje.

MQDLH - Cabecera de mensaje no entregado

46 Consulta de programación de aplicaciones (ILE RPG)

|

||

|||

||

Page 61: amqwak00

La longitud de este campo la proporciona LNQN. El valor inicial del camposon 48 caracteres en blanco.

DLDM (serie de caracteres de 48 bytes)Nombre del gestor de colas destino original.

Es el nombre del gestor de colas que constituía el destino original del mensaje.

La longitud de este campo la proporciona LNQMN. El valor inicial del camposon 48 caracteres en blanco.

DLENC (entero con signo de 10 dígitos)Codificación numérica de los datos que siguen a MQDLH.

Indica la codificación de datos utilizada para datos numéricos en el mensajeoriginal. Se aplica a los datos del mensaje que siguen a la estructura MQDLH;no se aplican a los datos numéricos de la estructura MQDLH propiamentedicha.

Cuando a una estructura MQDLH se le pone prefijo para los datos delmensaje, la codificación original de los datos debe conservarse copiándola delcampo MDENC del descriptor de mensaje MQMD al campo DLENC de laestructura MQDLH. Deberá darse entonces al campo MDENC del descriptor demensaje el valor adecuado para los datos numéricos de la estructura MQDLH.

El valor ENNAT se puede utilizar para el campo DLENC en las estructurasMQDLH y MQMD.

El valor inicial de este campo es 0.

DLCSI (entero con signo de 10 dígitos)Identificador del juego de caracteres de los datos que siguen a MQDLH.

Especifica el identificador del juego de caracteres de los datos de tipo carácterdel mensaje original. Se aplica a los datos del mensaje que siguen a laestructura MQDLH; no se aplica a datos de tipo carácter de la estructuraMQDLH propiamente dicha.

Cuando a una estructura MQDLH se le pone prefijo para los datos delmensaje, el identificador de juego de caracteres original de los datos debeconservarse copiándolo del campo MDCSI del descriptor de mensaje MQMD alcampo DLCSI de la estructura MQDLH. Deberá darse entonces al campo MDCSIdel descriptor de mensaje el valor adecuado para los datos de tipo carácter dela estructura MQDLH.

El valor CSQM puede utilizarse para el campo MDCSI de la estructura MQMD,pero no debe utilizarse para el campo DLCSI de la estructura MQDLH, ya queel gestor de colas no sustituye el valor CSQM del último campo por el valorque se aplica al gestor de colas.

El valor inicial de este campo es 0.

DLFMT (serie de caracteres de 8 bytes)Nombre del formato de los datos que siguen a MQDLH.

Es el nombre del formato de los datos de la aplicación en el mensaje original.Se aplica a los datos del mensaje que siguen a la estructura MQDLH; no seaplica a la estructura MQDLH propiamente dicha.

MQDLH - Cabecera de mensaje no entregado

Capítulo 7. MQDLH - Cabecera de mensaje no entregado 47

Page 62: amqwak00

Cuando a una estructura MQDLH se le pone prefijo para los datos delmensaje, el nombre de formato original debe conservarse copiándolo delcampo MDFMT del descriptor de mensaje MQMD al campo DLFMT de laestructura MQDLH. Entonces deberá darse el valor FMDLH al campo MDFMTdel descriptor de mensaje.

La longitud de este campo la proporciona LNFMT. El valor inicial de estecampo es FMNONE.

DLPAT (entero con signo de 10 dígitos)Tipo de aplicación que pone el mensaje en la cola de mensajes no entregados(mensajes en espera).

Este campo tiene el mismo significado que el campo MDPAT del descriptor demensaje MQMD (consulte el “Capítulo 10. MQMD - Descriptor de mensaje” enla página 85 para obtener información detallada).

Si es el gestor de colas el que redirige el mensaje a la cola de mensajes noentregados, DLPAT tiene el valor ATQM.

El valor inicial de este campo es 0.

DLPAN (serie de caracteres de 28 bytes)Nombre de la aplicación que transfiere el mensaje a la cola de mensajes noentregados.

El formato del nombre depende del campo DLPAT. Vea también la descripcióndel campo MDPAN en el “Capítulo 10. MQMD - Descriptor de mensaje” en lapágina 85 .

Si es el gestor de colas el que redirige el mensaje a la cola de mensajes noentregados, DLPAN contiene los 28 primeros caracteres del nombre del gestor decolas, rellenados con blancos si es necesario.

La longitud de este campo la proporciona LNPAN. El valor inicial del camposon 28 caracteres en blanco.

DLPD (serie de caracteres de 8 bytes)Fecha en la que se transfirió el mensaje a la cola de mensajes no entregados.

El formato utilizado para la fecha cuando este campo lo genera el gestor decolas es el siguiente:

AAAAMMDD

donde los caracteres representan lo siguiente:AAAA

año (cuatro números)MM mes del año (de 01 a 12)DD día del mes (de 01 a 31)

En los campos DLPD y DLPT se utiliza la Hora del Meridiano de Greenwich(GMT), suponiendo que el reloj del sistema se haya ajustado correctamentesegún la GMT.

La longitud de este campo la proporciona LNPDAT. El valor inicial del camposon 8 caracteres en blanco.

MQDLH - Cabecera de mensaje no entregado

48 Consulta de programación de aplicaciones (ILE RPG)

Page 63: amqwak00

DLPT (serie de caracteres de 8 bytes)Hora en que el mensaje se transfirió a la cola de mensajes no entregados.

El formato utilizado para la hora cuando el gestor de colas genera este campoes el siguiente:

HHMMSSTH

donde los caracteres representan (por orden), lo siguiente:HH horas (de 00 a 23)MM minutos (de 00 a 59)SS segundos (de 00 a 59; véase la siguiente nota)T décimas de segundo (de 0 a 9)H centésimas de segundo (de 0 a 9)

Nota: Si el reloj del sistema está sincronizado para una hora estándar muyexacta, es posible que en algunas ocasiones, poco frecuentes, se devuelva60 ó 61 para los segundos en DLPT. Esto sucede cuando se insertansegundos de año bisiesto en la hora global estándar.

En los campos DLPD y DLPT se utiliza la Hora del Meridiano de Greenwich(GMT), suponiendo que el reloj del sistema se haya ajustado correctamentesegún la GMT.

La longitud de este campo la proporciona LNPTIM. El valor inicial del camposon 8 caracteres en blanco.

Valores iniciales y declaración RPGTabla 14. Valores iniciales de campos de MQDLH

Nombre de campo Nombre de constante Valor de constante

DLSID DLSIDV 'DLHb' (Ver nota 1)

DLVER DLVER1 1

DLREA RCNONE 0

DLDQ Ninguno Blancos

DLDM Ninguno Blancos

DLENC Ninguno 0

DLCSI Ninguno 0

DLFMT FMNONE 'bbbbbbbb'

DLPAT Ninguno 0

DLPAN Ninguno Blancos

DLPD Ninguno Blancos

DLPT Ninguno Blancos

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQDLHD*D* Identificador de estructuraD DLSID 1 4D* Número de versión de estructura

MQDLH - Cabecera de mensaje no entregado

Capítulo 7. MQDLH - Cabecera de mensaje no entregado 49

Page 64: amqwak00

D DLVER 5 8I 0D* Mensaje de razón ha llegado a la cola de mensajes no entregadosD* (mensajes en espera)D DLREA 9 12I 0D* Nombre de la cola destino originalD DLDQ 13 60D* Nombre del gestor de colas destino originalD DLDM 61 108D* Codificación numérica de los datos que siguen a MQDLHD DLENC 109 112I 0D* Identificador juego caracteres de datos que siguen a MQDLHD DLCSI 113 116I 0D* Nombre del formato de los datos que siguen a MQDLHD DLFMT 117 124D* Tipo de aplicación que pone el mensaje en la cola de mensajesD* no entregados (mensajes en espera)D DLPAT 125 128I 0D* Nombre de la aplicación que pone el mensaje en la colaD* de mensajes no entregados (mensajes en espera)D DLPAN 129 156D* Fecha en que el mensaje se puso en la cola de mensajesD* no entregados (mensajes en espera)D DLPD 157 164D* Hora en que el mensaje se puso en la cola de mensajesD* no entregados (mensajes en espera)D DLPT 165 172

MQDLH - Cabecera de mensaje no entregado

50 Consulta de programación de aplicaciones (ILE RPG)

Page 65: amqwak00

Capítulo 8. MQGMO - Opciones de obtener mensaje

En la siguiente tabla se resumen los campos de la estructura.

Tabla 15. Campos de MQGMO

Campo Descripción Página

GMSID Identificador de estructura 52

GMVER Número de versión de estructura 52

GMOPT Opciones que controlan la acción de MQGET 52

GMWI Intervalo de espera 71

GMSG1 Señal 71

GMSG2 Identificador de señal 71

GMRQN Nombre resuelto de la cola destino 72

Nota: Los campos restantes no están presentes si GMVER es menor que GMVER2.

GMMO Opciones que controlan los criterios de selecciónutilizados para MQGET

72

GMGST Distintivo que indica si el mensaje recuperadoestá en un grupo

74

GMSST Distintivo que indica si el mensaje recuperado esun segmento de un mensaje lógico

75

GMSEG Distintivo que indica si se permite mássegmentación para el mensaje recuperado

75

Nota: Los campos restantes no están presentes si GMVER es menor que GMVER3.

GMTOK Símbolo del mensaje 75

GMRL Longitud de los datos de mensaje devueltos(bytes)

75

Visión generalLa versión actual de MQGMO la proporciona GMVERC. Los campos que existensolamente en las versiones más recientes de la estructura se identifican como talesen las descripciones que siguen. La declaración de MQGMO proporcionada en elarchivo COPY contiene los campos adicionales, pero el valor inicial proporcionadopara el campo GMVER es GMVER1. Para utilizar los campos adicionales, laaplicación debe establecer el número de versión en GMVERC. Las aplicaciones quese pretende que sean transportables entre varios entornos deben utilizar unaversión más reciente de MQGMO solamente si todos esos entornos aceptan dichaversión.

La estructura MQGMO es un parámetro de entrada/salida para la llamadaMQGET.

© Copyright IBM Corp. 1994, 2000 51

|

|||

||||

Page 66: amqwak00

CamposGMSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

GMSIDVIdentificador de la estructura de opciones de obtener mensaje.

Siempre es un campo de entrada. El valor inicial de este campo es GMSIDV.

GMVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser uno de los siguientes:

GMVER1Estructura de opciones de obtener mensaje de la versión 1.

GMVER2Estructura de opciones de obtener mensaje de la versión 2.

Los campos que existen solamente en la estructura de la versión 2 seidentifican como tales en las descripciones que siguen.

GMVER3Estructura de opciones de obtener mensaje de la versión 3.

Los campos que existen solamente en la estructura de la versión 3 seidentifican como tales en las descripciones que siguen.

La siguiente constante especifica el número de la versión actual:

GMVERCEstructura de opciones de obtener mensaje de la versión actual.

Siempre es un campo de entrada. El valor inicial de este campo es GMVER1.

GMOPT (entero con signo de 10 dígitos)Opciones que controlan la acción de MQGET.

Se pueden especificar cero o más de las opciones descritas a continuación. Si esnecesario más de uno, los valores se añaden juntos (no añada la mismaconstante más de una vez). Se indican las combinaciones de opciones que noson válidas; todas las demás combinaciones son válidas.

GMWTEsperar a que llegue el mensaje.

La aplicación debe esperar a que llegue un mensaje apropiado. Eltiempo máximo de espera de la aplicación se especifica en GMWI.

Si las peticiones MQGET están inhabilitadas, o las peticiones MQGETpasan a estarlo mientras esperan, la espera se cancela y la llamada secompleta con CCFAIL y el código de razón RC2016,independientemente de si hay o no hay mensajes apropiados en lacola.

Esta opción se puede utilizar con las opciones GMBRWF o GMBRWN.

MQGMO - Opciones de obtener mensaje

52 Consulta de programación de aplicaciones (ILE RPG)

||

||

Page 67: amqwak00

Si varias aplicaciones esperan en la misma cola compartida, laaplicación o aplicaciones que se activan cuando llega un mensajeapropiado son las descritas a continuación.

Nota: En la descripción siguiente, una llamada de examinar MQGET esaquella que especifica una de las opciones de examinar, pero noGMLK; una llamada MQGET que especifica la opción GMLK setrata como una llamada de no examinar.

v Si una o más llamadas MQGET de no examinar están a la espera, seactiva una de ellas.

v Si una o más llamadas MQGET de examinar están a la espera, perono hay llamadas MQGET de no examinar a la espera, se activantodas.

v Si una o más llamadas MQGET de no examinar, y una o másllamadas MQGET de examinar están a la espera, se activa unallamada MQGET de no examinar, y ninguna, algunas o todas lasllamadas MQGET de examinar. (El número de llamadas MQGET deexaminar activadas es imprevisible, porque depende de lasconsideraciones de planificación del sistema operativo, además deotros factores.)

Si hay más de una llamada MQGET de no examinar a la espera en lamisma cola compartida, únicamente se activa una; en esa situación elgestor de colas intenta dar prioridad a las llamadas que no son deexaminar y que están a la espera en el siguiente orden:1. Peticiones de obtener-espera que solo puedan satisfacer

determinados mensajes, por ejemplo, los que tengan un MDMID oMDCID específico (o ambos).

2. Peticiones generales de obtener-espera que pueda satisfacercualquier mensaje.

Deben tenerse en cuenta los siguientes puntos:v Dentro de la primera categoría, no se da ninguna prioridad adicional

a las peticiones de obtener-espera más específicas, por ejemplo,aquellas que especifican MDMID y MDCID.

v Dentro de cada categoría no puede predecirse la aplicación que va aseleccionarse. Por ejemplo, la aplicación que espera desde hace mástiempo no es necesariamente la seleccionada.

v La longitud de la vía de acceso y las consideraciones deplanificación de prioridades del sistema operativo pueden significarque una aplicación a la espera con una prioridad de sistemaoperativo más baja de lo esperado recupere el mensaje.

v También puede suceder que recupere el mensaje una aplicación queno esté a la espera en vez de otra que sí lo esté.

GMWT se pasa por alto si se especifica con GMBRWC o GMMUC; noaparece ningún error.

GMNWTRetorno inmediato si no hay ningún mensaje apropiado.

La aplicación no debe esperar si no hay ningún mensaje apropiado. Eslo contrario de la opción GMWT, y se ha definido como ayuda para ladocumentación del programa. Es el valor por omisión si no seespecifica ninguno.

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 53

Page 68: amqwak00

GMSYPObtener mensaje con control de punto de sincronización.

La petición debe operar con los protocolos normales de la unidad detrabajo. El mensaje se marca como no disponible para otrasaplicaciones, pero solo se suprime de la cola cuando la unidad detrabajo está comprometida. El mensaje vuelve a estar disponible si launidad de trabajo se restituye.

Si no se especifica esta opción ni GMNSYP, la petición de obtener noestá en una unidad de trabajo.

Esta opción no es válida con ninguna de las siguientes opciones:GMBRWFGMBRWCGMBRWNGMLKGMNSYPGMPSYPGMUNLK

GMPSYPObtener mensaje con control de punto de sincronización si el mensajees permanente.

La petición debe operar dentro de los protocolos normales de launidad de trabajo, pero solo si el mensaje recuperado es permanente.Un mensaje permanente tiene el valor PEPER en el campo MDPER deMQMD.v Si el mensaje es permanente, el gestor de colas procesa la llamada

como si la aplicación hubiese especificado GMSYP (consulte lainformación detallada más arriba).

v Si el mensaje no es permanente, el gestor de colas procesa la llamadacomo si la aplicación hubiese especificado GMNSYP (consulte lainformación detallada más abajo).

Esta opción no es válida con ninguna de las siguientes opciones:GMBRWFGMBRWCGMBRWNGMCMPMGMNSYPGMSYPGMUNLK

GMNSYPObtener mensaje sin control de punto de sincronización.

La petición debe operar sin los protocolos normales de la unidad detrabajo. El mensaje se suprime de la cola inmediatamente (a menos quese trate de una petición de examinar). El mensaje no puede volver aestar disponible restituyendo la unidad de trabajo.

Se presupone esta opción si se especifican GMBRWF o GMBRWN.

Si no se especifica ni esta opción ni GMSYP, la petición de obtener noestá en una unidad de trabajo.

Esta opción no es válida con ninguna de las siguientes opciones:GMSYP

MQGMO - Opciones de obtener mensaje

54 Consulta de programación de aplicaciones (ILE RPG)

Page 69: amqwak00

GMPSYP

GMBRWFExaminar desde el principio de la cola.

Cuando se abre una cola con la opción OOBRW, se establece un cursorpara examinar, colocado lógicamente antes del primer mensaje de lacola. Las llamadas posteriores MQGET que especifican la opciónGMBRWF, GMBRWN o GMBRWC se pueden utilizar para recuperarmensajes de la cola de forma no destructiva. Dentro de los mensajes dela cola, el cursor para examinar marca la posición desde la cual lasiguiente llamada MQGET con GMBRWN buscará un mensajeadecuado.

Una llamada MQGET con GMBRWF hace que la posición anterior delcursor de examinar se pase por alto. Se recuperará el primer mensajede la cola que satisfaga las condiciones especificadas en el descriptorde mensaje. El mensaje permanece en la cola y el cursor para examinarse coloca en dicho mensaje.

Después de esta llamada, el cursor para examinar se coloca en elmensaje que se ha devuelto. Si el mensaje se elimina de la cola antesde emitir la siguiente llamada MQGET con GMBRWN, el cursor paraexaminar permanece en la posición que ocupaba el mensaje en la cola,incluso si la posición está ahora vacía.

La opción GMMUC se puede utilizar posteriormente con una llamadaMQGET de no examinar, si es necesario, para eliminar el mensaje de lacola.

Observe que el cursor para examinar no se mueve mediante unallamada MQGET de no examinar que utilice la misma asa HOBJ.Tampoco se mueve mediante una llamada MQGET de examinar quedevuelva el código de terminación CCFAIL o el código de razónRC2080.

La opción GMLK se puede especificar junto con esta opción para hacerque se bloquee el mensaje que se examina.

GMBRWF se puede especificar con cualquier combinación válida de lasopciones GM* y MO* que controlan el proceso de los mensajes degrupos y de segmentos de mensajes lógicos.

Si se especifica GMLOGO, los mensajes se examinan por orden lógico.Si se omite esa opción, los mensajes se examinan por orden físico.Cuando se especifica GMBRWF, es posible conmutar entre el ordenlógico y el orden físico, pero las llamadas MQGET posteriores queutilicen GMBRWN deben examinar la cola en el mismo orden que lallamada más reciente que ha especificado GMBRWF para el asa decola.

La información de grupo y de segmento que el gestor de colas retienepara las llamadas MQGET que examinan mensajes de la cola esindependiente de la información de grupo y de segmento que el gestorde colas retiene para las llamadas MQGET que eliminan mensajes de lacola. Cuando se especifica GMBRWF, el gestor de colas ignora lainformación de grupo y de segmento para examinar, y explora la colacomo si no hubiese ningún mensaje lógico actual ni ningún grupoactual. Si la llamada MQGET es satisfactoria, (código de terminaciónCCOK o CCWARN), la información de grupo y de segmento para

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 55

Page 70: amqwak00

examinar se establece en la del mensaje devuelto; si la llamada no essatisfactoria, la información de grupo y de segmento sigue igual quecomo estaba antes de la llamada.

Esta opción no es válida con ninguna de las siguientes opciones:GMBRWCGMBRWNGMMUCGMSYPGMPSYPGMUNLK

También daría un error si la cola no se hubiese abierto para examinar.

GMBRWNExaminar desde la posición actual en la cola.

El cursor para examinar avanza hasta el siguiente mensaje de la colaque satisface los criterios de selección especificados en la llamadaMQGET. El mensaje se devuelve a la aplicación, pero permanece en lacola.

Después de haber abierto una cola para examinar, la primera llamadade examinar que utiliza el asa tiene el mismo efecto que si especifica laopción GMBRWF o la opción GMBRWN.

Si el mensaje se elimina de la cola antes de que se emita la siguientellamada MQGET con GMBRWN, el cursor para examinar permanecede forma lógica en la posición de la cola que ocupaba el mensaje,incluso si esa posición está vacía en ese momento.

Los mensajes se almacenan en la cola de una de las dos siguientesmaneras:v FIFO dentro de la prioridad (MSPRIO), ov FIFO independientemente de la prioridad (MSFIFO)

El atributo de cola MsgDeliverySequence indica qué método esaplicable (consulte el “Capítulo 38. Atributos de colas locales y colasmodelo” en la página 311 para obtener información detallada).

Si la cola tiene una MsgDeliverySequence de MSPRIO y llega unmensaje a la cola cuya prioridad es superior a la del mensaje al queseñala en ese momento el cursor para examinar, dicho mensaje no seencontrará durante el barrido actual de la cola mediante GMBRWN.Solo podrá encontrarse después de haber restaurado el cursor paraexaminar con GMBRWF (o volviendo a abrir la cola).

La opción GMMUC se puede utilizar posteriormente con una llamadaMQGET de no examinar, si es necesario, para eliminar el mensaje de lacola.

Observe que el cursor para examinar no se mueve mediante lasllamadas MQGET de no examinar que utilizan la misma asa HOBJ.

La opción GMLK se puede especificar junto con esta opción para hacerque se bloquee el mensaje que se examina.

GMBRWN se puede especificar con cualquier combinación válida delas opciones GM* y MO* que controlan el proceso de los mensajes degrupos y de segmentos de mensajes lógicos.

MQGMO - Opciones de obtener mensaje

56 Consulta de programación de aplicaciones (ILE RPG)

Page 71: amqwak00

Si se especifica GMLOGO, los mensajes se examinan por orden lógico.Si se omite esa opción, los mensajes se examinan por orden físico.Cuando se especifica GMBRWF, es posible conmutar entre el ordenlógico y el orden físico, pero las llamadas MQGET posteriores queutilicen GMBRWN deben examinar la cola en el mismo orden que lallamada más reciente que ha especificado GMBRWF para el asa decola. La llamada falla con el código de razón RC2259 si no se satisfaceesta condición.

Nota: Hay que prestar especial atención si una llamada MQGET seutiliza para examinar más allá del final de un grupo de mensajes(o un mensaje lógico que no está en un grupo) cuando no se haespecificado GMLOGO. Por ejemplo, si el último mensaje delgrupo precede al primer mensaje del grupo en la cola, utilizarGMBRWN para examinar más allá del final del grupo,especificando MOSEQN con MDSEQ establecido en 1 (paraencontrar el primer mensaje del siguiente grupo) devolvería denuevo el primer mensaje del grupo ya examinado. Esto puedesuceder de inmediato, o después de un número de llamadasMQGET posteriores (si hay grupos que intervienen).

La posibilidad de un bucle infinito se puede evitar abriendo lacola dos veces para examinar:v Utilice la primera asa para examinar solamente el primer

mensaje de cada grupo.v Utilice la segunda asa para examinar solamente los mensajes

de un grupo específico.v Utilice las opciones MO* para mover el segundo cursor para

examinar hasta la posición del primer cursor para examinar,antes de examinar los mensajes del grupo.

v No utilice GMBRWN para examinar más allá del final de ungrupo.

La información de grupo y de segmento que el gestor de colas retienepara las llamadas MQGET que examinan mensajes de la cola esindependiente de la información de grupo y de segmento que el gestorde colas retiene para las llamadas MQGET que eliminan mensajes de lacola.

Esta opción no es válida con ninguna de las siguientes opciones:GMBRWFGMBRWCGMMUCGMSYPGMPSYPGMUNLK

También daría un error si la cola no se hubiese abierto para examinar.

GMBRWCExaminar mensaje bajo el cursor para examinar.

Esta opción hace que el mensaje al que señala el cursor para examinarse recupere de forma no destructiva, independientemente de lasopciones MO* especificadas en el campo GMMO de MQGMO.

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 57

Page 72: amqwak00

El mensaje al que señala el cursor para examinar es el último que se harecuperado utilizando las opciones GMBRWF o GMBRWN. La llamadano es satisfactoria si no se ha emitido ninguna de estas llamadas parala cola desde el momento en que se ha abierto, o si el mensajeseñalado por el cursor para examinar se ha recuperado desde entoncesde forma destructiva.

Esta llamada no afecta a la posición del cursor para examinar.

La opción GMMUC se puede utilizar posteriormente con una llamadaMQGET de no examinar, si es necesario, para eliminar el mensaje de lacola.

Observe que el cursor para examinar no se mueve mediante unallamada MQGET de no examinar que utilice la misma asa HOBJ.Tampoco se mueve mediante una llamada MQGET de examinar quedevuelva el código de terminación CCFAIL o el código de razónRC2080.

Cuando se especifica GMBRWC con GMLK:v Si ya hay un mensaje bloqueado, debe coincidir con el que señala el

cursor para que se devuelva sin desbloquearlo y volviéndolo abloquear. El mensaje permanecerá bloqueado.

v Si no hay ningún mensaje bloqueado, el mensaje al que señala elcursor para examinar (si lo hay) se bloquea y se devuelve a laaplicación. Si el cursor para examinar no señala ningún mensaje, lallamada da error.

Cuando GMBRWC se especifica sin GMLK:v Si ya hay un mensaje bloqueado, debe coincidir con el del cursor.

Dicho mensaje se devuelve a la aplicación y después se desbloquea.Dado que el mensaje ahora está desbloqueado, no existe garantíaalguna de que pueda volverse a examinar o de que puedarecuperarse de forma destructiva (puede recuperarlo de formadestructiva otra aplicación que obtenga mensajes de la cola).

v Si no hay ningún mensaje bloqueado, el mensaje al que señala elcursor para examinar (si lo hay) se devuelve a la aplicación. Si elcursor para examinar no señala ningún mensaje, la llamada falla.

Cuando GMCMPM se especifica con GMBRWC, el cursor paraexaminar debe identificar un mensaje cuyo campo MDOFF de MQMDsea cero. La llamada falla con el código de razón RC2246 si no sesatisface esta condición.

La información de grupo y de segmento que el gestor de colas retienepara las llamadas MQGET que examinan mensajes de la cola esindependiente de la información de grupo y de segmento que el gestorde colas retiene para las llamadas MQGET que eliminan mensajes de lacola.

Esta opción no es válida con ninguna de las siguientes opciones:GMBRWFGMBRWNGMMUCGMSYPGMPSYPGMUNLK

MQGMO - Opciones de obtener mensaje

58 Consulta de programación de aplicaciones (ILE RPG)

Page 73: amqwak00

También daría un error si la cola no se hubiese abierto para examinar.

GMMUCObtener mensaje bajo el cursor para examinar.

Esta opción hace que el mensaje al que señala el cursor para examinarse recupere, independientemente de las opciones MO* especificadas enel campo GMMO de MQGMO. El mensaje se elimina de la cola.

El mensaje al que señala el cursor para examinar es el último que se harecuperado utilizando las opciones GMBRWF o GMBRWN.

Cuando GMCMPM se especifica con GMMUC, el cursor para examinardebe identificar un mensaje cuyo campo MDOFF de MQMD sea cero. Lallamada falla con el código de razón RC2246 si no se satisface estacondición.

Esta opción no es válida con ninguna de las siguientes opciones:GMBRWFGMBRWCGMBRWNGMUNLK

También daría un error si la cola no se hubiese abierto para examinar ypara entrada. Si el cursor para examinar no está señalando actualmentea un mensaje recuperable, la llamada MQGET devolverá un error.

GMLKBloquear mensaje.

Esta opción bloquea el mensaje que se está examinando, volviéndoloinvisible para cualquier otra asa abierta para la cola. La opción solo sepuede especificar si también se ha especificado una de las siguientesopciones:

GMBRWFGMBRWNGMBRWC

Solo se puede bloquear un mensaje por asa, pero puede ser un mensajelógico o un mensaje físico:v Si se especifica GMCMPM, todos los segmentos de mensaje de que

consta el mensaje lógico se bloquean para el asa de cola (siempreque todos estén presentes en la cola y disponibles pararecuperación).

v Si GMCMPM no se especifica, solo se bloquea un único mensajefísico para el asa de cola. Si este mensaje es un segmento de unmensaje lógico, el segmento bloqueado impide que otras aplicacionesutilicen GMCMPM para recuperar o examinar el mensaje lógico.

El mensaje bloqueado siempre es el que está bajo el cursor paraexaminar, y se puede eliminar de la cola mediante una llamadaMQGET posterior que especifique la opción GMMUC. Otras llamadasMQGET para esa asa de cola también pueden eliminar el mensaje, (porejemplo, una llamada que especifique el identificador del mensajebloqueado).

Si se devuelve CCFAIL (o CCWARN con RC2080), no se bloqueaningún mensaje.

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 59

Page 74: amqwak00

Si la aplicación decide no eliminar el mensaje de la cola, el bloqueo selibera de las siguientes maneras:v Emitiendo otra llamada MQGET para esta asa, con GMBRWF o

GMBRWN especificado (con o sin GMLK); el mensaje se desbloqueasi la llamada se completa con CCOK o CCWARN, pero permanecebloqueado si la llamada se completa con CCFAIL. No obstante, sedan las excepciones siguientes:– El mensaje no se desbloquea si CCWARN se devuelve con

RC2080.– El mensaje se desbloquea si CCFAIL se devuelve con RC2033.

Si GMLK también se especifica, el nuevo mensaje se bloquea. Si nose especifica GMLK, no hay mensaje bloqueado después de lallamada.

Si se especifica GMWT, y no existe ningún mensaje disponibleinmediatamente, el desbloqueo del mensaje original tiene lugar antesdel inicio de la espera (siempre que la llamada no contenga erroralguno).

v Emitiendo otra llamada MQGET para esta asa, con GMBRWC (sinGMLK); el mensaje se desbloquea si la llamada se completa conCCOK o CCWARN, pero permanece bloqueado si la llamada secompleta con CCFAIL. No obstante, se da la excepción siguiente:– El mensaje no se desbloquea si CCWARN se devuelve con

RC2080.v Emitiendo otra llamada MQGET para esta asa con GMUNLK.v Emitiendo una llamada MQCLOSE para esta asa (ya sea explícita o

implícitamente, mediante la finalización de la aplicación).

No se precisa ninguna opción de abrir especial para especificar estaopción salvo OOBRW, que es necesaria para especificar la opción deexaminar correspondiente.

Esta opción no es válida con ninguna de las siguientes opciones:GMSYPGMPSYPGMUNLK

GMUNLKDesbloquear mensaje.

El mensaje que se ha de desbloquear debe haberse bloqueadoanteriormente mediante una llamada MQGET con la opción GMLK. Sino hay ningún mensaje bloqueado para esta asa, la llamada secompleta con CCWARN y RC2209.

Los parámetros MSGDSC, BUFLEN, BUFFER y DATLEN no se comprueban nialteran si se especifica GMUNLK. No se devuelve mensaje alguno enBUFFER.

No se precisa ninguna opción de abrir especial para especificar estaopción (aunque se necesita OOBRW para emitir la petición de bloqueoen primer lugar).

Esta opción no es válida con ninguna otra opción salvo las siguientes:GMNWTGMNSYP

MQGMO - Opciones de obtener mensaje

60 Consulta de programación de aplicaciones (ILE RPG)

Page 75: amqwak00

Se presuponen ambas opciones tanto si se especifican como si no.

GMATMPermitir que se trunquen los datos del mensaje.

Si el almacenamiento intermedio de mensajes es demasiado reducidopara contener el mensaje completo, esta opción permite que la llamadaMQGET llene el almacenamiento intermedio con todo el mensaje quequepa en él, emita un código de terminación de aviso y se complete elproceso. Esto significa que:v Al examinar mensajes, el cursor para examinar avanzará al mensaje

devuelto.v Al eliminar mensajes, el mensaje devuelto se eliminará de la cola.v Se devuelve el código de razón RC2079 si no se produce ningún otro

error.

Sin esta opción, el almacenamiento seguirá conteniendo toda la partedel mensaje que pueda contener, se emitirá un código de terminaciónde aviso y el proceso no se completará. Esto significa que:v Al examinar mensajes, el cursor para examinar no avanzará.v Al eliminar mensajes, el mensaje no se eliminará de la cola.v Se devuelve el código de razón RC2080 si no se produce ningún otro

error.

GMFIQFalla si el gestor de colas está en reposo.

Esta opción fuerza a la llamada MQGET a fallar si el estado del gestorde colas es en reposo.

Si esta opción se especifica junto con GMWT y la espera está pendienteen el momento en que el gestor de colas entra en el estado de reposo:v La espera se cancela y la llamada devuelve el código de terminación

CCFAIL con el código de razón RC2161.

Si no se especifica GMFIQ y el gestor de colas entra en estado dereposo, la espera no se cancela.

GMCONVConvertir datos del mensaje.

Esta opción solicita que los datos de aplicación del mensaje seconviertan, para ajustarse a los valores MDCSI y MDENC especificados enel parámetro MSGDSC de la llamada MQGET, antes de que se copien losdatos en el parámetro BUFFER.

El proceso de conversión presupone que el campo MDFMT especificado alponer el mensaje identifica la naturaleza de los datos que hay en elmensaje. El gestor de colas realiza la conversión de los datos delmensaje para los formatos incorporados, mientras que una rutina desalida escrita por usuario se encarga de los demás formatos. Consulteel “Apéndice F. Conversión de datos” en la página 485 para obtenerinformación detallada acerca de la rutina de salida de conversión dedatos.v Si la conversión se lleva a cabo satisfactoriamente, los campos MDCSI

y MDENC especificados en el parámetro MSGDSC no cambian al regresode la llamada MQGET.

v Si la conversión no se puede efectuar satisfactoriamente (pero lallamada MQGET se completa sin errores), los datos del mensaje se

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 61

Page 76: amqwak00

devuelven sin convertir y los campos MDCSI y MDENC de MSGDSC seestablecen en los valores del mensaje no convertido. En este caso, elcódigo de terminación es CCWARN.

En cualquier caso, por consiguiente, estos campos describen elidentificador del juego de caracteres y la codificación de los datos delmensaje que se devuelven en el parámetro BUFFER.

Vea el campo MDFMT descrito en el “Capítulo 10. MQMD - Descriptor demensaje” en la página 85 para obtener una lista de nombres de formatocuya conversión realiza el gestor de colas.

Opciones de grupo y segmento: Las opciones descritas a continuacióncontrolan la manera en que la llamada MQGET devuelve los mensajes degrupos y los segmentos de mensajes lógicos. Las siguientes definicionespueden ayudarle a comprender dichas opciones:

Mensaje físicoEs la unidad de información más pequeña que se puede poner en unacola o eliminar de ella; suele corresponder a la informaciónespecificada o recuperada en una única llamada MQPUT, MQPUT1 oMQGET. Cada mensaje físico tiene su propio descriptor de mensaje(MQMD). Generalmente, los mensajes físicos se distinguen por losdiferentes valores del identificador de mensaje (campo MDMID deMQMD), aunque el gestor de colas no fuerce esta diferenciación.

Mensaje lógicoEs una única unidad de información de la aplicación. En ausencia derestricciones del sistema, un mensaje lógico sería igual que un mensajefísico. Pero cuando los mensajes lógicos son demasiado grandes, lasrestricciones del sistema pueden hacer aconsejable o necesario dividirun mensaje lógico en dos o más mensajes físicos, llamados segmentos.

Un mensaje lógico que se ha segmentado consta de dos o másmensajes físicos que tienen el mismo identificador de grupo no nulo(campo MDGID de MQMD) y el mismo número de secuencia de mensaje(campo MDSEQ de MQMD). Los segmentos se distinguen mediantevalores diferenciados para el desplazamiento de segmento (campoMDOFF de MQMD), que proporciona el desplazamiento de los datos delmensaje físico desde el principio de los datos del mensaje lógico. Comocada segmento es un mensaje físico, los segmentos de un mensajelógico suelen tener identificadores de mensaje diferenciados.

Un mensaje lógico que no se ha segmentado, pero para el que laaplicación emisora ha permitido la segmentación, también tiene unidentificador de grupo no nulo, aunque en este caso solo hay unmensaje físico con ese identificador de grupo si el mensaje lógico nopertenece a un grupo de mensajes. Los mensajes lógicos para los que laaplicación emisora ha inhibido la segmentación tienen un identificadorde grupo nulo (GINONE), a menos que el mensaje lógico pertenezca aun grupo de mensajes.

Grupo de mensajesEs un conjunto de uno o más mensajes lógicos que tienen el mismoidentificador de grupo no nulo. Los mensajes lógicos del grupo sedistinguen mediante los distintos valores del número de secuencia demensaje, que es un entero comprendido entre 1 y n, siendo n elnúmero de mensajes lógicos del grupo. Si se segmenta uno o más delos mensajes lógicos, habrá más de n mensajes físicos en el grupo.

MQGMO - Opciones de obtener mensaje

62 Consulta de programación de aplicaciones (ILE RPG)

Page 77: amqwak00

GMLOGOLos mensajes de grupos y los segmentos de mensajes lógicos sedevuelven en orden lógico.

Esta opción controla el orden de devolución de los mensajes mediantelas sucesivas llamadas MQGET para el asa de cola. La opción se debeespecificar en cada una de esas llamadas para que surta efecto.

Si se especifica GMLOGO para las sucesivas llamadas MQGET para elasa de cola, los mensajes de los grupos se devuelven en el orden queindican sus números de secuencia de mensaje, y los segmentos de losmensajes lógicos se devuelven en el orden indicado por susdesplazamientos de segmento. Este orden puede ser diferente delorden en que aparecen en la cola los mensajes y los segmentos.

Nota: Especificar GMLOGO no tiene consecuencias adversas en losmensajes que no pertenecen a grupos y que no son segmentos.En efecto, tales mensajes se tratan como si cada uno de ellosperteneciera a un grupo de mensajes que consta de un únicomensaje. Por tanto, es totalmente seguro especificar GMLOGOcuando se recuperan mensajes de colas que pueden conteneruna combinación de mensajes de grupos, segmentos demensajes, y mensajes no segmentados que no están en grupos.

Para devolver los mensajes en el orden necesario, el gestor de colasretiene la información de grupo y de segmento entre las llamadasMQGET sucesivas. Esta información identifica el grupo de mensajesactual y el mensaje lógico actual para el asa de cola, la posición actualdentro del grupo y el mensaje lógico, y si los mensajes se recuperandentro de una unidad de trabajo. Como el gestor de colas retiene estainformación, la aplicación no necesita establecer la información degrupo y de segmento antes de cada llamada MQGET. De formaespecífica, significa que la aplicación no necesita establecer los camposMDGID, MDSEQ y MDOFF de MQMD. Sin embargo, la aplicación tiene queestablecer la opción GMSYP o GMNSYP correctamente en cadallamada.

Cuando la cola se abre, no hay ningún grupo de mensajes actual niningún mensaje lógico actual. Un grupo de mensajes pasa a ser elgrupo de mensajes actual cuando la llamada MQGET devuelve unmensaje que tiene el distintivo MFMIG. Con GMLOGO especificado enlas llamadas sucesivas, ese grupo sigue siendo el grupo actual hastaque se devuelve un mensaje que tiene lo siguiente:v MFLMIG sin MFSEG (es decir, el último mensaje lógico del grupo no

está segmentado), ov MFLMIG con MFLSEG (es decir, el mensaje devuelto es el último

segmento del último mensaje lógico del grupo).

Cuando se devuelve uno de estos mensajes, el grupo de mensajesfinaliza, y cuando la llamada MQGET finaliza satisfactoriamente ya nohay un grupo actual. De forma similar, un mensaje lógico pasa a ser elmensaje lógico actual cuando la llamada MQGET devuelve un mensajeque tiene el distintivo MFSEG, y ese mensaje lógico termina cuando sedevuelve el mensaje que tiene el distintivo MFLSEG.

Si no se especifican criterios de selección, las llamadas MQGETsucesivas devuelven (en el orden correcto) los mensajes para el primer

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 63

Page 78: amqwak00

grupo de mensajes de la cola, luego los mensajes para el segundogrupo de mensajes, y así sucesivamente hasta que ya no hay másmensajes disponibles. Es posible seleccionar los grupos de mensajesconcretos que se devuelven especificando una o más de las siguientesopciones en el campo GMMO:

MOMSGIMOCORIMOGRPI

Sin embargo, estas opciones solo son efectivas cuando no hay grupo demensajes actual ni mensaje lógico actual; vea el campo GMMO que sedescribe en el “Capítulo 8. MQGMO - Opciones de obtener mensaje”en la página 51 para obtener información detallada.

La Tabla 16 muestra los valores de los campos MDMID, MDCID, MDGID,MDSEQ y MDOFF que el gestor de colas busca cuando intenta encontrar unmensaje para devolverlo en la llamada MQGET. Esto es aplicable a laeliminación de mensajes de la cola y al examen de mensajes de la cola.Las columnas de la tabla tienen los siguientes significados:

ORD LOG“U” significa que la fila solo es aplicable cuando se especificala opción GMLOGO.

Grupo actual“U” significa que la fila solo es aplicable cuando existe ungrupo de mensajes actual antes de la llamada.

“(U)” significa que la fila es aplicable tanto si existe un grupode mensajes actual antes de la llamada como si no.

Mensaje lógico actual“U” significa que la fila solo es aplicable cuando existe unmensaje lógico actual antes de la llamada.

“(U)” significa que la fila es aplicable tanto si existe unmensaje lógico actual antes de la llamada como si no.

Otras columnasEstas columnas muestran los valores que busca el gestor decolas. “Anterior” indica el valor devuelto para el campo delmensaje anterior para el asa de cola.

Tabla 16. Opciones MQGET relacionadas con los mensajes de grupos y de segmentos de mensajes lógicos

Opcionesespecificadas

Estado de mensaje degrupo y de mensaje

lógico antes dellamada

Valores que busca el gestor de colas

ORDLOG

Grupoactual

Mensajelógicoactual

MDMID MDCID MDGID MDSEQ MDOFF

U Controlado porGMMO

Controlado porGMMO

Controlado porGMMO

1 0

U U Cualquieridentificador de

mensaje

Cualquieridentificador de

correlación

Identificador degrupo anterior

1 Desplazamientoanterior +

longitud desegmentoanterior

U U Cualquieridentificador de

mensaje

Cualquieridentificador de

correlación

Identificador degrupo anterior

Número desecuencia

anterior + 1

0

MQGMO - Opciones de obtener mensaje

64 Consulta de programación de aplicaciones (ILE RPG)

|

|

Page 79: amqwak00

Tabla 16. Opciones MQGET relacionadas con los mensajes de grupos y de segmentos de mensajeslógicos (continuación)

Opcionesespecificadas

Estado de mensaje degrupo y de mensaje

lógico antes dellamada

Valores que busca el gestor de colas

U U U Cualquieridentificador de

mensaje

Cualquieridentificador de

correlación

Identificador degrupo anterior

Número desecuenciaanterior

Desplazamientoanterior +

longitud desegmentoanterior

(U) (U) Controlado porGMMO

Controlado porGMMO

Controlado porGMMO

Controlado porGMMO

Controlado porGMMO

Cuando hay varios grupos de mensajes presentes en la cola que sonelegibles para la devolución, los grupos se devuelven en el orden quedetermina la posición en la cola del primer segmento del primermensaje lógico de cada grupo (es decir, los mensajes físicos que tienennúmeros de secuencia de mensaje 1 y desplazamientos 0 determinan elorden en que se devuelven los grupos elegibles).

La opción GMLOGO afecta a las unidades de trabajo de la siguientemanera:v Si el primer mensaje lógico o segmento de un grupo se recupera

dentro de una unidad de trabajo, todos los demás mensajes lógicos ysegmentos del grupo deben recuperarse dentro de una unidad detrabajo, en caso de que se utilice la misma asa de cola. Sin embargo,no es necesario recuperarlos dentro de la misma unidad de trabajo.Esto permite que un grupo que consta de muchos mensajes físicos sedivida entre dos o más unidades de trabajo consecutivas para el asade cola.

v Si el primer mensaje lógico o segmento de un grupo no se recuperadentro de una unidad de trabajo, ninguno de los demás mensajeslógicos y segmentos del grupo se puede recuperar dentro de unaunidad de trabajo, en caso de que se utilice la misma asa de cola.

Si no se satisfacen estas condiciones, la llamada MQGET falla con elcódigo de razón RC2245.

Cuando se especifica GMLOGO, la MQGMO suministrada en lallamada MQGET no debe ser menor que GMVER2, y la MQMD nodebe ser menor que MDVER2. Si no se satisface esta condición, lallamada falla con el código de razón RC2256 ó RC2257, segúncorresponda.

Si GMLOGO no se especifica para las sucesivas llamadas MQGET parael asa de cola, los mensajes se devuelven si tener en cuenta sipertenecen a grupos de mensajes o si son segmentos de mensajeslógicos. Esto significa que los mensajes o segmentos de un mensajelógico o grupo determinado se pueden devolver desordenadamente, opueden entremezclarse con mensajes o segmentos de otros grupos omensajes lógicos, o con mensajes que no están en grupos y que no sonsegmentos. En esta situación, los mensajes determinados que lasllamadas sucesivas MQGET devuelven los controlan las opciones MO*especificadas en esas llamadas (vea el campo GMMO que se describe en el

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 65

Page 80: amqwak00

“Capítulo 8. MQGMO - Opciones de obtener mensaje” en la página 51para obtener información detallada acerca de estas opciones).

Esta es la técnica que se puede utilizar para reiniciar un grupo demensajes o un mensaje lógico en medio, después de producirse unaanomalía en el sistema. Cuando se reinicia el sistema, la aplicaciónpuede establecer los campos MDGID, MDSEQ, MDOFF y GMMO en los valoresadecuados, y a continuación emitir la llamada MQGET con lasopciones GMSYP o GMNSYP establecidas tal como se desee, pero sinespecificar GMLOGO. Si esta llamada es satisfactoria, el gestor de colasretiene la información de grupo y de segmento, y las llamadas MQGETposteriores que utilicen esa asa de cola pueden especificar GMLOGOcon normalidad.

La información de grupo y de segmento que el gestor de colas retienepara las llamadas MQGET es independiente de la información degrupo y de segmento que el gestor de colas retiene para la llamadaMQPUT. Además, el gestor de colas retiene información aparte para losiguiente:v Llamadas MQGET que eliminan mensajes de la cola.v Llamadas MQGET que examinan mensajes de la cola.

Para un asa de cola determinada, la aplicación puede mezclar llamadasMQGET que especifican GMLOGO con llamadas MQGET que no lohacen, pero hay que tener en cuenta lo siguiente:v Cada llamada MQGET satisfactoria que no especifica GMLOGO hace

que el gestor de colas establezca la información guardada de grupoy segmento en los valores correspondientes al mensaje devuelto; estainformación sustituye a la información de grupo y de segmentoexistente retenida por el gestor de colas para el asa de cola. Solo semodifica la información apropiada para la acción de la llamada(examinar o eliminar).

v Si GMLOGO no se especifica, la llamada no falla cuando hay ungrupo de mensajes o un mensaje lógico actual, pero el mensaje osegmento recuperado no es el siguiente del grupo o del mensajelógico. La llamada, no obstante, puede ser satisfactoria con uncódigo de terminación CCWARN. La Tabla 17 muestra los diferentescasos que pueden presentarse. En estos casos, si el código determinación no es CCOK, el código de razón es uno de lossiguientes (según convenga):

RC2241RC2242RC2245

Nota: El gestor de colas no comprueba la información de grupo ysegmento cuando examina una cola, ni tampoco cuando cierrauna cola que estaba abierta para el examen pero no para laentrada; en tales casos el código de terminación siempre esCCOK (suponiendo que no se dan otros errores).

Tabla 17. Salida cuando la llamada MQGET o MQCLOSE no es coherente con la información de grupo y desegmento

Llamada actual Llamada anterior

MQGET con GMLOGO MQGET sin GMLOGO

MQGET con GMLOGO CCFAIL CCFAIL

MQGMO - Opciones de obtener mensaje

66 Consulta de programación de aplicaciones (ILE RPG)

Page 81: amqwak00

Tabla 17. Salida cuando la llamada MQGET o MQCLOSE no es coherente con la información de grupo y desegmento (continuación)

Llamada actual Llamada anterior

MQGET con GMLOGO MQGET sin GMLOGO

MQGET sin GMLOGO CCWARN CCOK

MQCLOSE con un grupo o mensaje lógicono terminado

CCWARN CCOK

Se recomienda que en las aplicaciones que simplemente deseanrecuperar mensajes y segmentos en orden lógico se especifiqueGMLOGO, ya que esta es la opción más fácil de utilizar. Esta opciónhace que la aplicación no tenga que gestionar la información de grupoy segmento, porque el gestor de colas lo hace en su lugar. Sin embargo,las aplicaciones especializadas pueden necesitar más control que el queproporciona la opción GMLOGO, y esto se puede lograr noespecificando dicha opción. En este caso, la aplicación debe asegurarque los campos MDMID, MDCID, MDGID, MDSEQ y MDOFF de MQMD, y lasopciones MO* de GMMO de MQGMO se establecen correctamente antesde cada llamada MQGET.

Por ejemplo, una aplicación que quiera reenviar los mensajes físicos querecibe, sin tener en cuenta si esos mensajes están en grupos osegmentos de mensajes lógicos, no debe especificar GMLOGO. Esto sedebe a que, en una red compleja con varias vías de acceso entre losgestores de colas emisor y receptor, los mensajes físicos pueden llegardesordenadamente. Al no especificar GMLOGO ni el PMLOGOcorrespondiente de la llamada MQPUT, la aplicación del reenvío puederecuperar y reenviar cada mensaje físico tan pronto como llegue, sintener que esperar a que llegue el siguiente en orden lógico.

GMLOGO se puede especificar con cualquiera de las demás opcionesGM* y con varias de las opciones MO*, en circunstancias adecuadas(véase la explicación más arriba).

GMCMPMSolo son recuperables los mensajes lógicos completos.

Esta opción especifica que la llamada MQGET solo puede devolver unmensaje lógico completo. Si el mensaje lógico está segmentado, elgestor de colas reensambla los segmentos y devuelve el mensaje lógicocompleto a la aplicación; el hecho de que el mensaje lógico estuvierasegmentado no es evidente para la aplicación que lo recupera.

Nota: Esta es la única opción que hace que el gestor de colasreensamble segmentos de mensajes. Si no se especifica, lossegmentos se devuelven individualmente a la aplicación en casode estar presentes en la cola (y si satisfacen los otros criterios deselección especificados en la llamada MQGET). Por tanto, lasaplicaciones que no quieren recibir segmentos individualessiempre deben especificar GMCMPM.

Para utilizar esta opción la aplicación debe proporcionar unalmacenamiento intermedio que sea lo bastante grande para dar cabidaal mensaje completo, o especificar la opción GMATM.

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 67

Page 82: amqwak00

Si la cola contiene mensajes segmentados y faltan algunos de lossegmentos (tal vez porque se han retrasado en la red y no han llegadotodavía), especificar GMCMPM impide la recuperación de lossegmentos que pertenecen a mensajes lógicos incompletos. Noobstante, esos segmentos de mensaje siguen contribuyendo al valor delatributo de cola CurrentQDepth; esto significa que puede habermensajes lógicos no recuperables, aunque CurrentQDepth sea mayorque cero.

En los mensajes permanentes, el gestor de colas solo puede reensamblarlos segmentos dentro de una unidad de trabajo:v Si la llamada MQGET funciona dentro de una unidad de trabajo

definida por usuario, esta es la que se utiliza. Si la llamada falla enmedio del proceso de reensamblaje, el gestor de colas vuelve aincluir en la cola los segmentos que se eliminaron durante elreensamblaje. No obstante, la anomalía no impide que la unidad detrabajo se comprometa de forma satisfactoria.

v Si la llamada es operativa fuera de una unidad de trabajo definidapor usuario, y no existe ninguna unidad de trabajo definida porusuario, el gestor de colas crea una unidad de trabajoexclusivamente para el tiempo que dura la llamada. Si la llamada essatisfactoria, el gestor de colas compromete la unidad de trabajoautomáticamente (la aplicación no tiene que hacerlo). Si la llamadano es satisfactoria, el gestor de colas restituye la unidad de trabajo.

v Si la llamada es operativa fuera de una unidad de trabajo definidapor usuario, pero sí existe una unidad de trabajo definida porusuario, el gestor de colas no puede llevar a cabo el reensamblaje. Siel mensaje no requiere reensamblaje, la llamada puede sersatisfactoria. Pero si el mensaje sí requiere reensamblaje, la llamadafalla con el código de razón RC2255.

En mensajes no permanentes, el gestor de colas no requiere que hayadisponible una unidad de trabajo para poder llevar a cabo elreensamblaje.

Cada mensaje físico que es un segmento tiene su propio descriptor demensaje. Para los segmentos que constituyen un único mensaje lógico,la mayoría de los campos del descriptor de mensaje serán los mismosen todos los segmentos del mensaje lógico; en general, solo los camposMDMID, MDOFF y MDMFL varían en los diferentes segmentos del mensajelógico. No obstante, si un segmento se coloca en una cola de mensajesno entregados de un gestor de colas intermedio, el manejador DLQrecupera el mensaje especificando la opción GMCONV, y esto puedetener como resultado que cambie el juego de caracteres o lacodificación del segmento. Si el manejador DLQ envía el segmentosatisfactoriamente, este puede tener un juego de caracteres o unacodificación distintos de los demás segmentos del mensaje lógicocuando el segmento llega finalmente al gestor de colas destino.

Un mensaje lógico que consta de segmentos en los que los camposMDCSI y/o MDENC son diferentes no puede ser reensamblado por elgestor de colas en un único mensaje lógico. En cambio, el gestor decolas reensambla y devuelve unos cuantos segmentos consecutivos delprincipio del mensaje lógico, que tienen los mismos identificadores dejuego de caracteres y las mismas codificaciones, y la llamada MQGET

MQGMO - Opciones de obtener mensaje

68 Consulta de programación de aplicaciones (ILE RPG)

Page 83: amqwak00

se completa con el código de terminación CCWARN y el código derazón RC2243 ó RC2244, según convenga. Esto sucede tanto si seespecifica GMCONV como si no. Para recuperar los segmentosrestantes, la aplicación debe volver a emitir la llamada MQGET sin laopción GMCMPM, recuperando los segmentos uno por uno. Se puedeutilizar GMLOGO para recuperar los restantes segmentos en orden.

También es posible que una aplicación que transfiere segmentosestablezca otros campos del descriptor de mensaje en valores que seandiferentes en cada segmento. No obstante, esto no aporta ningunaventaja si la aplicación receptora utiliza GMCMPM para recuperar elmensaje lógico. Cuando el gestor de colas reensambla un mensajelógico, devuelve en el descriptor de mensaje los valores de este para elprimer segmento; la única excepción es el campo MDMFL, que el gestorde colas establece para indicar que el mensaje reensamblado es el únicosegmento.

Si se especifica GMCMPM para un mensaje de informe, el gestor decolas lleva a cabo un proceso especial. El gestor de colas comprueba siestán presentes en la cola todos los mensajes de informe de ese tipo deinforme que están relacionados con los diferentes segmentos delmensaje lógico. Si lo están, se pueden recuperar como un únicomensaje especificando GMCMPM. Para que esto sea posible, losmensajes de informe debe generarlos un gestor de colas o un MCA quedé soporte a la segmentación, o la aplicación que los origina debesolicitar, como mínimo, 100 bytes de datos de mensaje (es decir, hayque especificar las opciones RO*D o RO*F adecuadas). Si en unsegmento están presentes menos de la cantidad completa de los datosde la aplicación, los bytes que faltan se sustituyen por nulos en elmensaje de informe que se devuelve.

Si se especifica GMCMPM con GMMUC o GMBRWC, el cursor paraexaminar debe situarse en un mensaje cuyo campo MDOFF de MQMDtenga el valor 0. La llamada falla con el código de razón RC2246 si nose satisface esta condición.

GMCMPM implica GMASGA; por tanto, no es necesario queGMASGA esté especificado.

GMCMPM se puede especificar con cualquier de las demás opcionesGM* aparte de GMPSYP, y con cualquiera de las opciones MO* apartede MOOFFS.

GMAMSATodos los mensajes del grupo deben estar disponibles.

Esta opción especifica que los mensajes de un grupo pasan a estardisponibles para la recuperación solamente cuando todos los mensajesdel grupo están disponibles. Si la cola contiene grupos de mensajes yfaltan algunos de los mensajes (tal vez porque se han retrasado en lared y todavía no han llegado), especificar GMAMSA impide larecuperación de mensajes que pertenecen a grupos incompletos. Noobstante, esos mensajes siguen contribuyendo al valor del atributo decola CurrentQDepth; esto significa que puede haber grupos de mensajesno recuperables, aunque CurrentQDepth sea mayor que cero. Si no haymás mensajes recuperables, se devuelve el código de razón RC2033una vez concluido el intervalo de espera especificado (si existe).

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 69

Page 84: amqwak00

El proceso de GMAMSA depende de si se ha especificado tambiénGMLOGO:v Si se han especificado ambas opciones, GMAMSA tiene efecto

únicamente cuando no hay grupo o mensaje lógico actual. Si hay ungrupo o mensaje lógico actual, GMAMSA se pasa por alto. Estosignifica que GMAMSA puede permanecer cuando los mensajes seprocesan en orden lógico.

v Si se especifica GMAMSA sin GMLOGO, GMAMSA siempre tieneefecto. Esto significa que la opción debe desactivarse después dehaber eliminado de la cola el primer mensaje del grupo, a fin depoder eliminar los mensajes restantes del grupo.

Si no se especifica esta opción, los mensajes que pertenecen a grupos sepueden recuperar incluso cuando el grupo está incompleto.

GMAMSA implica GMASGA; por tanto, no es necesario que GMASGAesté especificado.

GMAMSA se puede especificar con cualquiera de las demás opcionesGM*, y con cualquiera de las opciones MO*.

GMASGATodos los segmentos de un mensaje lógico deben estar disponibles.

Esta opción especifica que los segmentos de un mensaje lógico pasan aestar disponibles para la recuperación solamente cuando todos lossegmentos del mensaje lógico están disponibles. Si la cola contienemensajes segmentados y faltan algunos de los segmentos (tal vezporque se han retrasado en la red y no han llegado todavía),especificar GMASGA impide la recuperación de los segmentos quepertenecen a mensajes lógicos incompletos. No obstante, esossegmentos siguen contribuyendo al valor del atributo de colaCurrentQDepth; esto significa que puede haber mensajes lógicos norecuperables, aunque CurrentQDepth sea mayor que cero. Si no haymás mensajes recuperables, se devuelve el código de razón RC2033una vez concluido el intervalo de espera especificado (si existe).

El proceso de GMASGA depende de si se ha especificado tambiénGMLOGO:v Si se han especificado ambas opciones, GMASGA tiene efecto

únicamente cuando no hay mensaje lógico actual. Si hay un mensajelógico actual, GMASGA se pasa por alto. Esto significa queGMASGA puede permanecer cuando los mensajes se procesan enorden lógico.

v Si se especifica GMASGA sin GMLOGO, GMASGA siempre tieneefecto. Esto significa que la opción debe desactivarse después dehaber eliminado de la cola el primer segmento del mensaje lógico, afin de poder eliminar los segmentos restantes del mensaje lógico.

Si no se especifica esta opción, los segmentos del mensaje se puedenrecuperar incluso cuando el mensaje lógico está incompleto.

Si bien GMCMPM y GMASGA requieren que todos los segmentosestén disponibles antes de poder recuperar cualquiera de ellos, laprimera de estas opciones devuelve el mensaje completo, mientras quela segunda permite que los segmentos se recuperen de uno en uno.

MQGMO - Opciones de obtener mensaje

70 Consulta de programación de aplicaciones (ILE RPG)

Page 85: amqwak00

Si se especifica GMASGA para un mensaje de informe, el gestor decolas lleva a cabo un proceso especial. El gestor de colas comprueba sien la cola hay, como mínimo, un mensaje de informe para cada uno delos segmentos de que consta el mensaje lógico completo. Si hay unocomo mínimo, se satisface la condición GMASGA. No obstante, elgestor de colas no comprueba el tipo de los mensajes de informepresentes, por lo que puede haber una combinación de tipos deinforme en los mensajes de informe relacionados con los segmentos delmensaje lógico. Como resultado, el hecho de que GMASGA seasatisfactoria no implica que GMCMPM también lo sea. Si hay unacombinación de tipos de informe presentes para los segmentos de unmensaje lógico determinado, esos mensajes de informe debenrecuperarse de uno en uno.

GMASGA se puede especificar con cualquiera de las demás opcionesGM*, y con cualquiera de las opciones MO*.

GMNONENo se especifican opciones.

Este valor puede utilizarse para indicar que no se han especificadootras opciones; todas las opciones presuponen sus valores por omisión.GMNONE se ha definido como ayuda para la documentación delprograma; no se pretende que esta opción se utilice con ninguna otra,pero como su valor es cero, esa utilización no se puede detectar.

El valor inicial del campo GMOPT es GMNWT.

GMWI (entero con signo de 10 dígitos)Intervalo de espera.

Es el tiempo aproximado, expresado en milisegundos, que la llamada MQGETespera a que llegue un mensaje apropiado (es decir, un mensaje que satisfagalos criterios de selección especificados en el parámetro MSGDSC de la llamadaMQGET; consulte el campo MDMID que se describe en el “Capítulo 10. MQMD -Descriptor de mensaje” en la página 85 para obtener información másdetallada). Si, transcurrido este período de tiempo, no se ha recibido el mensajeadecuado, la llamada se completa con CCFAIL y el código de razón RC2033.

GMWI se utiliza junto con la opción GMWT. Se ignora si no se especifica estaopción. Si se especifica, GMWI debe ser mayor o igual que cero, o el siguientevalor especial:

WIULIMIntervalo de espera ilimitado.

El valor inicial de este campo es 0.

GMSG1 (entero con signo de 10 dígitos)Señal.

Es un campo reservado; su valor no es significativo. El valor inicial de estecampo es 0.

GMSG2 (entero con signo de 10 dígitos)Identificador de señal.

Es un campo reservado; su valor no es significativo.

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 71

Page 86: amqwak00

GMRQN (serie de caracteres de 48 bytes)Nombre resuelto de la cola destino.

Es un campo de salida que el gestor de colas establece en el nombre local de lacola de la que se ha recuperado el mensaje, tal como está definido en el gestorde colas local. Será distinto del nombre utilizado para abrir la cola si:v Se ha abierto una cola alias (en cuyo caso, se devuelve el nombre de la cola

local para la que se ha resuelto el alias) ov Se ha abierto una cola modelo (en cuyo caso, se devuelve el nombre de la

cola local dinámica).

La longitud de este campo la proporciona LNQN. El valor inicial del camposon 48 caracteres en blanco.

Los campos restantes no están presentes si GMVER es menor que GMVER2.

GMMO (entero con signo de 10 dígitos)Opciones que controlan los criterios de selección utilizados para MQGET.

Estas opciones permiten que la aplicación elija qué campos del parámetroMSGDSC se utilizarán para seleccionar el mensaje devuelto por la llamadaMQGET. La aplicación establece las opciones necesarias de este campo, y luegoestablece los campos correspondientes del parámetro MSGDSC en los valoresnecesarios para dichos campos. Solo los mensajes que tienen estos valores en laMQMD del mensaje son candidatos para la recuperación utilizando eseparámetro MSGDSC en la llamada MQGET. Los campos en los que lacorrespondiente opción de emparejar no se ha especificado se pasan por altocuando se selecciona el mensaje que se ha de devolver. Si no se han de utilizarcriterios de selección en la llamada MQGET (es decir, cualquier mensaje esaceptable), GMMO debe establecerse en MONONE.

Si se especifica GMLOGO, solo determinados mensajes son elegibles para quelos devuelva la siguiente llamada MQGET:v Si no hay grupo o mensaje lógico actual, solo los mensajes en los que MDSEQ

es igual a 1 y MDOFF es igual a 0 son elegibles para la devolución. En estasituación, se puede utilizar una o más de las siguientes opciones deemparejar para seleccionar cuál de los mensajes elegibles es el que sedevuelve realmente:

MOMSGIMOCORIMOGRPI

v Si hay un grupo o mensaje lógico actual, solo es elegible para devolución elsiguiente mensaje del grupo o el siguiente segmento de mensaje lógico, yesto no se puede alterar especificando opciones MO*.

En los dos casos anteriores, las opciones de emparejar que no son aplicables sepueden seguir especificando, pero el valor del campo pertinente del parámetroMSGDSC debe coincidir con el valor del campo correspondiente del mensaje quese ha de devolver; la llamada falla con el código de razón RC2247 cuando estacondición no se satisface.

GMMO se pasa por alto si se especifica GMMUC o GMBRWC.

Se pueden especificar una o más de las siguientes opciones de emparejar:

MQGMO - Opciones de obtener mensaje

72 Consulta de programación de aplicaciones (ILE RPG)

Page 87: amqwak00

MOMSGIRecuperar mensaje con identificador de mensaje especificado.

Esta opción especifica que el mensaje que se ha de recuperar debetener un identificador de mensaje que coincida con el valor del campoMDMID en el parámetro MSGDSC de la llamada MQGET. Esta coincidenciaes adicional respecto a cualquier otra coincidencia que pueda aplicarse(por ejemplo, el identificador de correlación).

Si esta opción no se especifica, el campo MDMID del parámetro MSGDSC sepasa por alto, y todo identificador de mensaje coincidirá.

Nota: El identificador de mensaje MINONE es un valor especial quecoincide con cualquier identificador de mensaje de la MQMD delmensaje. Por tanto, especificar MOMSGI con MINONE es lomismo que no especificar MOMSGI.

MOCORIRecuperar mensaje con identificador de correlación especificado.

Esta opción especifica que el mensaje que se ha de recuperar debetener un identificador de correlación que coincida con el valor delcampo MDCID en el parámetro MSGDSC de la llamada MQGET. Estacoincidencia es adicional respecto a cualquier otra coincidencia quepueda aplicarse (por ejemplo, el identificador de mensaje).

Si esta opción no se especifica, el campo MDCID del parámetro MSGDSC sepasa por alto, y todo identificador de correlación coincidirá.

Nota: El identificador de correlación CINONE es un valor especial quecoincide con cualquier identificador de correlación de la MQMDdel mensaje. Por tanto, especificar MOCORI con CINONE es lomismo que no especificar MOCORI.

MOGRPIRecuperar mensaje con identificador de grupo especificado.

Esta opción especifica que el mensaje que se ha de recuperar debetener un identificador de grupo que coincida con el valor del campoMDGID en el parámetro MSGDSC de la llamada MQGET. Esta coincidenciaes adicional respecto a cualquier otra coincidencia que pueda aplicarse(por ejemplo, el identificador de correlación).

Si esta opción no se especifica, el campo MDGID del parámetro MSGDSC sepasa por alto, y todo identificador de grupo coincidirá.

Nota: El identificador de grupo GINONE es un valor especial quecoincide con cualquier identificador de grupo de la MQMD delmensaje. Por tanto, especificar MOGRPI con GINONE es lomismo que no especificar MOGRPI.

MOSEQNRecuperar el mensaje que tiene el número de secuencia de mensajeespecificado.

Esta opción especifica que el mensaje que se ha de recuperar debetener un número de secuencia de mensaje que coincida con el valor delcampo MDSEQ del parámetro MSGDSC de la llamada MQGET. Estacoincidencia es adicional respecto a cualquier otra coincidencia quepueda aplicarse (por ejemplo, el identificador de grupo).

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 73

Page 88: amqwak00

Si esta opción no se especifica, el campo MDSEQ del parámetro MSGDSC sepasa por alto, y todo número de secuencia de mensaje coincidirá.

MOOFFSRecuperar el mensaje que tiene el desplazamiento especificado.

Esta opción especifica que el mensaje que se ha de recuperar debetener un desplazamiento que coincida con el valor del campo MDOFF delparámetro MSGDSC de la llamada MQGET. Esta coincidencia es adicionalrespecto a cualquier otra coincidencia que pueda aplicarse (porejemplo, el número de secuencia de mensaje).

Si esta opción no se especifica, el campo MDOFF del parámetro MSGDSC sepasa por alto, y todo desplazamiento coincidirá.

Si no se especifica ninguna de las opciones descritas, se puede utilizar lasiguiente opción:

MONONESin coincidencias.

Esta opción especifica que no se van a utilizar coincidencias alseleccionar el mensaje que se devolverá; por tanto, todos los mensajesde la cola son elegibles para recuperación (pero bajo el control de lasopciones GMAMSA, GMASGA y GMCMPM).

MONONE se define como ayuda para la documentación del programa.No se pretende que esta opción se utilice con ninguna otra opción,pero como su valor es cero no es posible detectar tal uso.

Es un campo de entrada. El valor inicial de este campo es MOMSGI conMOCORI. Esta campo no está presente si GMVER es menor que GMVER2.

Nota: El valor inicial del campo GMMO se define para la compatibilidad con losgestores de colas de MQSeries anteriores. Sin embargo, cuando se leeuna serie de mensajes en una cola sin utilizar criterios de selección, estevalor inicial requiere que la aplicación restablezca los campos MDMID yMDCID en MINONE y CINONE antes de cada llamada MQGET. Lanecesidad de restablecer MDMID y MDCID se puede evitar estableciendoGMVER en GMVER2 y GMMO en MONONE.

GMGST (serie de caracteres de 1 byte)Distintivo que indica si el mensaje recuperado está en un grupo.

Tiene uno de los siguientes valores:

GSNIGEl mensaje no está en un grupo.

GSMIGEl mensaje está en un grupo, pero no es el último del grupo.

GSLMIGEl mensaje es el último del grupo.

También es el valor devuelto si el grupo consta solamente de unmensaje.

Es un campo de salida. El valor inicial de este campo es GSNIG. Esta campono está presente si GMVER es menor que GMVER2.

MQGMO - Opciones de obtener mensaje

74 Consulta de programación de aplicaciones (ILE RPG)

Page 89: amqwak00

GMSST (serie de caracteres de 1 byte)Distintivo que indica si el mensaje recuperado es un segmento de un mensajelógico.

Tiene uno de los siguientes valores:

SSNSEGEl mensaje no es un segmento.

SSSEGEl mensaje es un segmento, pero no es el último segmento del mensajelógico.

SSLSEGEl mensaje es el último segmento del mensaje lógico.

También es el valor devuelto si el mensaje lógico consta solamente deun segmento.

Es un campo de salida. El valor inicial de este campo es SSNSEG. Esta campono está presente si GMVER es menor que GMVER2.

GMSEG (serie de caracteres de 1 byte)Distintivo que indica si se permite segmentación adicional para el mensajerecuperado.

Tiene uno de los siguientes valores:

SEGIHBNo se permite segmentación.

SEGALWSe permite segmentación.

Es un campo de salida. El valor inicial de este campo es SEGIHB. Esta campono está presente si GMVER es menor que GMVER2.

GMRE1 (serie de caracteres de 1 byte)Reservado.

Se trata de un campo reservado. El valor inicial de este campo es un carácteren blanco. Esta campo no está presente si GMVER es menor que GMVER2.

Los campos restantes no están presentes si GMVER es menor que GMVER3.

GMTOK (serie de bits de 16 bytes)Símbolo de mensaje.

Es un campo reservado; su valor no es significativo. Se define el siguientevalor especial:

MTKNONNo hay símbolo de mensaje.

El valor de la longitud del campo es cero binario.

La longitud de este campo la proporciona LNMTOK. El valor inicial del campoes MTKNON. Este campo no está presente si GMVER es menor que GMVER3.

GMRL (entero con signo de 10 dígitos)Longitud de los datos de mensaje devueltos (bytes).

MQGMO - Opciones de obtener mensaje

Capítulo 8. MQGMO - Opciones de obtener mensaje 75

|

|

||

Page 90: amqwak00

Es un campo reservado; su valor no es significativo. Se define el siguientevalor especial:

RLUNDFLongitud de los datos devueltos no definida.

En OS/390, el valor devuelto para el campo GMRL siempre es RLUNDF.

El valor inicial de este campo es RLUNDF. Este campo no está presente siGMVER es menor que GMVER3.

Valores iniciales y declaración RPGTabla 18. Valores iniciales de campos de MQGMO

Nombre de campo Nombre de constante Valor de constante

GMSID GMSIDV 'GMOb' (Ver nota 1)

GMVER GMVER1 1

GMOPT GMNWT 0

GMWI Ninguno 0

GMSG1 Ninguno 0

GMSG2 Ninguno 0

GMRQN Ninguno Blancos

GMMO MOMSGI + MOCORI 3

GMGST GSNIG 'b'

GMSST SSNSEG 'b'

GMSEG SEGIHB 'b'

GMRE1 Ninguno 'b'

GMTOK MTKNON Nulos

GMRL RLUNDF -1

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQGMOD*D* Identificador de estructuraD GMSID 1 4D* Número de versión de estructuraD GMVER 5 8I 0D* Opciones que controlan la acción de MQGETD GMOPT 9 12I 0D* Intervalo de esperaD GMWI 13 16I 0D* SeñalD GMSG1 17 20I 0D* Identificador de señalD GMSG2 21 24I 0D* Nombre resuelto de la cola destinoD GMRQN 25 72D* Opciones que controlan los criterios de selección usados para MQGETD GMMO 73 76I 0

MQGMO - Opciones de obtener mensaje

76 Consulta de programación de aplicaciones (ILE RPG)

||

||

|

||

|||

|||

Page 91: amqwak00

D* Distintivo que indica si el mensaje recuperado está en un grupoD GMGST 77 77D* Distintivo que indica si el mensaje recuperado es un segmentoD* de un mensaje lógicoD GMSST 78 78D* Distintivo que indica si se permite más segmentación para elD* mensaje recuperadoD GMSEG 79 79D* ReservadoD GMRE1 80 80D* Símbolo de mensajeD GMTOK 81 96D* Longitud de los datos de mensaje devueltos (bytes)D GMRL 97 100I 0

declaración RPG

Capítulo 8. MQGMO - Opciones de obtener mensaje 77

||||

Page 92: amqwak00

declaración RPG

78 Consulta de programación de aplicaciones (ILE RPG)

Page 93: amqwak00

Capítulo 9. MQIIH - Cabecera de puente IMS

En la siguiente tabla se resumen los campos de la estructura.

Tabla 19. Campos de MQIIH

Campo Descripción Página

IISID Identificador de estructura 80

IIVER Número de versión de estructura 80

IILEN Longitud de estructura MQIIH 80

IIFMT Nombre del formato MQ de los datos que siguena MQIIH

80

IIFLG Distintivos 81

IILTO Alteración temporal del terminal lógico 81

IIMMN Nombre de correlación de servicios de formato demensajes

81

IIRFM Nombre del formato MQ del mensaje de respuesta 81

IIAUT Contraseña o ticket de paso RACF™ 81

IITID Identificador de instancia de transacción 82

IITST Estado de transacción 82

IICMT Modalidad de compromiso 82

IISEC Ámbito de la seguridad 82

Visión generalLa estructura MQIIH describe la información que debe estar presente al principiode un mensaje enviado al puente IMS a través de MQSeries para OS/390. Elnombre del formato de esta estructura es FMIMS.

Son aplicables condiciones especiales para el juego de caracteres y la codificaciónque se utilizan para la estructura MQIIH y los datos de mensajes de aplicación:v Las aplicaciones que se conectan con el gestor de colas que posee la cola del

puente IMS deben proporcionar una estructura MQIIH que tenga el juego decaracteres y la codificación del gestor de colas. Esto se debe a que la conversiónde datos de la estructura MQIIH no se lleva a cabo en este caso.

v Las aplicaciones que se conectan a otros gestores de colas pueden proporcionaruna estructura MQIIH que tenga cualquiera de los juegos de caracteres ycodificaciones que se aceptan; la conversión de los datos de mensajes deaplicación y la MQIIH la lleva a cabo el gestor de colas, según convenga.

Nota: Existe una excepción a esta regla. Si el gestor de colas que posee la coladel puente IMS utiliza CICS para la gestión de colas distribuidas, laMQIIH debe tener el juego de caracteres y la codificación de ese gestor decolas.

v Los datos de mensajes de aplicación que siguen a la estructura MQIIH debentener el mismo juego de caracteres y la misma codificación que la estructura

© Copyright IBM Corp. 1994, 2000 79

Page 94: amqwak00

MQIIH. Los campos IICSI e IIENC de la estructura MQIIH no se pueden utilizarpara especificar el juego de caracteres y la codificación de los datos de mensajesde aplicación.

CamposIISID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

IISIDVIdentificador para la estructura de cabecera de información IMS.

El valor inicial de este campo es IISIDV.

IIVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

IIVER1Número de versión para la estructura de cabecera de información IMS.

La siguiente constante especifica el número de la versión actual:

IIVERCVersión actual de la estructura de cabecera de información IMS.

El valor inicial de este campo es IIVER1.

IILEN (entero con signo de 10 dígitos)Longitud de la estructura MQIIH.

El valor debe ser:

IILEN1Longitud de la estructura de cabecera de información IMS.

El valor inicial de este campo es IILEN1.

IIENC (entero con signo de 10 dígitos)Reservado.

Es un campo reservado; su valor no es significativo. El valor inicial de estecampo es 0.

IICSI (entero con signo de 10 dígitos)Reservado.

Es un campo reservado; su valor no es significativo. El valor inicial de estecampo es 0.

IIFMT (serie de caracteres de 8 bytes)Nombre del formato MQ de los datos que siguen a MQIIH.

Es el nombre del formato MQ de los datos de mensaje de aplicación quesiguen a la estructura MQIIH. Las reglas para codificarlo son las mismas quelas del campo MDFMT de MQMD.

MQIIH - Cabecera de puente IMS

80 Consulta de programación de aplicaciones (ILE RPG)

Page 95: amqwak00

La longitud de este campo la proporciona LNFMT. El valor inicial de estecampo es FMNONE.

IIFLG (entero con signo de 10 dígitos)Distintivos.

El valor debe ser:

IINONESin distintivos.

El valor inicial de este campo es IINONE.

IILTO (serie de caracteres de 8 bytes)Alteración temporal del terminal lógico.

Se sitúa en el campo IO PCB. Es opcional; si no se especifica se utiliza elnombre TPIPE. Se pasa por alto si el primer byte es blanco o nulo.

La longitud de este campo la proporciona LNLTOV. El valor inicial del camposon 8 caracteres en blanco.

IIMMN (serie de caracteres de 8 bytes)Nombre de correlación de servicios de formato de mensajes.

Se sitúa en el campo IO PCB. Es opcional. Para entrada representa el MID,para salida representa el MOD. Se pasa por alto si el primer byte es blanco onulo.

La longitud de este campo la proporciona LNMFMN. El valor inicial delcampo son 8 caracteres en blanco.

IIRFM (serie de caracteres de 8 bytes)Nombre del formato MQ del mensaje de respuesta.

Se trata del nombre del formato MQ del mensaje de respuesta que se enviaráen respuesta al mensaje actual. Las reglas para codificarlo son las mismas quelas del campo MDFMT de MQMD.

La longitud de este campo la proporciona LNFMT. El valor inicial de estecampo es FMNONE.

IIAUT (serie de caracteres de 8 bytes)Contraseña o ticket de paso RACF.

Es opcional; si se especifica, se utiliza con el ID de usuario en el contexto deseguridad de MQMD para construir un símboloU que se envía a IMS paraproporcionar un contexto de seguridad. Si no se especifica, el ID de usuario seutiliza sin verificación. Esto depende del establecimiento de conmutadoresRACF, que puede requerir que haya presente un autentificador.

Se pasa por alto si el primer byte es blanco o nulo. Se pueden utilizar lossiguientes valores especiales:

IAUNONSin autentificación.

La longitud de este campo la proporciona LNAUTH. El valor inicial de estecampo es IAUNON.

MQIIH - Cabecera de puente IMS

Capítulo 9. MQIIH - Cabecera de puente IMS 81

Page 96: amqwak00

IITID (serie de bits de 16 bytes)Identificador de instancia de transacción.

Este campo lo utilizan los mensajes de salida desde IMS, y por tanto se pasapor alto en la primera entrada. Si IITST se establece en ITSIC, debeproporcionarse en la siguiente entrada y en todas las entradas subsiguientespara permitir que IMS correlacione los mensajes con la conversación correcta.Se pueden utilizar los siguientes valores especiales:

ITINONSin ID de instancia de transacción.

La longitud de este campo la proporciona LNTIID. El valor inicial de estecampo es ITINON.

IITST (serie de caracteres de 1 byte)Estado de transacción.

Indica el estado de conversación de IMS. Se pasa por alto en la primeraentrada porque no existe conversación. En entradas subsiguientes indica si unaconversación está o no está activa. Para salida lo establece IMS. El valor debeser uno de los siguientes:

ITSIC En conversación.

ITSNICNo en conversación.

ITSARCDevolver datos de estado de transacción en formato de arquitectura.

Este valor solo se utiliza con el mandato IMS /DISPLAY TRAN. Hace quelos datos del estado de la transacción se devuelvan con el formato dearquitectura IMS en lugar del formato de tipo carácter. Consulte lapublicación MQSeries Application Programming Guide para obtenerinformación detallada.

El valor inicial de este campo es ITSNIC.

IICMT (serie de caracteres de 1 byte)Modalidad de compromiso.

Consulte la publicación OTMA Reference para obtener más información acercade las modalidades de compromiso IMS. El valor debe ser uno de lossiguientes:

ICMCTSComprometer y luego enviar.

Esta modalidad implica una puesta en cola doble de salida, perotiempos de ocupación de región más cortos. Las transacciones demétodo rápido y conversacionales no se pueden ejecutar con estamodalidad.

ICMSTCEnviar y luego comprometer.

El valor inicial de este campo es ICMCTS.

IISEC (serie de caracteres de 1 byte)Ámbito de la seguridad.

MQIIH - Cabecera de puente IMS

82 Consulta de programación de aplicaciones (ILE RPG)

Page 97: amqwak00

Indica el proceso de seguridad de IMS deseado. Se definen los siguientesvalores:

ISSCHKComprobar ámbito de seguridad.

Se construye un ACEE en la región de control, pero no en la regióndependiente.

ISSFULÁmbito de seguridad completa.

Se construye un ACEE en antememoria en la región de control y unACEE no en antememoria en la región dependiente. Si utiliza ISSFUL,debe asegurarse de que el ID de usuario para el que se construye elACEE tiene acceso a los recursos utilizados en la región dependiente.

Si no se especifica ISSCHK ni ISSFUL para este campo, se presupone ISSCHK.

El valor inicial de este campo es ISSCHK.

IIRSV (serie de caracteres de 1 byte)Reservado.

Es un campo reservado; debe estar en blanco.

Valores iniciales y declaración RPGTabla 20. Valores iniciales de los campos de MQIIH

Nombre de campo Nombre de constante Valor de constante

IISID IISIDV 'IIHb' (Ver nota 1)

IIVER IIVER1 1

IILEN IILEN1 84

IIENC Ninguno 0

IICSI Ninguno 0

IIFMT FMNONE 'bbbbbbbb'

IIFLG IINONE 0

IILTO Ninguno 'bbbbbbbb'

IIMMN Ninguno 'bbbbbbbb'

IIRFM FMNONE 'bbbbbbbb'

IIAUT IAUNON 'bbbbbbbb'

IITID ITINON Nulos

IITST ITSNIC 'b'

IICMT ICMCTS '0'

IISEC ISSCHK 'C'

IIRSV Ninguno 'b'

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

MQIIH - Cabecera de puente IMS

Capítulo 9. MQIIH - Cabecera de puente IMS 83

||

|

Page 98: amqwak00

Declaración RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQIIHD*D* Identificador de estructuraD IISID 1 4D* Número de versión de estructuraD IIVER 5 8I 0D* Longitud de la estructura MQIIHD IILEN 9 12I 0D* ReservadoD IIENC 13 16I 0D* ReservadoD IICSI 17 20I 0D* Nombre del formato MQ de los datos que siguen a MQIIHD IIFMT 21 28D* DistintivosD IIFLG 29 32I 0D* Alteración temporal de terminal lógicoD IILTO 33 40D* Nombre de correlación de servicios de formato de mensajesD IIMMN 41 48D* Nombre del formato MQ del mensaje de respuestaD IIRFM 49 56D* Contraseña o ticket de paso RACFD IIAUT 57 64D* Identificador de instancia de transacciónD IITID 65 80D* Estado de transacciónD IITST 81 81D* Modalidad de compromisoD IICMT 82 82D* Ámbito de seguridadD IISEC 83 83D* ReservadoD IIRSV 84 84

MQIIH - Cabecera de puente IMS

84 Consulta de programación de aplicaciones (ILE RPG)

Page 99: amqwak00

Capítulo 10. MQMD - Descriptor de mensaje

En la siguiente tabla se resumen los campos de la estructura.

Tabla 21. Campos de MQMD

Campo Descripción Página

MDSID Identificador de estructura 87

MDVER Número de versión de estructura 87

MDREP Opciones para mensajes de informe. 87

MDMT Tipo de mensaje 98

MDEXP Duración del mensaje 99

MDFB Código de información de retorno o de razón 101

MDENC Codificación numérica de datos de mensaje 105

MDCSI Identificador de juego de caracteres de los datosde mensaje

106

MDFMT Nombre del formato de los datos de mensaje 107

MDPRI Prioridad de mensaje 111

MDPER Permanencia de mensaje 112

MDMID Identificador de mensaje 113

MDCID Identificador de correlación 115

MDBOC Contador de restitución 116

MDRQ Nombre de la cola de respuestas 116

MDRM Nombre del gestor de la cola de respuestas 117

MDUID Identificador de usuario 118

MDACC Símbolo de contabilidad 119

MDAID Datos de la aplicación relacionados con laidentidad

120

MDPAT Tipo de aplicación que puso el mensaje 121

MDPAN Nombre de la aplicación que puso el mensaje 123

MDPD Fecha en la que se puso el mensaje 123

MDPT Hora a la que se puso el mensaje 124

MDAOD Datos de aplicación relacionados con el origen 125

Nota: Los campos restantes no están presentes si MDVER es menor que MDVER2.

MDGID Identificador de grupo 126

MDSEQ Número de secuencia que el mensaje lógico tienedentro del grupo

127

MDOFF Desplazamiento de datos del mensaje físico desdeel principio del mensaje lógico

127

MDMFL Distintivos de mensaje 128

MDOLN Longitud del mensaje original 133

© Copyright IBM Corp. 1994, 2000 85

Page 100: amqwak00

Visión generalLa estructura MQMD contiene la información de control que acompaña a los datosde la aplicación cuando un mensaje viaja entre las aplicaciones emisora yreceptora.

Los datos de tipo carácter del descriptor de mensaje tienen el juego de caracteresdel gestor de colas al que está conectada la aplicación; esto lo establece el atributode gestor de colas CodedCharSetId. Los datos numéricos del descriptor de mensajetienen la codificación nativa de la máquina (indicada por ENNAT).

Si los gestores de colas emisor y receptor utilizan distintos juegos de caracteres ocodificaciones, los datos del descriptor de mensaje se convierten automáticamente(no es necesario que la aplicación receptora realice esas conversiones).

Si los datos del mensaje de la aplicación necesitan convertirse, esta operaciónpuede llevarla a cabo una rutina de salida escrita por usuario invocada alrecuperar el mensaje mediante la llamada MQGET. Para obtener más información,consulte lo siguiente:v La opción GMCONV que se describe en el “Capítulo 8. MQGMO - Opciones de

obtener mensaje” en la página 51v La nota de utilización que describe GMCONV en el “Capítulo 30. MQGET -

Obtener mensaje” en la página 241v La publicación MQSeries Application Programming Guide

Cuando un mensaje se encuentra en una cola de transmisión, algunos de loscampos de MQMD se establecen en valores determinados; consulte el “Capítulo 21.MQXQH - Cabecera de cola de transmisión” en la página 203 para obtenerinformación detallada.

La versión actual de MQMD es MDVER2. Los campos que existen solamente en laestructura de la versión 2 se identifican como tales en las descripciones que siguen.La declaración de MQMD proporcionada en el archivo COPY contiene los camposnuevos, pero el valor inicial proporcionado para el campo MDVER es MDVER1; estogarantiza la compatibilidad con las versiones existentes. Para utilizar los camposnuevos, la aplicación debe establecer el número de versión en MDVER2. Existe unadeclaración disponible para la estructura de la versión 1 con el nombre MQMD1.Las aplicaciones que se pretende que sean portables entre varios entornos debenutilizar la versión 2 de MQGM solamente si todos esos entornos soportan dichaversión.

Utilizar la versión 2 de MQMD suele ser equivalente a utilizar la versión 1,poniendo como prefijo a los datos del mensaje de la aplicación una estructuraMQMDE. Sin embargo, si todos los campos de la estructura MQMDE tienen susvalores por omisión, la MQMDE se puede pasar por alto. La versión 1 de MQMDjunto con MQMDE se utilizan de la siguiente forma:v En las llamadas MQPUT y MQPUT1, si la aplicación proporciona la versión 1 de

la MQMD, tiene la opción de poner como prefijo a los datos del mensaje unaMQMDE, estableciendo el campo MDFMT de MQMD en FMMDE para indicar quehay presente una MQMDE. Si la aplicación no proporciona una MQMDE, elgestor de colas presupone valores por omisión para los campos de la MQMDE.

Nota: Varios de los campos que existen en la versión 2 de MQMD, pero no en laversión 1, son campos de entrada/salida en MQPUT y MQPUT1. Sinembargo, el gestor de colas no devuelve ningún valor en los campos

MQMD - Descriptor de mensaje

86 Consulta de programación de aplicaciones (ILE RPG)

Page 101: amqwak00

equivalentes de la MQMDE en la salida de las llamadas MQPUT yMQPUT1; si la aplicación requiere esos valores de salida, debe utilizar laversión 2 de MQMD.

v En la llamada MQGET, si la aplicación proporciona la versión 1 de MQMD, elgestor de colas pone como prefijo al mensaje devuelto una MQMDE, perosolamente si uno o más de los campos de la MQMDE tiene un valor que no esel valor por omisión. El campo MDFMT en MQMD tendrá el valor FMMDE paraindicar que hay una MQMDE presente.

Los valores por omisión que el gestor de colas utilizó para los campos de laMQMDE son los mismos que los valores iniciales de esos campos, mostrados en laTabla 25 en la página 141.

Esta estructura es un parámetro de entrada/salida para las llamadas MQGET,MQPUT y MQPUT1.

CamposMDSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

MDSIDVIdentificador de la estructura del descriptor de mensaje.

Siempre es un campo de entrada. El valor inicial de este campo es MDSIDV.

MDVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser uno de los siguientes:

MDVER1Estructura de descriptor de mensaje de la versión 1.

MDVER2Estructura de descriptor de mensaje de la versión 2.

Los campos que existen solamente en la estructura de la versión 2 seidentifican como tales en las descripciones que siguen.

Nota: Cuando se utiliza la versión 2 de MQMD, el gestor de colaslleva a cabo comprobaciones adicionales en cualquier estructurade cabecera de MQ que pueda haber presente al principio de losdatos del mensaje de la aplicación; para obtener informaciónmás detallada consulte la nota de utilización 4 en la página 285para la llamada MQPUT.

La siguiente constante especifica el número de la versión actual:

MDVERCVersión actual de la estructura de descriptor de mensaje.

Siempre es un campo de entrada. El valor inicial de este campo es MDVER1.

MDREP (entero con signo de 10 dígitos)Opciones para mensajes de informe.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 87

Page 102: amqwak00

Un mensaje de informe es un mensaje sobre otro mensaje que se utiliza parainformar a una aplicación sobre los sucesos esperados o inesperadosrelacionados con el mensaje original. El campo MDREP permite que la aplicaciónque envía el mensaje original especifique los mensajes de informe necesarios, siestos deben incluir los datos de mensaje de aplicación, así como el modo enque deben establecerse los identificadores de correlación y de mensaje en losmensajes de informe o de respuesta (tanto para los informes como para lasrespuestas). Pueden solicitarse varios o todos los tipos de informe siguientes (oninguno):v De excepciónv De caducidadv Confirmación a la llegada (COA)v Confirmación a la entrega (COD)v Notificación de acción positiva (PAN)v Notificación de acción negativa (NAN)

Si se necesita más de un tipo de mensaje de informe, o se necesitan otrasopciones de informe, los valores se pueden añadir juntos (no añada la mismaconstante más de una vez).

La aplicación que recibe el mensaje de informe puede determinar la razón porla que se generó el informe examinando el campo MDFB en la MQMD; vea elcampo MDFB para obtener información más detallada.

Opciones de excepción: puede especificar una de las opciones enumeradas acontinuación para solicitar un mensaje de informe de excepción.

ROEXCSe requieren informes de excepción.

Un agente de canal de mensajes puede generar este tipo de informecuando se envía un mensaje a otro gestor de colas y el mensaje nopuede entregarse en la cola destino especificada. Por ejemplo, la coladestino o una cola de transmisión intermedia pueden estar llenas, o elmensaje puede ser demasiado grande para la cola.

La generación del mensaje de informe de excepción depende de lapermanencia del mensaje original y de la velocidad del canal demensajes (normal o rápida) por el que viaja el mensaje original:v Para todos los mensajes permanentes y los mensajes no permanentes

que viajan a través de canales de mensajes normales, el informe deexcepción se genera únicamente si se puede completar de formasatisfactoria la acción especificada por la aplicación emisora para lacondición de error. La aplicación emisora puede especificar una delas siguientes acciones para controlar la disposición del mensajeoriginal cuando surge la condición de error:– RODLQ (hace que el mensaje original se coloque en la cola de

mensajes no entregados).– RODISC (hace que el mensaje original se descarte).

Si la acción especificada por la aplicación emisora no puedecompletarse satisfactoriamente, el mensaje original se deja en la colade transmisión y no se genera ningún informe de excepción.

v Para mensajes no permanentes que viajan a través de canales demensajes rápidos, el mensaje original se elimina de la cola detransmisión y el informe de excepción se genera aunque la acciónespecificada para la condición de error no se pueda completarsatisfactoriamente. Por ejemplo, si se especifica RODLQ, pero el

MQMD - Descriptor de mensaje

88 Consulta de programación de aplicaciones (ILE RPG)

Page 103: amqwak00

mensaje original no se puede colocar en la cola de mensajes noentregados porque (supongamos) esa cola está llena, el mensaje deinforme de excepción se genera y el mensaje original se descarta.Consulte el manual MQSeries Intercommunication para obtener másinformación acerca de los canales de mensajes normales y rápidos.

No se genera un informe de excepción si la aplicación que transfirió elmensaje original puede recibir notificación acerca del problema demanera síncrona mediante el código de razón devuelto por la llamadaMQPUT o MQPUT1.

Las aplicaciones también pueden enviar informes de excepción paraindicar que un mensaje recibido no puede procesarse (por ejemplo,porque se trata de una transacción de débito que haría que la cuentasobrepasase su límite de crédito).

Los datos del mensaje original no se incluyen en el mensaje deinforme.

No especifique más de un valor ROEXC, ROEXCD y ROEXCF.

ROEXCDSe requieren informes de excepción con datos.

Es lo mismo que ROEXC, salvo en que los primeros 100 bytes de losdatos de mensaje de aplicación del mensaje original se incluyen en elmensaje de informe. Si la longitud de los datos del mensaje original esinferior a 100 bytes, la longitud de los datos del mensaje del informeserá la misma.

No especifique más de un valor ROEXC, ROEXCD y ROEXCF.

ROEXCFSe requieren informes de excepción con datos completos.

Es lo mismo que ROEXC, salvo en que todos los datos de mensaje deaplicación del mensaje original se incluyen en el mensaje de informe.

No especifique más de un valor ROEXC, ROEXCD y ROEXCF.

Opciones de caducidad: puede especificar una de las opciones que seenumeran a continuación para solicitar un mensaje de informe de caducidad.

ROEXPSe requieren informes de caducidad.

El gestor de colas genera este tipo de informe si el mensaje se descartaantes de entregarse a una aplicación porque ya ha transcurrido eltiempo de caducidad (vea el campo MDEXP). Si no se establece estaopción, no se genera ningún mensaje de informe si se descarta unmensaje por este motivo (aunque se especifique una de las opcionesROEXC*).

Los datos del mensaje original no se incluyen en el mensaje deinforme.

No especifique más de un valor ROEXP, ROEXPD y ROEXPF.

ROEXPDSe requieren informes de caducidad con datos.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 89

Page 104: amqwak00

Es lo mismo que ROEXP, salvo en que los primeros 100 bytes de losdatos de mensaje de aplicación del mensaje original se incluyen en elmensaje de informe. Si la longitud de los datos del mensaje original esinferior a 100 bytes, la longitud de los datos del mensaje del informeserá la misma.

No especifique más de un valor ROEXP, ROEXPD y ROEXPF.

ROEXPFSe requieren informes de caducidad con datos completos.

Es lo mismo que ROEXP, salvo en que todos los datos de mensaje deaplicación del mensaje original se incluyen en el mensaje de informe.

No especifique más de un valor ROEXP, ROEXPD y ROEXPF.

Opciones de confirmar al llegar: puede especificar una de las opciones que seenumeran a continuación para solicitar un mensaje de informe de confirmar alllegar.

ROCOASe requieren informes de confirmar al llegar.

El gestor de colas que es propietario de la cola destino genera este tipode informe cuando el mensaje se coloca en la cola destino. Los datosdel mensaje original no se incluyen en el mensaje de informe.

Si el mensaje se transfiere como parte de una unidad de trabajo y lacola destino es una cola local, el mensaje de informe COA generadopor el gestor de colas pasará a estar disponible para recuperaciónúnicamente si se compromete la unidad de trabajo, y en el momentoen que tiene lugar este compromiso.

No se genera un informe COA si el campo MDFMT del descriptor demensaje es FMXQH o FMDLH. Esto evita que se genere un informeCOA si el mensaje se pone en una cola de transmisión, o si no puedeentregarse y se pone en una cola de mensajes no entregados.

No especifique más de un valor ROCOA, ROCOAD y ROCOAF.

ROCOADSe requieren informes de confirmar al llegar con datos.

Es lo mismo que ROCOA, salvo en que los primeros 100 bytes de losdatos de mensaje de aplicación del mensaje original se incluyen en elmensaje de informe. Si la longitud de los datos del mensaje original esinferior a 100 bytes, la longitud de los datos del mensaje del informeserá la misma.

No especifique más de un valor ROCOA, ROCOAD y ROCOAF.

ROCOAFSe requieren informes de confirmar al llegar con datos completos.

Es lo mismo que ROCOA, salvo en que todos los datos de mensaje deaplicación del mensaje original se incluyen en el mensaje de informe.

No especifique más de un valor ROCOA, ROCOAD y ROCOAF.

Opciones de confirmar al entregar: puede especificar una de las opciones quese enumeran a continuación para solicitar un mensaje de informe de confirmaral entregar.

MQMD - Descriptor de mensaje

90 Consulta de programación de aplicaciones (ILE RPG)

Page 105: amqwak00

ROCODSe requieren informes de confirmar al entregar.

El gestor de colas genera este tipo de informe cuando una aplicaciónrecupera el mensaje de la cola destino de tal forma que hace que estese suprima de la cola. Los datos del mensaje original no se incluyen enel mensaje de informe.

Si el mensaje se recupera como parte de una unidad de trabajo, elmensaje de informe se genera en la propia unidad de trabajo, por loque no está disponible hasta que esta se comprometa. Si la unidad detrabajo se restituye, el informe no se envía.

No se genera un informe COD si el campo MDFMT del descriptor demensaje es FMDLH. Esto evita que se genere un informe COD si elmensaje no puede entregarse y se pone en una cola de mensajes noentregados.

ROCOD no es válido si la cola destino es una cola XCF.

No especifique más de un valor ROCOD, ROCODD y ROCODF.

ROCODDSe requieren informes de confirmar al entregar con datos.

Es lo mismo que ROCOD, salvo en que los primeros 100 bytes de losdatos de mensaje de aplicación del mensaje original se incluyen en elmensaje de informe. Si la longitud de los datos del mensaje original esinferior a 100 bytes, la longitud de los datos del mensaje del informeserá la misma.

Si se especifica GMATM en la llamada MQGET para el mensajeoriginal, y el mensaje devuelto se trunca, la cantidad de datos demensaje colocados en el mensaje de informe depende del entorno:v En OS/390, es la mínima de las siguientes cantidades:

– La longitud del mensaje original– La longitud del almacenamiento intermedio utilizado para

recuperar el mensaje– 100 bytes.

v En otros entornos, es la mínima de las siguientes cantidades:– La longitud del mensaje original– 100 bytes.

ROCODD no es válido si la cola destino es una cola XCF.

No especifique más de un valor ROCOD, ROCODD y ROCODF.

ROCODFSe requieren informes de confirmar al entregar con datos completos.

Es lo mismo que ROCOD, salvo en que todos los datos de mensaje deaplicación del mensaje original se incluyen en el mensaje de informe.

ROCODF no es válido si la cola destino es una cola XCF.

No especifique más de un valor ROCOD, ROCODD y ROCODF.

Opciones de notificación de acción: puede especificar una o ambas de lasopciones enumeradas a continuación para solicitar que la aplicación receptoraenvíe un mensaje de informe de acción positiva o negativa.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 91

|||

|||||

|||

|

Page 106: amqwak00

ROPANSe requieren informes de notificación de acción positiva.

Este tipo de informe lo genera la aplicación que recupera el mensaje yactúa sobre él. Indica que la acción solicitada en el mensaje se hallevado a cabo satisfactoriamente. La aplicación que genera el informedetermina si se han de incluir o no datos con el informe.

Aparte de transmitir esta petición a la aplicación que recupera elmensaje, el gestor de colas no realiza ninguna acción en función deesta opción. Es responsabilidad de la aplicación que recupera generarel informe, si ello es conveniente.

RONANSe requieren informes de notificación de acción negativa.

Este tipo de informe lo genera la aplicación que recupera el mensaje yactúa sobre él. Indica que la acción solicitada en el mensaje no se hallevado a cabo satisfactoriamente. La aplicación que genera el informedetermina si se han de incluir o no datos con el informe. Por ejemplo,puede ser conveniente incluir algunos datos que indiquen por qué lapetición no pudo llevarse a cabo.

Aparte de transmitir esta petición a la aplicación que recupera elmensaje, el gestor de colas no realiza ninguna acción en función deesta opción. Es responsabilidad de la aplicación que recupera generarel informe, si ello es conveniente.

La aplicación es responsable de determinar qué condiciones se correspondencon una acción positiva y qué otras condiciones se corresponden con unaacción negativa. Sin embargo, si la petición solo se ha llevado a caboparcialmente, es aconsejable que se genere un informe NAN en lugar de uninforme PAN, si se solicita. También es aconsejable que cada condición posiblese corresponda con una acción positiva o con una acción negativa, pero no conambas.

Opciones de identificador de mensaje: puede especificar una de las opcionesque se enumeran a continuación para controlar cómo se va a establecer elMDMID del mensaje de informe (o del mensaje de respuesta).

RONMINuevo identificador de mensaje.

Esta es la acción por omisión e indica que si se genera un informe orespuesta como resultado del mensaje, deberá generarse un nuevoMDMID para el mensaje de informe o de respuesta.

ROPMIPasar identificador de mensaje.

Si se genera un informe o una respuesta a consecuencia de estemensaje, el MDMID del mensaje deberá copiarse en el MDMID del mensajede informe o de respuesta.

Si no se especifica esta opción, se presupone RONMI.

Opciones de identificador de correlación: puede especificar una de lasopciones que se enumeran a continuación para controlar cómo se va aestablecer el MDCID del mensaje de informe (o del mensaje de respuesta).

MQMD - Descriptor de mensaje

92 Consulta de programación de aplicaciones (ILE RPG)

Page 107: amqwak00

ROCMTCCopiar el identificador del mensaje en el identificador de correlación.

Esta es la acción por omisión e indica que si se genera un informe orespuesta como resultado del mensaje, el MDMID del mensaje deberácopiarse en el MDCID del mensaje de informe o de respuesta.

ROPCIPasar identificador de correlación.

Si se genera un informe o una respuesta a consecuencia de estemensaje, el MDCID del mensaje deberá copiarse en el MDCID del mensajede informe o de respuesta.

Si no se especifica esta opción, se presupone ROCMTC.

Es aconsejable utilizar servidores que respondan a peticiones o generenmensajes de informe para comprobar si las opciones ROPMI o ROPCI estabanestablecidas en el mensaje original. Si lo estaban, los servidores deberánrealizar la acción descrita para dichas opciones. Si no están establecidas, losservidores deberán realizar la acción por omisión correspondiente.

Opciones de disposición: puede especificar una de las opciones que seenumeran a continuación para controlar la disposición del mensaje originalcuando no puede entregarse en la cola destino. Estas opciones solo sonaplicables en situaciones en las que el resultado sería la generación de unmensaje de informe de excepción si la aplicación emisorad hubiese solicitadouno. La aplicación puede establecer las opciones de disposiciónindependientemente de los informes de excepción solicitantes.

RODLQColocar el mensaje en la cola de mensajes no entregados.

Es la acción por omisión e indica que el mensaje debe colocarse en lacola de mensajes no entregados si este no puede entregarse en la coladestino. Se generará un mensaje de informe de excepción si el emisorlo ha solicitado.

RODISCDescartar mensaje.

Indica que debe descartarse el mensaje si no puede entregarse en lacola destino. Se generará un mensaje de informe de excepción si elemisor lo ha solicitado.

Si se desea devolver el mensaje original al emisor, sin que el mensajeoriginal se coloque en la cola de mensajes no entregados, el emisordebe especificar RODISC con ROEXCF.

Opción por omisión: puede especificar lo siguiente si no se requieren opcionesde informe:

RONONENo se requiere ningún informe.

Este valor puede utilizarse para indicar que no se han especificadootras opciones. RONONE se ha definido como ayuda para ladocumentación del programa. No se pretende que esta opción se utilicecon ninguna otra opción, pero como su valor es cero no es posibledetectar tal uso.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 93

Page 108: amqwak00

Información general: la aplicación que envía el mensaje original debe solicitarde manera específica todos los tipos de informe necesarios. Por ejemplo, si sesolicita un informe COA pero no se solicita un informe de excepción, se generaun informe COA cuando el mensaje se coloca en la cola destino, pero no segenera un informe de excepción si la cola destino está llena cuando llega elmensaje. Si no se establece ninguna opción MDREP, ni el gestor de colas ni elagente de canal de mensajes (MCA) generan mensajes de informe.

Algunas opciones de informe se pueden especificar incluso aunque el gestor decolas local no las reconozca. Esto resulta útil cuando la opción la va a procesarel gestor de colas destino. Consulte el “Apéndice E. Opciones de informe” en lapágina 481 para obtener información más detallada.

Si se solicita un mensaje de informe, el nombre de la cola a la que debeenviarse el informe debe especificarse en el campo MDRQ. Cuando se recibe unmensaje de informe, la naturaleza del informe podrá determinarse examinandoel campo MDFB del descriptor de mensaje.

Si el gestor de colas o el MCA que genera un mensaje de informe no puedeponerlo en la cola de respuestas (por ejemplo, porque la cola de respuestas ode transmisión está llena), el mensaje de informe se coloca en la cola demensajes no entregados. Si esto tampoco funciona, o si no hay una cola demensajes no entregados, la acción que debe efectuarse depende del tipo demensaje de informe:v Si se trata de un informe de excepción, el mensaje que ha dado lugar a la

generación de este informe permanece en su cola de transmisión, lo cualgarantiza que no se perderá.

v Para todos los demás tipos de informe, el mensaje de informe se descarta yel proceso continúa con normalidad. Si ocurre esto, significa que el mensajeoriginal ya se ha entregado con plenas garantías (en mensajes de informeCOA o COD) o que ya no es preciso conservarlo (en mensajes de informe decaducidad).

Una vez que el mensaje de informe se ha colocado con éxito en una cola (yasea la cola destino o una cola de transmisión intermedia), el mensaje deja deestar sujeto a un proceso especial (pasa a tratarse como cualquier otromensaje).

Cuando se genera el informe, la cola MDRQ se abre y el mensaje de respuesta setransfiere utilizando la autorización de MDUID en la MQMD del mensaje quecausa el informe, salvo en los casos siguientes:v Los informes de excepción generados por un MCA receptor se transfieren

con la autorización que el MCA ha utilizado al intentar transferir el mensajecausante del informe. El atributo de canal CDPA determina el identificador deusuario que se utiliza.

v Los informes COA generados por el gestor de colas se transfieren con laautorización que se utilizó cuando el mensaje que es causa del informe setransfirió al gestor de colas que genera el informe. Por ejemplo, si el mensajelo transfirió un MCA receptor utilizando el identificador de usuario delMCA, el gestor de colas transfiere el informe COA utilizando el identificadorde usuario del MCA.

Las aplicaciones que generan informes deben utilizar, por lo general, la mismaautorización que habrían utilizado para generar una respuesta, y que suelecoincidir con la autorización del identificador de usuario del mensaje original.

MQMD - Descriptor de mensaje

94 Consulta de programación de aplicaciones (ILE RPG)

|||

||||

||||||

Page 109: amqwak00

Si el informe debe ir a un destino remoto, los emisores y los receptores puedendecidir si lo aceptan o no, exactamente igual que para los demás mensajes.

Si se solicita un mensaje de informe con datos:v El mensaje de informe siempre se genera con el volumen de datos solicitado

por el emisor del mensaje original. Si el mensaje de informe resultademasiado grande para la cola de respuestas, tendrá lugar el procesodescrito anteriormente; el mensaje de informe nunca se trunca para ajustarsea la cola de respuestas.

v Si el MDFMT del mensaje original es FMXQH, los datos incluidos en el informeno incluyen el MQXQH. Los datos del informe empiezan por el primer bytede los datos más allá de MQXQH en el mensaje original. Esta situación se datanto si la cola es una cola de transmisión como si no lo es.

Si se recibe un mensaje de informe de caducidad, COA o COD en la cola derespuestas, esto garantiza que el mensaje original ha llegado, se ha entregado oha caducado, según sea el caso. No obstante, si se ha solicitado uno de estosmensajes de informe, o varios, y no se han recibido, no puede deducirse deesta circunstancia lo contrario, ya que puede haberse producido una de lassiguientes situaciones:1. El mensaje de informe está retenido porque hay algún problema en el

enlace.2. El mensaje de informe está retenido porque existe una condición de

bloqueo en una cola de transmisión intermedia o en la cola de respuestas(por ejemplo, la cola está llena o no permite transferencias).

3. El mensaje de informe está en una cola de mensajes no entregados.4. Cuando el gestor de colas intentaba generar el mensaje de informe no ha

podido ponerlo en la cola apropiada ni tampoco lo ha podido poner en lacola de mensajes no entregados, por lo que finalmente no lo ha podidogenerar.

5. Se ha producido un error en el gestor de colas entre la acción de la que seestá informando (llegada, entrega o caducidad) y la generación del mensajede informe correspondiente. (Esto no ocurre con los mensajes de informeCOD si la aplicación recupera el mensaje original dentro de la unidad detrabajo, ya que el mensaje de informe COD se genera en la misma unidadde trabajo.)

Los mensajes de informe de excepción también pueden retenerse por lasmismas causas descritas en los puntos 1, 2 y 3. No obstante, cuando un MCAno puede generar un mensaje de informe de excepción (este mensaje no sepuede poner en la cola de respuestas ni en la cola de mensajes no entregados),el mensaje original permanece en la cola de transmisión situada en el emisor yel canal se cierra. Esta operación tiene lugar independientemente de que elmensaje de informe se haya generado en el extremo receptor o emisor delcanal.

Si el mensaje original está bloqueado temporalmente (dando como resultado lageneración de un mensaje de informe de excepción y la transferencia delmensaje original a una cola de mensajes no entregados), pero el bloqueodesaparece y una aplicación lee el mensaje original de la cola de mensajes noentregados y lo vuelve a transferir a su destino, puede suceder lo siguiente:v A pesar de haberse generado un mensaje de informe de excepción, el

mensaje original acaba llegando de forma satisfactoria a su destino.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 95

Page 110: amqwak00

v Se genera más de un mensaje de informe de excepción para un solo mensajeoriginal, puesto que el mensaje original puede encontrar otro bloqueoposteriormente.

Mensajes de informe para segmentos de mensaje: se pueden solicitarmensajes de informe para mensajes en los que se permite la segmentación (veala descripción del distintivo MFSEGA). Si el gestor de colas considera necesariosegmentar el mensaje, se puede generar un mensaje de informe para cada unode los segmentos que encuentre posteriormente la condición pertinente. Porconsiguiente, las aplicaciones deben estar preparadas para recibir variosmensajes de informe para cada tipo de mensaje de informe solicitado. Elcampo MDGID del mensaje de informe se puede utilizar para correlacionar losdiferentes informes con el identificador de grupo del mensaje original, y elcampo MDFB utilizado para identificar el tipo al que corresponde cada mensajede informe.

Si se utiliza GMLOGO para recuperar mensajes de informe para segmentos,tenga en cuenta que las llamadas MQGET sucesivas puede devolver informesde diferentes tipos. Por ejemplo, si se solicitan informes COA y COD para unmensaje que el gestor de colas ha segmentado, las llamadas MQGET para losmensajes de informe pueden devolver los mensajes de informe COA y CODintercalados de manera imprevisible. Esto se puede evitar utilizando la opciónGMCMPM (opcionalmente con GMATM). GMCMPM hace que el gestor decolas reensamble los mensajes de informe que tienen el mismo tipo de informe.Por ejemplo, la primera llamada MQGET podría reensamblar todos losmensajes COA relacionados con el mensaje original, y la segunda llamadaMQGET podría reensamblar todos los mensajes COD. El que se reensamblenprimero unos u otros dependerá del tipo de mensaje de informe que aparezcaprimero en la cola.

Las aplicaciones que transfieren segmentos pueden especificar distintasopciones de informe para cada segmento. Sin embargo, hay que tener encuenta los siguientes puntos:v Si los segmentos se recuperan utilizando la opción GMCMPM, el gestor de

colas solamente satisface las opciones de informe del primer segmento.v Si los segmentos se recuperan de uno en uno, y la mayor parte de ellos

tienen una de las opciones ROCOD*, pero como mínimo uno de lossegmentos no las tiene, no será posible utilizar la opción GMCMPM pararecuperar los mensajes de informe con una única llamada MQGET, niutilizar la opción GMASGA para detectar cuándo han llegado todos losmensajes de informe.

En una red MQ, es posible que los gestores de colas tengan posibilidadesdiferenciadas. Si un mensaje de informe para un segmento lo genera un gestorde colas o MCA que no acepta la segmentación, el gestor de colas o MCA noincluirá por omisión en el mensaje de informe la información de segmentonecesaria, y esto puede hacer que sea difícil identificar el mensaje original queprovocó la generación del informe. Esta dificultad se puede evitar solicitandodatos con el mensaje de informe, es decir, especificando las opciones RO*D oRO*F adecuadas. Sin embargo, tenga en cuenta que si se especifica RO*D,pueden devolverse menos de 100 bytes de datos de mensaje de aplicación a laaplicación que recupera el mensaje de informe, si este lo genera un gestor decolas o un MCA que no da soporte a la segmentación.

MQMD - Descriptor de mensaje

96 Consulta de programación de aplicaciones (ILE RPG)

Page 111: amqwak00

Contenido del descriptor de mensaje para un mensaje de informe: cuando elgestor de colas o el agente de canal de mensajes (MCA) genera un mensaje deinforme, establece los campos del descriptor de mensaje en los valoressiguientes y después transfiere el mensaje siguiendo el procedimiento habitual:

Campo de MQMDValor utilizado

MDSID MDSIDVMDVER MDVER2MDREP RONONEMDMT MTRPRTMDEXP EIULIMMDFB El adecuado en función de la naturaleza del informe (FBCOA, FBCOD,

FBEXP o un valor RC*)MDENC Se copia del descriptor de mensaje originalMDCSI Se copia del descriptor de mensaje originalMDFMT Se copia del descriptor de mensaje originalMDPRI Se copia del descriptor de mensaje originalMDPER Se copia del descriptor de mensaje originalMDMID El especificado por las opciones de informe del descriptor de mensaje

originalMDCID El especificado por las opciones de informe del descriptor de mensaje

originalMDBOC 0MDRQ BlancosMDRM Nombre del gestor de colasMDUID El establecido por la opción PMPASIMDACC El establecido por la opción PMPASIMDAID El establecido por la opción PMPASIMDPAT ATQM, o el adecuado para el agente de canal de mensajesMDPAN Los primeros 28 bytes del nombre del gestor de colas o del nombre del

agente de canal de mensajes. Para los mensajes de informe generadospor el puente IMS, este campo contiene el nombre de grupo XCF y elnombre de miembro XCF del sistema IMS con el que estánrelacionados los mensajes.

MDPD Fecha en la que se envía el mensaje de informeMDPT Hora a la que se envía el mensaje de informeMDAOD BlancosMDGID Se copia del descriptor de mensaje originalMDSEQ Se copia del descriptor de mensaje originalMDOFF Se copia del descriptor de mensaje originalMDMFL Se copia del descriptor de mensaje originalMDOLN Se copia del descriptor de mensaje original si no es OLUNDF, y se

establece en la longitud de los datos del mensaje original en cualquierotro caso

Se aconseja una aplicación que genere un informe para establecer valoressimilares, salvo en los casos siguientes:v El campo MDRM puede establecerse en blancos (el gestor de colas los sustituirá

por el nombre del gestor de colas local cuando se transfiera el mensaje).v Los campos de contexto deben establecerse utilizando la opción que se

habría utilizado para una respuesta, generalmente PMPASI.

Análisis del campo de informe: el campo MDREP contiene subcampos; esta es larazón por la que las aplicaciones que necesitan comprobar si el emisor de un

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 97

Page 112: amqwak00

mensaje ha solicitado un determinado informe deben utilizar una de lastécnicas descritas en “Análisis del campo de informe” en la página 482.

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. El valor inicial de este campo es RONONE.

MDMT (entero con signo de 10 dígitos)Tipo de mensaje.

Indica el tipo del mensaje. Los tipos de mensaje se agrupan de la siguienteforma:

MTSFSTValor inferior para tipos de mensajes definidos por el sistema.

MTSLSTValor superior para tipos de mensajes definidos por el sistema.

Actualmente, dentro del rango del sistema están definidos los siguientesvalores:

MTDGRMMensaje que no requiere respuesta.

El mensaje no requiere una respuesta.

MTRQSTMensaje que requiere respuesta.

El mensaje requiere una respuesta.

Debe especificarse el nombre de la cola a la que debe enviarse larespuesta en el campo MDRQ. El campo MDREP indica cómo debenestablecerse el MDMID y el MDCID de la respuesta.

MTRPLYResponder a un mensaje de petición anterior.

El mensaje es la respuesta a un mensaje de petición anterior(MTRQST). El mensaje debe enviarse a la cola indicada por el campoMDRQ del mensaje de petición. El campo MDREP de la petición debeutilizarse para controlar la forma en que se establecen el MDMID y elMDCID de la respuesta.

Nota: El gestor de colas no fuerza la relación entre la petición y larespuesta; es responsabilidad de la aplicación.

MTRPRTMensaje de informe.

El mensaje informa de alguna aparición esperada o inesperada, por logeneral relacionada con algún otro mensaje (por ejemplo, se harecibido un mensaje que contiene datos no válidos). El mensaje debeenviarse a la cola indicada en el campo MDRQ del descriptor de mensajeoriginal. El campo MDFB debe establecerse para que indique lanaturaleza del informe. El campo MDREP del mensaje original debeutilizarse para controlar la forma en que se establecen el MDMID y elMDCID del mensaje de informe.

Los mensajes de informe generados por el gestor de colas o por elagente de canal de mensajes se envían siempre a la cola MDRQ con loscampos MDFB y MDCID establecidos tal como se indicaba anteriormente.

MQMD - Descriptor de mensaje

98 Consulta de programación de aplicaciones (ILE RPG)

Page 113: amqwak00

Puede que, en próximas versiones de MQI, se definan otros valores dentro delrango del sistema, aceptados por las llamadas MQPUT y MQPUT1 sin errores.

También pueden utilizarse valores definidos por la aplicación. Deben estardentro del siguiente rango:

MTAFSTValor inferior de tipos de mensajes definidos por la aplicación.

MTALSTValor superior para tipos de mensajes definidos por la aplicación.

Para las llamadas MQPUT y MQPUT1, el valor MDMT debe estar dentro delrango definido por el sistema o el rango definido por la aplicación; si no loestá, la llamada falla con el código de razón RC2029.

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. El valor inicial de este campo es MTDGRM.

MDEXP (entero con signo de 10 dígitos)Duración del mensaje.

Es un período de tiempo expresado en décimas de segundo y establecido porla aplicación que pone el mensaje. El mensaje pasa a ser elegible para descartarsi no se ha eliminado de la cola destino una vez transcurrido este tiempo.

El valor va disminuyendo para reflejar el tiempo durante el cual el mensajepermanece en la cola destino, así como en las colas de transmisión intermediassi la transferencia se ha realizado a una cola remota. También puededisminuirlo los agentes de canal de mensajes para reflejar los tiempos detransmisión, si son significativos. Del mismo modo, una aplicación que envíeeste mensaje a otra cola puede disminuir el valor si así lo precisa, en el caso deque haya retenido el mensaje durante un tiempo significativo. No obstante, eltiempo de caducidad siempre es aproximado y no es preciso disminuir el valorpara reflejar pequeñas variaciones en intervalos de tiempo.

Cuando el mensaje lo recupera una aplicación que utiliza la llamada MQGET,el campo MDEXP representa la cantidad de tiempo que todavía queda respecto altiempo de caducidad original.

Una vez transcurrido el tiempo de caducidad del mensaje, este se vuelveelegible para que el gestor de colas lo descarte. En las implementacionesactuales, el mensaje se descarta cuando se produce una llamada MQGET deexaminar o de no examinar que habría devuelto el mensaje en caso de que esteno hubiese ya caducado. Por ejemplo, una llamada MQGET de no examinarcon el campo GMMO de MQGMO establecido en MONONE que estuvieseleyendo en una cola con orden FIFO, haría que todos los mensajes caducadosse descartaran hasta el primer mensaje no caducado. Con una cola ordenadapor prioridad, la misma llamada descartará los mensajes caducados deprioridad superior y los mensajes de igual prioridad que hayan llegado a lacola antes del primer mensaje no caducado.

Un mensaje caducado jamás se devuelve a una aplicación (ya sea a través deuna llamada MQGET de examinar o de no examinar), por lo que el valor delcampo MDEXP del descriptor de mensaje después de una llamada MQGETsatisfactoria es mayor que cero, o es el valor especial EIULIM.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 99

|||||||||||

Page 114: amqwak00

Si el mensaje se pone en una cola remota, este puede caducar (y serdescartado) mientras permanece en una cola de transmisión intermedia, antesde que llegue a la cola destino.

Cuando se descarta un mensaje caducado, se genera un informe, si el mensajetenía especificada una de las opciones de informe ROEXP*. Si no se haespecificado ninguna de estas opciones, no se generará este informe y seconsiderará que el mensaje ha dejado de ser relevante después de este período(puede que algún mensaje posterior lo haya reemplazado).

Cualquier otro programa que descarte mensajes basándose en el tiempo decaducidad también debe enviar un mensaje de informe apropiado si se solicitaalguno.

Notas:

1. Si se pone un mensaje con un tiempo MDEXP igual a cero, la llamadaMQPUT o MQPUT1 falla con el código de razón RC2013; en este caso no segenera ningún mensaje de informe.

2. Dado que los mensajes cuyo tiempo de caducidad ha transcurrido puedenno descartarse realmente hasta más adelante, quizá haya mensajescaducados en la cola que, por consiguiente, no sean elegibles pararecuperación. Sin embargo, dichos mensajes cuentan como mensajes de lacola a todos los efectos, incluido el desencadenamiento de profundidad.

3. De solicitarse, se genera un informe de caducidad cuando se descartarealmente el mensaje, no cuando el mensaje se hace elegible para descartar.

4. Las acciones de descartar un mensaje caducado y de generar un informe decaducidad, si se solicitan, nunca forman parte de la unidad de trabajo de laaplicación, aunque se haya planificado descartar el mensaje como resultadode una llamada MQGET que opera dentro de una unidad de trabajo.

5. Si una llamada MQGET dentro de una unidad de trabajo recupera unmensaje casi caducado, y la unidad de trabajo se restituye conposterioridad, el mensaje puede pasar a ser elegible para descartar antes depoder volver a recuperarlo.

6. Si una llamada MQGET con GMLK bloquea un mensaje casi caducado, elmensaje puede pasar a ser elegible para descartar antes de que una llamadaMQGET con GMMUC pueda recuperarlo; en tal caso, se devuelve el códigode razón RC2034 en esta llamada MQGET posterior.

7. Cuando se recupera un mensaje de petición cuyo tiempo de caducidad esmayor que cero, la aplicación puede realizar una de las siguientes accionesal enviar el mensaje de respuesta:v Copiar en el mensaje de respuesta el tiempo de caducidad que queda del

mensaje de petición.v Establecer el tiempo de caducidad del mensaje de respuesta en un valor

explícito mayor que cero.v Establecer el tiempo de caducidad del mensaje de respuesta en el valor

EIULIM.

La acción que se realice dependerá del diseño de la suite de aplicaciones.No obstante, la acción por omisión para poner mensajes en una cola demensajes no entregados (mensajes en espera) debería ser conservar eltiempo de caducidad restante del mensaje y continuar disminuyéndolo.

8. Los mensajes desencadenantes siempre se generan con EIULIM.9. Un mensaje (por lo general, en una cola de transmisión) que tiene un

nombre MDFMT de FMXQH, tiene un segundo descriptor de mensaje en el

MQMD - Descriptor de mensaje

100 Consulta de programación de aplicaciones (ILE RPG)

Page 115: amqwak00

MQXQH. Por lo tanto, tiene dos campos MDEXP asociados. En este caso hayque tener en cuenta los siguientes puntos adicionales:v Cuando una aplicación pone un mensaje en una cola remota, el gestor de

colas coloca el mensaje inicialmente en una cola de transmisión local, ypone como prefijo de los datos del mensaje de aplicación una estructuraMQXQH. El gestor de colas establece los valores de los dos camposMDEXP igual que los especificados por la aplicación.Si una aplicación pone un mensaje directamente en una cola detransmisión local, los datos del mensaje ya deben empezar por unaestructura MQXQH, y el nombre del formato debe ser FMXQH (pero elgestor de colas no fuerza esta situación). En este caso no es necesario quela aplicación establezca los valores de los dos campos MDEXP de igualmanera. (El gestor de colas no comprueba si el campo MDEXP dentro deMQXQH contiene un valor válido, ni siquiera si los datos del mensajeson lo bastante largos para incluirlo.)

v Cuando un mensaje con un nombre MDFMT de FMXQH se recupera deuna cola (tanto si es una cola normal como si es una cola detransmisión), el gestor de colas disminuye ambos campos MDEXP indicandoel tiempo que ha transcurrido esperando en la cola. No se produce erroralguno si la longitud de los datos del mensaje no es lo bastante grandepara incluir el campo MDEXP en el MQXQH.

v El gestor de colas utiliza el campo MDEXP del descriptor de mensaje aparte(es decir, no el del descriptor de mensaje incorporado dentro de laestructura MQXQH) para comprobar si el mensaje es elegible para serdescartado.

v Si los valores iniciales de los dos campos MDEXP no coinciden, es posibleque el tiempo MDEXP del descriptor de mensaje aparte cuando se recuperael mensaje sea mayor que cero (con lo que el mensaje no es elegible paraser descartado), mientras que el tiempo según el campo MDEXP deMQXQH ya ha transcurrido. En este caso el campo MDEXP de MQXQH seestablece en cero.

Se reconocen los siguientes valores especiales:

EIULIMDuración ilimitada.

El mensaje tiene una duración ilimitada.

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. El valor inicial de este campo es EIULIM.

MDFB (entero con signo de 10 dígitos)Código de información de retorno o de razón.

Se utiliza con un mensaje de tipo MTRPRT para indicar la naturaleza delinforme y solo tiene significado con este tipo de mensaje. El campo puedecontener uno de los valores FB* o uno de los valores RC*. Los códigos deinformación de retorno están agrupados de la siguiente manera:

FBNONENo se proporciona información de retorno.

FBSFSTValor inferior de la información de retorno generada por el sistema.

FBSLSTValor superior de la información de retorno generada por el sistema.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 101

Page 116: amqwak00

El rango de los códigos de información de retorno generados por elsistema, de FBSFST a FBSLST, incluye los códigos de información deretorno generales enumerados a continuación (FB*), y también loscódigos de razón (RC*) que pueden aparecer cuando el mensaje no sepuede poner en la cola destino.

FBAFSTValor inferior de la información de retorno generada por aplicación.

FBALSTValor superior de la información de retorno generada por aplicación.

Las aplicaciones que generan mensajes de informe no deben utilizar loscódigos de información de retorno comprendidos en el rango del sistema(distintos de FBQUIT) a menos que deseen simular mensajes de informegenerados por el gestor de colas o por el agente de canal de mensajes.

En las llamadas MQPUT o MQPUT1, el valor especificado debe ser FBNONE,o debe pertenecer al rango del sistema o al rango de la aplicación. Esto secomprueba sea cual sea el valor de MDMT.

Códigos de información de retorno generales:

FBCOAConfirmación de la llegada a la cola destino (vea ROCOA).

FBCODConfirmación de entrega a la aplicación receptora (vea ROCOD).

FBEXPMensaje caducado.

El mensaje se ha descartado porque no se había eliminado de la coladestino antes de que hubiese transcurrido el tiempo de caducidad.

FBPANNotificación de acción positiva (vea ROPAN).

FBNANNotificación de acción negativa (vea ROPAN).

FBQUITLa aplicación debe finalizar.

Esto puede utilizarlo un programa de planificación de carga paracontrolar el número de ejecuciones simultáneas de un programa deaplicación. El envío de un mensaje MTRPRT con este código deinformación de retorno a una instancia del programa de aplicaciónindica a dicha instancia que debe detener el proceso. Sin embargo, elcumplir esta norma es responsabilidad de la aplicación; el gestor decolas no fuerza a ello.

Códigos de información de retorno del puente IMS: Cuando el puente IMSrecibe un código de detección IMS-OTMA distinto de cero, el puente IMSconvierte el código de detección de hexadecimal a decimal, añade el valorFBIERR (300) y pone el resultado en el campo MDFB del mensaje de respuesta.Esto tiene como resultado que el código de información de retorno tiene unvalor comprendido entre FBIFST (301) y FBILST (399) cuando se ha producidoun error IMS-OTMA.

El puente IMS puede generar los siguientes códigos de información de retorno:

MQMD - Descriptor de mensaje

102 Consulta de programación de aplicaciones (ILE RPG)

|||||||

Page 117: amqwak00

FBDLZLa longitud de los datos es cero.

La longitud de un segmento era cero en los datos de aplicación delmensaje.

FBDLNLa longitud de los datos es negativa.

La longitud de un segmento era negativa en los datos de aplicación delmensaje.

FBDLTBLa longitud de los datos es demasiado grande.

La longitud de un segmento era demasiado grande en los datos deaplicación del mensaje.

FBBUFODesbordamiento de almacenamiento intermedio.

El valor de uno de los campos de longitud haría que los datosdesbordaran el almacenamiento intermedio de mensajes MQSeries.

FBLOB1La longitud es errónea en uno.

Al valor de uno de los campos de longitud le faltaba un byte.

FBIIH La estructura MQIIH no es válida o no está presente.

El campo MDFMT de MQMD especifica FMIMS, pero el mensaje noempieza por una estructura MQIIH válida.

FBNAFIID de usuario no autorizado para su utilización en IMS.

El ID de usuario incluido en el descriptor de mensaje MQMD, o lacontraseña incluida en el campo IIAUT de la estructura MQIIH, nopasó la validación llevada a cabo por el puente IMS. Como resultado,el mensaje no se pasó a IMS.

FBIERRError inesperado devuelto por IMS.

IMS devolvió un error inesperado. Consulte las anotaciones de error deMQSeries en el sistema donde reside el puente IMS para obtener másinformación acerca del error.

FBIFSTValor inferior de la información de retorno generada por IMS.

Los códigos de información de retorno generados por IMS estáncomprendidos entre FBIFST (300) y FBILST (399). El código dedetección IMS-OTMA propiamente dicho es MDFB menos FBIERR.

FBILSTValor superior de la información de retorno generada por IMS.

Códigos de información de retorno de puente CICS: el puente CICS puedegenerar los siguientes códigos de información de retorno:

FBCAABLa aplicación ha finalizado de forma anómala (abend).

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 103

||

||

Page 118: amqwak00

El programa de aplicación especificado en el mensaje finalizó de formaanómala. Este código de información de retorno aparece solamente enel campo DLREA de la estructura MQDLH.

FBCANSLa aplicación no puede iniciarse.

El EXEC CICS LINK para el programa de aplicación especificado en elmensaje no fue satisfactorio. Este código de información de retornoaparece solamente en el campo DLREA de la estructura MQDLH.

FBCBRFEl puente CICS finalizó de forma anómala sin completar el procesonormal de errores.

FBCCSEEl identificador de juego de caracteres no es válido.

FBCIHELa estructura de cabecera de información de CICS falta o no es válida.

FBCCAELa longitud del área común de CICS no es válida.

FBCCIEEl identificador de correlación no es válido.

FBCDLQLa cola de mensajes no entregados no está disponible.

La tarea del puente CICS no pudo copiar una respuesta a esta peticiónen la cola de mensajes no entregados. La petición se restituyó.

FBCENELa codificación no es válida.

FBCINEEl puente CICS encontró un error inesperado.

Este código de información de retorno aparece solamente en el campoDLREA de la estructura MQDLH.

FBCNTAIdentificador de usuario no autorizado o contraseña no válida.

Este código de información de retorno aparece solamente en el campoDLREA de la estructura MQDLH.

FBCUBOUnidad de trabajo restituida.

La unidad de trabajo se restituyó, debido a uno de los siguientescódigos de razón:v Se detectó una anomalía al procesar otra petición dentro de la misma

unidad de trabajo.v Se produjo una finalización anómala (abend) de CICS mientras la

unidad de trabajo estaba en proceso.

FBCUWEEl campo de control CIUOW de la unidad de trabajo no es válido.

Códigos de razón MQ: para los mensajes de informe de caducidad, MDFBcontiene un código de razón MQ. Entre los posibles códigos de razón seencuentran los siguientes:

MQMD - Descriptor de mensaje

104 Consulta de programación de aplicaciones (ILE RPG)

|||

||

|||

|||

||

||

||

||

||

||

||

||

||

||

||

||

||

||

||

||

Page 119: amqwak00

RC2051(2051, X'803') Las llamadas de poner están inhibidas en la cola.

RC2053(2053, X'805') La cola ya contiene el número máximo de mensajes.

RC2035(2035, X'7F3') No posee autorización para acceder.

RC2056(2056, X'808') No hay espacio disponible para la cola en el disco.

RC2048(2048, X'800') Un mensaje en una cola dinámica temporal no puede serpermanente.

RC2031(2031, X'7EF') La longitud del mensaje es superior al máximo del gestorde colas.

RC2030(2030, X'7EE') La longitud del mensaje es superior al máximo de lacola.

En “Códigos de razón” en la página 373 encontrará la lista completa de códigosde razón.

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. El valor inicial de este campo es FBNONE.

MDENC (entero con signo de 10 dígitos)Codificación numérica de datos de mensaje.

Identifica la representación utilizada para valores numéricos en los datos demensaje de aplicación; esto se aplica a datos enteros binarios, datos enterosdecimales empaquetados y datos de coma flotante. Se ha definido el siguientevalor:

ENNATCodificación de la máquina original.

La codificación es el valor por omisión para el lenguaje deprogramación y la máquina en la que se está ejecutando la aplicación.

Nota: El valor de esta constante es específico del entorno y dellenguaje de programación.

El gestor de colas no valida el contenido de este campo.

Normalmente, las aplicaciones que transfieren mensajes especifican ENNAT.Las aplicaciones que recuperan mensajes deben comparar este campo con elvalor ENNAT; si los valores difieren, puede que la aplicación tenga queconvertir los datos numéricos del mensaje. En el “Apéndice D. Codificacionesde máquina” en la página 477 encontrará información detallada sobre lacreación de este campo.

Si la opción GMCONV se especifica en la llamada MQGET, este campo es deentrada/salida. El valor especificado por la aplicación es la codificación a laque los datos del mensaje se deberían convertir si fuera necesario. Si laconversión se realizara satisfactoriamente o fuera innecesaria, el valor

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 105

Page 120: amqwak00

permanecerá sin cambios. Si la conversión no es satisfactoria, el valor despuésde la llamada MQGET representa la codificación del mensaje no convertidoque se devuelve a la aplicación.

En cualquier otro caso, es un campo de salida para la llamada MQGET y uncampo de entrada para las llamadas MQPUT y MQPUT1. El valor inicial deeste campo es ENNAT.

MDCSI (entero con signo de 10 dígitos)Identificador de juego de caracteres de datos de mensaje.

Especifica el identificador del juego de caracteres de los datos de tipo carácterdel mensaje de la aplicación.

Recuerde que los datos de tipo carácter del descriptor de mensaje y las demásestructuras de datos MQI deben tener el juego de caracteres utilizado por elgestor de colas. Esto se define mediante el atributo de gestor de colasCodedCharSetId; consulte el “Capítulo 43. Atributos del gestor de colas” en lapágina 337 para obtener información detallada de este atributo.

Se han definido los valores siguientes:

CSQMIdentificador del juego de caracteres del gestor de colas.

Los datos de tipo carácter del mensaje tienen el juego de caracteres delgestor de colas.

CSINHTHeredar identificador de juego de caracteres de esta estructura.

Los datos de tipo carácter del mensaje tienen el mismo juego decaracteres que MQMD; es el juego de caracteres del gestor de colas.

CSEMBDIdentificador de juego de caracteres incluido.

Los datos de tipo carácter del mensaje tienen un juego de caracterescuyo identificador está incluido en los propios datos del mensaje.Puede haber cualquier número de identificadores de juego decaracteres incluidos en los datos del mensaje, aplicables a diferentespartes de los datos. Este valor debe utilizarse para los mensajes PCFque contienen datos con una combinación de juegos de caracteres. Losmensajes PCF tienen un nombre de formato de FMPCF.

Especifique este valor únicamente en las llamadas MQPUT y MQPUT1.Si se especifica en la llamada MQGET, impide la conversión delmensaje.

En las llamadas MQPUT y MQPUT1, el gestor de colas cambia el valor CSQMdel campo MDCSI de la MQMD que se envía con el mensaje por el valor delatributo de gestor de colas CodedCharSetId; como resultado, la llamadaMQGET nunca devuelve el valor CSQM. No se altera el campo MDCSI de laMQMD especificada en la llamada MQPUT o MQPUT1. No se realiza ningunaotra comprobación en el valor especificado.

Las aplicaciones que recuperan mensajes deben comparar este campo con elvalor que la aplicación espera; si los valores difieren, puede que la aplicacióntenga que convertir los datos de tipo carácter del mensaje.

MQMD - Descriptor de mensaje

106 Consulta de programación de aplicaciones (ILE RPG)

Page 121: amqwak00

Si la opción GMCONV se especifica en la llamada MQGET, este campo es deentrada/salida. El valor especificado por la aplicación es el identificador deljuego de caracteres al que los datos del mensaje se deberían convertir si fueranecesario. Si la conversión es satisfactoria o innecesaria, el valor no cambia(salvo en que el valor CSQM se convierte al valor actual). Si la conversión nofuera satisfactoria, el valor después de la llamada MQGET representa elidentificador del juego de caracteres del mensaje no convertido que sedevuelve a la aplicación.

En cualquier otro caso, es un campo de salida para la llamada MQGET y uncampo de entrada para las llamadas MQPUT y MQPUT1. El valor inicial deeste campo es CSQM.

MDFMT (serie de caracteres de 8 bytes)Nombre del formato de los datos de mensaje.

Es un nombre que puede utilizar el emisor del mensaje para indicar al receptorla naturaleza de los datos del mensaje. Para el nombre puede especificarsecualquier carácter del juego de caracteres del gestor de colas, pero esaconsejable respetar las siguientes limitaciones:v Mayúsculas A a Zv Dígitos numéricos 0 a 9

Si se utilizan otros caracteres, puede que no sea posible la conversión delnombre entre los juegos de caracteres del gestor de colas emisor y del gestorde colas receptor.

El nombre debe rellenarse con blancos hasta alcanzar la longitud del campo ose debe utilizar un carácter nulo para terminar el nombre antes de llegar alfinal del campo; dicho carácter y los caracteres subsiguientes se consideraránblancos. No especifique un nombre con blancos iniciales o intercalados. Para lallamada MQGET, el gestor de colas devuelve el nombre relleno con blancoshasta la longitud del campo.

El gestor de colas no comprueba si el nombre cumple las recomendacionesdescritas anteriormente.

Los nombres que empiezan por “MQ” tienen significados definidos por elgestor de colas; no utilice nombres de este tipo en sus propios formatos. Losformatos incorporados del gestor de colas son los siguientes:

FMNONESin nombre de formato.

La naturaleza de los datos de mensaje de aplicación no está definida.Esto significa que los datos no se pueden convertir cuando el mensajese recupera de una cola.

Nota: Si se especifica GMCONV en la llamada MQGET para unmensaje que tiene un nombre de formato de FMNONE, y eljuego de caracteres o la codificación del mensaje es diferente delo especificado en el parámetro MSGDSC, se sigue devolviendo elmensaje en el parámetro BUFFER (suponiendo que no hay otroserrores), pero la llamada se completa con el código determinación CCWARN y el código de razón RC2110.

FMADMNMensaje de petición/respuesta del servidor de mandatos.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 107

Page 122: amqwak00

El mensaje es una petición del servidor de mandatos o un mensaje derespuesta en formato de mandatos programables (PCF). Los mensajescon este formato se pueden convertir si la opción GMCONV seespecifica en la llamada MQGET. Consulte la publicación MQSeriesProgrammable System Management para obtener más información acercade cómo utilizar mensajes con formato de mandato programable.

FMCICSCabecera de información de CICS

Los datos de mensaje empiezan por la cabecera de informaciónMQCIH de CICS, que va seguida de los datos de aplicación. El nombredel formato de los datos de aplicación lo proporciona el campo CIFMTen la estructura MQCIH.

FMCMD1Mensaje de respuesta del mandato de tipo 1

El mensaje es un mensaje de respuesta del servidor de mandatosMQSC que contiene la cuenta de objetos, el código de terminación y elcódigo de razón. Los mensajes con este formato se pueden convertir sila opción GMCONV se especifica en la llamada MQGET.

FMCMD2Mensaje de respuesta del mandato de tipo 2.

El mensaje es un mensaje de respuesta del servidor de mandatosMQSC que contiene la cuenta de objetos, el código de terminación y elcódigo de razón. Los mensajes con este formato se pueden convertir sila opción GMCONV se especifica en la llamada MQGET.

FMDLHCabecera de mensaje no entregado.

Los datos del mensaje empiezan por la cabecera de mensaje noentregado MQDLH. Los datos del mensaje original vaninmediatamente a continuación de la estructura MQDLH. El nombredel formato de los datos del mensaje original lo proporciona el campoDLFMT de la estructura MQDLH; consulte el “Capítulo 7. MQDLH -Cabecera de mensaje no entregado” en la página 43 para obtenerinformación detallada acerca de esta estructura. Los mensajes con esteformato se pueden convertir si la opción GMCONV se especifica en lallamada MQGET.

No se generan informes COA y COD para los mensajes que tienen unMDFMT de FMDLH.

FMDHCabecera de lista de distribución.

Los datos del mensaje empiezan por la cabecera de lista dedistribución MQDH; esto incluye las matrices de los registros MQOR yMQPMR. La cabecera de lista de distribución puede ir seguida dedatos adicionales. El formato de los datos adicionales (si existe) loproporciona el campo DHFMT de la estructura MQDH; consulte el“Capítulo 6. MQDH - Cabecera de distribución” en la página 37 paraobtener información detallada acerca de esta estructura. Los mensajescon el formato FMDH se pueden convertir si la opción GMCONV seespecifica en la llamada MQGET.

FMEVNTMensaje de suceso.

MQMD - Descriptor de mensaje

108 Consulta de programación de aplicaciones (ILE RPG)

Page 123: amqwak00

El mensaje es un mensaje de suceso MQ que informa de un suceso quese ha producido. Los mensajes con este formato se pueden convertir sila opción GMCONV se especifica en la llamada MQGET. Los mensajesde suceso tienen la misma estructura que los mandatos programables;consulte la publicación MQSeries Programmable System Management paraobtener más información acerca de esta estructura.

FMIMSCabecera de información de IMS.

Los datos de mensaje empiezan por la cabecera de información MQIIHde IMS, que va seguida de los datos de aplicación. El nombre delformato de los datos de aplicación lo proporciona el campo IIFMT en laestructura MQIIH. Los mensajes con este formato se pueden convertirsi la opción GMCONV se especifica en la llamada MQGET.

FMIMVSSerie de variables IMS.

El mensaje es una serie de variables IMS, que es una serie con elformato llzzccc, donde:

ll es un campo con una longitud de 2 bytes que especifica lalongitud total del elemento de la serie de variables IMS. Estalongitud equivale a la longitud de ll (2 bytes), más la longitudde zz (2 bytes), más la longitud de la propia serie decaracteres. ll es un entero binario de 2 bytes con lacodificación especificada por el campo MDENC.

zz es un campo de 2 bytes que contiene distintivos que sonsignificativos para IMS. zz es una serie de bytes que consta dedos campos de serie de bits de 1 byte, y que se transmite sincambios del emisor al receptor (es decir, zz no se somete aninguna conversión).

ccc es una serie de caracteres de longitud variable que contiene loscaracteres ll-4. ccc tiene el juego de caracteres especificadopor el campo MDCSI.

Los mensajes con este formato se pueden convertir si la opciónGMCONV se especifica en la llamada MQGET.

FMMDEExtensión de descriptor de mensaje.

Los datos de mensaje empiezan por la extensión MQMDE deldescriptor de mensaje y van seguidos, de forma opcional, por otrosdatos (normalmente los datos de mensajes de aplicación). El nombredel formato, el juego de caracteres y la codificación de los datos quesiguen a MQMDE los proporcionan los campos MEFMT, MECSI y MEENCde MQMDE. En el “Capítulo 11. MQMDE - Extensión de descriptor demensaje” en la página 137 encontrará información detallada sobre estaestructura. Los mensajes con este formato se pueden convertir si laopción GMCONV se especifica en la llamada MQGET.

FMPCFMensaje definido por el usuario en formato de mandato programable(PCF).

Este es un mensaje definido por el usuario que se ajusta a la estructurade un mensaje en formato de mandato programable (PCF). Los

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 109

Page 124: amqwak00

mensajes con este formato se pueden convertir si la opción GMCONVse especifica en la llamada MQGET. Consulte la publicación MQSeriesProgrammable System Management para obtener más información acercade cómo utilizar mensajes con formato de mandato programable.

FMRMHCabecera de mensaje de referencia.

Los datos del mensaje empiezan por la cabecera del mensaje dereferencia MQRMH y, de forma opcional, van seguidos de otros datos.El nombre del formato, el juego de caracteres y la codificación de losdatos los proporcionan los campos RMFMT, RMCSI y RMENC de MQRMH.En el “Capítulo 16. MQRMH - Cabecera de mensaje de referencia” enla página 177 encontrará información detallada sobre esta estructura.Los mensajes con este formato se pueden convertir si la opciónGMCONV se especifica en la llamada MQGET.

FMRFHCabecera de formato y reglas.

Los datos del mensaje empiezan por la cabecera de formato y reglasMQRFH y, de forma opcional, van seguidos de otros datos. El nombredel formato, el juego de caracteres y la codificación de los datos (siexiste) los proporcionan los campos RFFMT, RFCSI y RFENC de MQRFH.

FMSTRMensaje formado únicamente por caracteres.

Los datos del mensaje de la aplicación pueden ser una serie SBCS(juego de caracteres de un solo byte) o una serie DBCS (juego decaracteres de doble byte). Los mensajes con este formato se puedenconvertir si la opción GMCONV se especifica en la llamada MQGET.

FMTMMensaje desencadenante.

Es un mensaje desencadenante, descrito por la estructura MQTM;consulte el “Capítulo 18. MQTM - Mensaje desencadenante” en lapágina 189 para obtener información detallada acerca de estaestructura. Los mensajes con este formato se pueden convertir si laopción GMCONV se especifica en la llamada MQGET.

FMWIHCabecera de información de trabajo.

Los datos del mensaje empiezan por la cabecera de información detrabajo MQWIH, que va seguida de los datos de aplicación. El nombredel formato de los datos de aplicación lo proporciona el campo WIFMTde la estructura MQWIH.

FMXQHCabecera de cola de transmisión.

Los datos del mensaje empiezan por la cabecera de cola de transmisiónMQXQH. Los datos del mensaje original van inmediatamente acontinuación de la estructura MQXQH. El nombre del formato de losdatos del mensaje original lo proporciona el campo MDFMT en laestructura MQMD que forma parte de la cabecera de cola detransmisión MQXQH. En el “Capítulo 21. MQXQH - Cabecera de colade transmisión” en la página 203 encontrará información detalladasobre esta estructura.

MQMD - Descriptor de mensaje

110 Consulta de programación de aplicaciones (ILE RPG)

||

||||

||

||||

Page 125: amqwak00

No se generan informes COA y COD para los mensajes que tienen unMDFMT de FMXQH.

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. La longitud de este campo la proporcionaLNFMT. El valor inicial de este campo es FMNONE.

MDPRI (entero con signo de 10 dígitos)Prioridad del mensaje.

Para las llamadas MQPUT y MQPUT1, el valor debe ser mayor o igual quecero; cero es la prioridad más baja.

También puede utilizarse el siguiente valor especial:

PRQDEFPrioridad por omisión de la cola.v Si la cola es de un clúster, la prioridad del mensaje se toma del

atributo DefPriority tal como está definido en el gestor de colasdestino que es propietario de la instancia concreta de la cola en laque se coloca el mensaje. Normalmente, todas las instancias de unacola de clúster tienen el mismo valor para el atributo DefPriority,aunque esto no es obligatorio.El valor de DefPriority se copia en el campo MDPRI cuando elmensaje se coloca en la cola destino. Si DefPriority cambia conposterioridad, los mensajes que ya se han puesto en la cola noresultan afectados.

v Si la cola no es de un clúster, la prioridad del mensaje se toma delatributoDefPrioritytal como está definido en el gestor de colaslocal,aunque el gestor de colas destino sea remoto.Si hay más de una definición en la vía de resolución de nombres decola, la prioridad por omisión se toma del valor de este atributo enla primera definición de la vía. Esta puede ser:– Una cola de alias– Una cola local– Una definición local de una cola remota– Un alias de gestor de colas– Una cola de transmisión (por ejemplo, la cola DefXmitQName)

El valor de DefPriority se copia en el campo MDPRI cuando setransfiere el mensaje. Si DefPriority se cambia posteriormente, losmensajes ya transferidos no resultan afectados.

Cuando se responde a un mensaje, las aplicaciones deben usar normalmente laprioridad del mensaje de petición para la respuesta. En otras situaciones, tomarpor omisión la definición de la cola permite ajustar la prioridad sin cambiar laaplicación.

Si un mensaje se transfiere con una prioridad superior a la máxima soportadapor el gestor de colas local (indicada por el atributo de gestor de colasMaxPriority), el gestor de colas acepta el mensaje, pero lo coloca en la cola conla prioridad máxima del gestor de colas; la llamada MQPUT o MQPUT1 secompleta con CCWARN y el código de razón RC2049. No obstante, el campoMDPRI retendrá el valor especificado por la aplicación que puso el mensaje.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 111

||||||

||||

|||

Page 126: amqwak00

El valor devuelto por la llamada MQGET siempre es mayor o igual que cero; elvalor PRQDEF no se devuelve nunca.

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. El valor inicial de este campo es PRQDEF.

MDPER (entero con signo de 10 dígitos)Permanencia del mensaje.

Para las llamadas MQPUT y MQPUT1, el valor debe ser uno de los siguientes:

PEPEREl mensaje es permanente.

El mensaje sigue existiendo tras los rearranques del gestor de colas.Dado que las colas dinámicas temporales no siguen existiendo tras losrearranques del gestor de colas, los mensajes permanentes no puedenponerse en este tipo de colas, pero sí a colas dinámicas permanentes ycolas predefinidas.

Cuando se ha transferido un mensaje permanente (o se hacomprometido la unidad de trabajo, si la llamada MQPUT o MQPUT1forma parte de una unidad de trabajo), el mensaje está disponible en elalmacenamiento auxiliar hasta el momento en que se elimina de la cola(o la unidad de trabajo se compromete, si la llamada MQGET formaparte de una unidad de trabajo).

Cuando se envía un mensaje permanente a una cola remota, se utilizaun mecanismo de almacenar y reenviar para que retenga el mensaje encada gestor de colas a lo largo de la ruta de acceso al destino.

PENPEREl mensaje no es permanente.

El mensaje no sigue existiendo tras los rearranques del gestor de colas.Esto se aplica aunque se encuentre una copia intacta del mensaje en elalmacenamiento auxiliar durante el procedimiento de rearranque.

PEQDEFEl mensaje tiene la permanencia por omisión.v Si la cola es de un clúster, la permanencia del mensaje se toma del

atributo DefPersistence tal como está definido en el gestor de colasdestino que es propietario de la instancia concreta de la cola en laque se coloca el mensaje.Normalmente, todas las instancias de una cola de clúster tienen elmismo valor para el atributo DefPersistence, aunque esto no esobligatorio.El valor de DefPersistence se copia en el campo MDPER cuando elmensaje se coloca en la cola destino. Si DefPersistence cambia conposterioridad, los mensajes que ya se han puesto en la cola noresultan afectados.

v Si la cola no es de un clúster, la permanencia del mensaje se tomadel atributoDefPersistencetal como está definido en el gestor decolaslocal, aunque el gestor de colas destino sea remoto.Si hay más de una definición en la vía de resolución de nombres decola, la permanencia por omisión se toma del valor de este atributoen la primera definición de la vía. Esta puede ser:– Una cola de alias– Una cola local

MQMD - Descriptor de mensaje

112 Consulta de programación de aplicaciones (ILE RPG)

||||

|||

||||

|||

Page 127: amqwak00

– Una definición local de una cola remota– Un alias de gestor de colas– Una cola de transmisión (por ejemplo, la cola DefXmitQName)

El valor de DefPersistence se copia en el campo MDPER cuando setransfiere el mensaje. Si DefPersistence se cambia posteriormente,los mensajes ya transferidos no resultan afectados.

En una cola puede haber mensajes permanentes y no permanentes.

Cuando se responde a un mensaje, las aplicaciones deben usar normalmente lapermanencia del mensaje de petición para la respuesta. En otras situaciones,tomar por omisión la definición de la cola permite cambiar la permanencia sincambiar la aplicación.

Para una llamada MQGET, el valor devuelto es PEPER o PENPER.

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. El valor inicial de este campo es PEQDEF.

MDMID (serie de bits de 24 bytes)Identificador de mensaje.

Es una serie de bytes que se utiliza para distinguir un mensaje de otro.Generalmente, el identificador de mensaje no debería ser nunca el mismo paramás de un mensaje, aunque el gestor de colas no lo prohíba. El identificadorde mensaje es propiedad permanente del mensaje, y sigue existiendo tras losrearranques del gestor de colas. Como el identificador de mensaje es una seriede bytes y no una serie de caracteres, no se convierten los juegos de caracteresdel identificador de mensaje cuando el mensaje va de un gestor de colas a otro.

Para las llamadas MQPUT y MQPUT1, si la aplicación especifica MINONE oPMNMID, el gestor de colas genera un identificador de mensaje exclusivo 1

cuando se pone el mensaje, y lo coloca en el descriptor de mensaje que seenvía con él. El gestor de colas también devuelve el identificador del mensajeen el descriptor de mensaje que pertenece a la aplicación emisora. Laaplicación puede utilizar este valor para registrar información sobredeterminados mensajes, y para responder a consultas de otras partes de laaplicación.

Si el mensaje se pone en una lista de distribución, el gestor de colas generaidentificadores de mensaje exclusivos, según sea necesario, pero el valor delcampo MDMID de MQMD permanece sin cambios al regreso de la llamada,aunque se haya especificado MINONE o PMNMID. Si la aplicación tiene queconocer los identificadores de mensaje generados por el gestor de colas, deberáproporcionar registros MQPMR que contengan el campo PRMID.

1. Un MDMID generado por el gestor de colas consta de un identificador de producto de 4 bytes (‘AMQb’ o ‘CSQb’ en ASCII oEBCDIC, donde ‘b’ representa un espacio en blanco), seguido de una implementación de una serie exclusiva específica deproducto. En MQSeries contiene los primeros 12 caracteres del nombre del gestor de colas, y un valor derivado del reloj delsistema. Así pues, los gestores de colas que puedan comunicarse entre sí deberán tener nombres cuyos 12 primeros caracteressean distintos, a fin de que los identificadores de mensajes sean exclusivos. La posibilidad de generar un número exclusivodepende también de que el reloj del sistema no se retrase. Para eliminar la posibilidad de que un identificador de mensajegenerado por el gestor de colas coincida con uno generado por la aplicación, esta última debe procurar no generar identificadorescuyos caracteres iniciales estén comprendidos entre la A y la I en ASCII o EBCDIC (entre X'41' y X'49' y entre X'C1' y X'C9'). Sinembargo, la aplicación no tiene prohibido generar identificadores con caracteres iniciales que pertenezcan a estos rangos.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 113

Page 128: amqwak00

La aplicación emisora puede especificar también un valor específico para elidentificador del mensaje, distinto de MINONE; esto impide que el gestor decolas genere un identificador de mensaje exclusivo. Una aplicación que estéreenviando un mensaje puede utilizar este recurso para propagar elidentificador del mensaje original.

El gestor de colas propiamente dicho no utiliza este campo, salvo para hacer losiguiente:v Generar un valor exclusivo si se le solicita, como se explica arriba.v Entregar el valor a la aplicación que emite la petición de obtención del

mensajev Copiar el valor en el campo MDCID de cualquier mensaje de informe que

genere sobre el mensaje (en función de las opciones de MDREP)

Cuando el gestor de colas o el agente de canal de mensajes genera un mensajede informe, establece el MDMID en la forma especificada por el campo MDREP delmensaje original, ya sea RONMI o ROPMI. Las aplicaciones que generanmensajes de informe también deben hacer esto.

Para la llamada MQGET, MDMID es uno de los cinco campos que se puedenutilizar para seleccionar que un mensaje determinado se recupere de la cola.Normalmente, la llamada MQGET devuelve el siguiente mensaje de la cola,pero si se requiere un determinado mensaje, se puede obtener especificandouno o más de los cinco criterios de selección, en cualquier combinación; estoscampos son los siguientes:

MDMIDMDCIDMDGIDMDSEQMDOFF

La aplicación establece uno o más de estos campos en los valores necesarios, yentonces establece las opciones coincidentes MO* que corresponden en elcampo GMMO de MQGMO para indicar que esos campos deben utilizarse comocriterios de selección. Solamente son candidatos a la recuperación los mensajesque han especificado valores en esos campos. El valor por omisión para elcampo GMMO (si la aplicación no lo altera) es emparejar el identificador demensaje y el identificador de correlación.

Normalmente, el mensaje devuelto es el primer mensaje de la cola que satisfaceel criterio de selección. Pero si se especifica GMBRWN, el mensaje devuelto esel siguiente mensaje que satisface los criterios de selección; la exploración enbusca de este mensaje comienza con el mensaje situado a continuación de laposición actual del cursor.

Nota: La cola se explora por orden en busca de un mensaje que satisfagadichos criterios, por lo que los tiempos de recuperación son menores quesi no se especifica ningún criterio de selección, sobre todo si hay queexplorar muchos mensajes antes de dar con el adecuado.

Consulte la Tabla 16 en la página 64 para obtener más información acerca decómo se utilizan los criterios de selección en diferentes situaciones.

Especificar MINONE como identificador de mensaje tiene el mismo efecto queno especificar MOMSGI, es decir, cualquier identificador de mensaje coincidirá.

MQMD - Descriptor de mensaje

114 Consulta de programación de aplicaciones (ILE RPG)

Page 129: amqwak00

Este campo se pasa por alto si la opción GMMUC se especifica en el parámetroGMO de la llamada MQGET.

Al regreso de una llamada MQGET, el campo MDMID se establece en elidentificador del mensaje devuelto (si lo hay).

Se pueden utilizar los siguientes valores especiales:

MINONENo se especifica ningún identificador de mensaje.

El valor de la longitud del campo es cero binario.

Es un campo de entrada/salida para las llamadas MQGET, MQPUT yMQPUT1. La longitud de este campo la proporciona LNMID. El valor inicialdel campo es MINONE.

MDCID (serie de bits de 24 bytes)Identificador de correlación.

Es una serie de bytes que la aplicación puede utilizar para relacionar unmensaje con otro, o para relacionar el mensaje con otro trabajo que laaplicación realiza. El identificador de correlación es propiedad permanente delmensaje, y sigue existiendo tras los rearranques del gestor de colas. Como elidentificador de correlación es una serie de bytes y no una serie de caracteres,no se convierten los juegos de caracteres del identificador de correlacióncuando el mensaje va de un gestor de colas a otro.

Para las llamadas MQPUT y MQPUT1, la aplicación puede especificarcualquier valor. El gestor de colas transmite este valor con el mensaje y loentrega a la aplicación que emite la petición de obtención del mensaje.

Si la aplicación especifica PMNCID, el gestor de colas genera un identificadorde correlación exclusivo que se envía con el mensaje, y que también sedevuelve a la aplicación emisora en la salida de la llamada MQPUT oMQPUT1.

El gestor de colas o el agente de canal de mensajes, al generar un mensaje deinforme, establece el campo MDCID en la forma especificada por el campo MDREPdel mensaje original, ya sea ROCMTC o ROPCI. Las aplicaciones que generanmensajes de informe también deben hacer esto.

Para la llamada MQGET, MDCID es uno de los cinco campos que se puedenutilizar para seleccionar que un mensaje determinado se recupere de la cola.Vea la descripción del campo MDMID para obtener información detallada acercade cómo especificar valores para este campo.

Especificar CINONE como identificador de correlación tiene el mismo efectoque no especificar MOCORI, es decir, cualquier identificador de correlacióncoincidirá.

Si se especifica la opción GMMUC en el parámetro GMO en la llamada MQGET,este campo se pasa por alto.

Al regreso de una llamada MQGET, el campo MDCID se establece en elidentificador de correlación del mensaje devuelto (si lo hay).

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 115

Page 130: amqwak00

Se pueden utilizar los siguientes valores especiales:

CINONENo se especifica ningún identificador de correlación.

El valor de la longitud del campo es cero binario.

CINEWSEl mensaje es el inicio de una nueva sesión.

Este valor lo reconoce el puente CICS como indicativo del comienzo deuna nueva sesión, es decir, del principio de una nueva secuencia demensajes.

Para la llamada MQGET, es un campo de entrada/salida. Para las llamadasMQPUT y MQPUT1, es un campo de entrada si PMNCID no se especifica, yun campo de salida si PMNCID sí se especifica. La longitud de este campo laproporciona LNCID. El valor inicial del campo es CINONE.

MDBOC (entero con signo de 10 dígitos)Contador de restitución.

Es una cuenta del número de veces que la llamada MQGET había devueltoanteriormente el mensaje como parte de una unidad de trabajo y lo habíarestituido a continuación. Constituye una ayuda para que la aplicación detecteerrores de proceso basados en el contenido del mensaje. La cuenta excluye lasllamadas MQGET que especificaron cualquiera de las opciones GMBRW*.

La exactitud de este recuento está afectada por el atributo de cola localHardenGetBackout; consulte el “Capítulo 38. Atributos de colas locales y colasmodelo” en la página 311.

Es un campo de salida para la llamada MQGET. Se pasa por alto para lasllamadas MQPUT y MQPUT1. El valor inicial de este campo es 0.

MDRQ (serie de caracteres de 48 bytes)Nombre de la cola de respuestas.

Es el nombre de la cola de mensajes a la que la aplicación que emitió lapetición de obtención del mensaje debe enviar los mensajes MTRPLY yMTRPRT. Es el nombre local de una cola que se define en el gestor de colasidentificado por MDRM. Esta cola no debe ser una cola modelo, aunque el gestorde colas emisor no verifica esta circunstancia al poner el mensaje.

Para las llamadas MQPUT y MQPUT1, este campo no debe estar en blanco siel campo MDMT tiene el valor MTRQST, o si el campo MDREP no solicita ningúninforme. Sin embargo, el valor especificado (o sustituido, véase a continuación)se pasa a la aplicación que emite la petición de obtener el mensaje,independientemente del tipo de mensaje.

Si el campo MDRM está en blanco, el gestor de colas buscará el nombre MDRQ ensus propias definiciones de cola. Si existe una definición local de una colaremota con ese nombre, el valor MDRQ del mensaje transmitido se sustituirá porel valor del atributo RemoteQName de la definición de la cola remota, y estevalor se devolverá en el descriptor de mensaje cuando la aplicación receptoraemita una llamada MQGET para obtener el mensaje. Si no existe una definiciónlocal de una cola remota, MDRQ no cambia.

MQMD - Descriptor de mensaje

116 Consulta de programación de aplicaciones (ILE RPG)

Page 131: amqwak00

Si se especifica el nombre, este puede contener blancos finales; el primercarácter nulo y los caracteres que le siguen se tratan como blancos. De locontrario, no se comprobará si el nombre satisface las normas de los nombresde cola; y lo mismo ocurre con el nombre transmitido si el campo MDRQ sesustituye en el mensaje transmitido. Solo se comprueba si se ha especificado unnombre, si las circunstancias así lo requieren.

Si no es necesaria una cola de respuestas, es aconsejable (aunque no secomprueba) que el campo MDRQ se establezca en blancos; el campo no debedejarse sin inicializar.

Para la llamada MQGET, el gestor de colas siempre devuelve el nombre rellenocon blancos hasta la longitud del campo.

Si un mensaje que requiere un mensaje de informe no puede entregarse y elmensaje de informe tampoco puede entregarse en la cola especificada, tanto elmensaje original como el mensaje de informe irán a la cola de mensajes noentregados (mensajes en espera); (consulte la descripción del atributoDeadLetterQName en el “Capítulo 43. Atributos del gestor de colas” en lapágina 337).

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. La longitud de este campo la proporcionaLNQN. El valor inicial del campo son 48 caracteres en blanco.

MDRM (serie de caracteres de 48 bytes)Nombre del gestor de la cola de respuestas.

Es el nombre del gestor de colas al que debe enviar el mensaje de respuesta oel mensaje de informe. MDRQ es el nombre local de una cola definida en estegestor de colas.

Si el campo MDRM está en blanco, el gestor de colas local buscará el nombre MDRQen sus definiciones de cola. Si existe una definición local de una cola remotacon ese nombre, el valor de MDRM del mensaje transmitido se sustituirá por elvalor del atributo RemoteQMgrName de la definición de la cola remota, y estevalor se devolverá en el descriptor de mensaje cuando la aplicación receptoraemita una llamada MQGET para obtener el mensaje. Si no existe una definiciónlocal de una cola remota, el MDRM que se transmite con el mensaje es el nombredel gestor de colas local.

Si se especifica el nombre, este puede contener blancos finales; el primercarácter nulo y los caracteres que le siguen se tratan como blancos. De locontrario, no se comprobará si el nombre satisface las normas para nombres decola o si el gestor de colas emisor conoce este nombre; y lo mismo ocurre conel nombre transmitido si el MDRM se sustituye en el mensaje transmitido. Paramás información sobre nombres, consulte la publicación MQSeries ApplicationProgramming Guide.

Si no es necesaria una cola de respuestas, es aconsejable (aunque no secomprueba) que el campo MDRM se establezca en blancos; el campo no debedejarse sin inicializar.

Para la llamada MQGET, el gestor de colas siempre devuelve el nombre rellenocon blancos hasta la longitud del campo.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 117

Page 132: amqwak00

Es un campo de salida para la llamada MQGET, y un campo de entrada paralas llamadas MQPUT y MQPUT1. La longitud de este campo la proporcionaLNQMN. El valor inicial del campo son 48 caracteres en blanco.

MDUID (serie de caracteres de 12 bytes)Identificador de usuario.

Los campos de MDUID a MDAOD contienen el contexto de identidad y el contextode origen del mensaje. Por lo general:v El contexto de identidad se refiere a la aplicación que puso el mensaje

originalmente

v El contexto de origen se refiere a la aplicación que ha puesto el mensaje másrecientemente.

Estas dos aplicaciones pueden ser la misma, pero también pueden seraplicaciones diferentes (por ejemplo, cuando se reenvía un mensaje de unaaplicación a otra).

Aunque los contextos de identidad y de origen suelen tener los significadosdescritos, el contenido de ambos tipos de contexto depende en realidad de lasopciones PM* que se han especificado al poner el mensaje. Como resultado, elcontexto de identidad no se refiere necesariamente a la aplicación quetransfirió el mensaje originalmente, y el contexto de origen no se refierenecesariamente a la aplicación que lo ha transferido más recientemente; estodepende del diseño de la suite de aplicaciones.

Existe una clase de aplicación que nunca altera el contexto de mensaje, a saber,el agente de canal de mensajes (MCA). Los MCA que reciben mensajes de losgestores de colas remotos utilizan la opción de contexto PMSETA en la llamadaMQPUT o MQPUT1. Esto permite al MCA receptor conservar exactamenteigual el contexto de mensaje que ha viajado con el mensaje desde el MCAemisor. No obstante, el resultado es que el contexto de origen no se refiere a laaplicación que ha puesto el mensaje más recientemente (el MCA receptor), sinoque se refiere a una aplicación anterior que puso el mensaje (posiblemente lapropia aplicación que lo originó).

En las descripciones siguientes, los campos de contexto se describen como si seutilizaran en la forma normal. Para obtener más información acerca delcontexto de mensaje, consulte la publicación MQSeries Application ProgrammingGuide.

MDUID forma parte del contexto de identidad del mensaje. Especifica elidentificador de usuario de la aplicación que originó el mensaje. El gestor decolas trata esta información como datos de tipo carácter, pero no define suformato.

Después de haber recibido un mensaje, MDUID se puede utilizar en el campoODAU del parámetro OBJDSC de una llamada MQOPEN o MQPUT1 posterior,para que la comprobación de autorización se lleve a cabo para el usuario MDUIDen lugar de la aplicación que realiza la apertura.

Cuando el gestor de colas genera esta información para una llamada MQPUT oMQPUT1:v En OS/390, el gestor de colas utiliza el ODAU del parámetro OBJDSC de la

llamada MQOPEN o MQPUT1 si se ha especificado la opción OOALTU o

MQMD - Descriptor de mensaje

118 Consulta de programación de aplicaciones (ILE RPG)

||

||

Page 133: amqwak00

PMALTU. Si no se ha especificado la opción pertinente, el gestor de colasutiliza un identificador de usuario determinado desde el entorno.

v En otros entornos, el gestor de colas siempre utiliza un identificador deusuario determinado desde el entorno.

Cuando el identificador de usuario se determina desde el entorno:v En OS/400, el gestor de colas utiliza el nombre del perfil de usuario

asociado con el trabajo de la aplicación.

Para las llamadas MQPUT y MQPUT1, es un campo de entrada/salida si se haespecificado PMSETI o PMSETA en el parámetro PMO. Cualquier informaciónque siga a un carácter nulo dentro del campo se pasará por alto. El gestor decolas convierte en blancos el carácter nulo y todos los caracteres que le siguen.Si no se ha especificado PMSETI o PMSETA, este campo se pasa por alto a laentrada y solo es un campo de salida.

Tras la finalización satisfactoria de una llamada MQPUT o MQPUT1, estecampo contiene el MDUID que se transmitió con el mensaje. Si el mensaje notiene contexto, el campo está completamente en blanco.

Es un campo de salida para la llamada MQGET. La longitud del campo laproporciona LNUID. El valor inicial del campo son 12 caracteres en blanco.

MDACC (serie de bits de 32 bytes)Código de contabilidad.

Forma parte del contexto de identidad del mensaje. Para obtener másinformación acerca del contexto de mensaje, consulte la descripción del campoMDUID ya mencionada; consulte también la publicación MQSeries ApplicationProgramming Guide.

MDACC permite a una aplicación cargar correctamente el trabajo realizado comoresultado del mensaje. El gestor de colas trata esta información como una seriede bits y no comprueba su contenido.

Cuando el gestor de colas genera esta información, se establece de la siguientemanera:v El primer byte del campo se establece en la longitud de la información de

contabilidad que está presente en los bytes que le siguen; esta longitud estáen el rango de cero a 30, y se almacena en el primer byte como un enterobinario.

v Los bytes segundo y siguientes (según lo indicado por la longitud delcampo) se establecen en la información de contabilidad adecuada al entorno.– En OS/400, la información de contabilidad se establece en el código de

contabilidad del trabajo.v El último byte se establece en el tipo de símbolo de contabilidad, que es uno

de los siguientes valores:ATTCIC

Identificador LUOW de CICS.ATTDOS

Símbolo de contabilidad por omisión de cliente DOS.ATTWNT

Identificador de seguridad de Windows NT.ATTOS2

Símbolo de contabilidad por omisión de OS/2.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 119

||

||

|

|

||||||||||

Page 134: amqwak00

ATT400Símbolo de contabilidad de OS/400.

ATTUNXIdentificador numérico de sistemas UNIX.

ATTWINSímbolo de contabilidad por omisión de cliente Windows, Windowsde 16 bits o Windows de 32 bits.

ATTUSRSímbolo de contabilidad definido por usuario.

ATTUNKTipo de símbolo de contabilidad desconocido.

El tipo de símbolo de contabilidad se establece en un valor explícito solo enlos siguientes entornos: AIX, cliente DOS, HP-UX, OS/2, Sun Solaris, clienteWindows y Windows NT. En otros entornos, el tipo de símbolo decontabilidad se establece en el valor ATTUNK. En estos entornos, el campoMDPAT se puede utilizar para deducir el tipo de símbolo de contabilidadrecibido.

v Todos los demás bytes se establecen en ceros binarios.

Para las llamadas MQPUT y MQPUT1, es un campo de entrada/salida si se haespecificado PMSETI o PMSETA en el parámetro PMO. Si no se ha especificadoPMSETI o PMSETA, este campo se pasa por alto a la entrada y solo es uncampo de salida. Para obtener más información sobre el contexto de mensaje,consulte la publicación MQSeries Application Programming Guide.

Tras la finalización satisfactoria de una llamada MQPUT o MQPUT1, estecampo contiene el MDACC que se transmitió con el mensaje. Si el mensaje notiene contexto, el campo contiene únicamente ceros binarios.

Es un campo de salida para la llamada MQGET.

Este campo no está sujeto a ninguna conversión basada en el juego decaracteres del gestor de colas—el campo se trata como una serie de bits y nocomo una serie de caracteres.

El gestor de colas no hace nada con la información de este campo. Laaplicación debe interpretar la información si desea utilizarla para lacontabilidad.

Se puede utilizar el siguiente valor especial para el campo MDACC:

ACNONENo se especifica ningún símbolo de contabilidad.

El valor de la longitud del campo es cero binario.

La longitud de este campo la proporciona LNACCT. El valor inicial del campoes ACNONE.

MDAID (serie de caracteres de 32 bytes)Datos de la aplicación relacionados con la identidad.

Forma parte del contexto de identidad del mensaje. Para obtener másinformación acerca del contexto de mensaje, consulte la descripción del campoMDUID ya mencionada; consulte también la publicación MQSeries ApplicationProgramming Guide.

MQMD - Descriptor de mensaje

120 Consulta de programación de aplicaciones (ILE RPG)

|||||||||||

||||||

Page 135: amqwak00

MDAID es información definida por la suite de aplicaciones y se puede utilizarpara proporcionar información adicional acerca del mensaje o su originador. Elgestor de colas trata esta información como datos de tipo carácter, pero nodefine su formato. Al generarla, está completamente en blanco.

Para las llamadas MQPUT y MQPUT1, es un campo de entrada/salida si se haespecificado PMSETI o PMSETA en el parámetro PMO. El gestor de colasconvierte en blancos el carácter nulo y todos los caracteres que le siguen, si esque hay alguno. Si no se ha especificado PMSETI o PMSETA, este campo sepasa por alto a la entrada y solo es un campo de salida. Para obtener másinformación sobre el contexto de mensaje, consulte la publicación MQSeriesApplication Programming Guide.

Tras la finalización satisfactoria de una llamada MQPUT o MQPUT1, estecampo contiene el MDAID que se transmitió con el mensaje. Si el mensaje notiene contexto, el campo está completamente en blanco.

En VSE/ESA, es un campo reservado.

Es un campo de salida para la llamada MQGET. La longitud de este campo laproporciona LNAIDD. El valor inicial del campo son 32 caracteres en blanco.

MDPAT (entero con signo de 10 dígitos)Tipo de aplicación que puso el mensaje.

Forma parte del contexto de origen del mensaje. Para obtener más informaciónacerca del contexto de mensaje, consulte la descripción del campo MDUID yamencionada; consulte también la publicación MQSeries Application ProgrammingGuide.

MDPAT puede tener uno de los siguientes tipos estándar. También puedenutilizarse tipos definidos por el usuario, pero deben limitarse a valores queestén dentro del rango de ATUFST a ATULST.

ATAIXAplicación AIX (el mismo valor que ATUNIX).

ATCICSTransacción CICS.

ATCICBPuente CICS.

ATVSETransacción CICS/VSE.

ATDOSAplicación cliente DOS

ATGUARAplicación Tandem Guardian (el mismo valor que ATNSK).

ATIMSAplicación IMS

ATIMSBPuente IMS.

ATMVSAplicación OS/390 o TSO (el mismo valor que AT390).

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 121

|

||

||

||

Page 136: amqwak00

ATNOTEAplicación Lotus Notes Agent.

ATNSKAplicación Tandem NonStop Kernel.

ATOS2Aplicación OS/2 o Presentation Manager.

AT390 Aplicación OS/390.

AT400 Aplicación OS/400

ATQMMensaje generado por el gestor de colas.

ATUNIXAplicación UNIX.

ATVMSAplicación Digital OpenVMS.

ATVOSAplicación Stratus VOS.

ATWINAplicación cliente Windows o Windows de 16 bits.

ATWINTAplicación Windows NT o Windows de 32 bits.

ATXCFXCF.

ATDEFTipo de aplicación por omisión.

Es el tipo de aplicación por omisión para la plataforma en la que seejecuta la aplicación.

Nota: El valor de esta constante es específico del entorno.

ATUNKTipo de aplicación desconocido.

Este valor puede utilizarse para indicar que el tipo de aplicación no seconoce, incluso si hay otra información de contexto.

ATUFSTValor inferior del tipo de aplicación definido por usuario.

ATULSTValor superior del tipo de aplicación definido por usuario.

También puede darse el siguiente valor especial:

ATNCONNo hay información de contexto en el mensaje.

Este valor lo establece el gestor de colas cuando se transfiere unmensaje sin contexto (es decir, se especifica la opción de contextoPMNOC).

Cuando se recupera un mensaje, puede probarse este valor de MDPATpara decidir si el mensaje tiene contexto (se recomienda que una

MQMD - Descriptor de mensaje

122 Consulta de programación de aplicaciones (ILE RPG)

||

||

||

||

||

Page 137: amqwak00

aplicación que utilice PMSETA no establezca nunca MDPAT en ATNCON,si cualquiera de los demás campos de contexto no está en blanco).

Cuando el gestor de colas genera esta información como resultado de unatransferencia de la aplicación, el campo se establece en un valor determinadopor el entorno. Tenga en cuenta que, en OS/400, se establece en AT400; elgestor de colas nunca utiliza ATCICS en OS/400.

Para las llamadas MQPUT y MQPUT1, es un campo de entrada/salida si se haespecificado PMSETA en el parámetro PMO. Si no se ha especificado PMSETA,este campo se pasa por alto a la entrada y solo es un campo de salida.

Tras la finalización satisfactoria de una llamada MQPUT o MQPUT1, estecampo contiene el MDPAT que se transmitió con el mensaje. Si el mensaje notiene contexto, el campo se establece en ATNCON.

Es un campo de salida para la llamada MQGET. El valor inicial de este campoes ATNCON.

MDPAN (serie de caracteres de 28 bytes)Nombre de la aplicación que pone el mensaje.

Forma parte del contexto de origen del mensaje. Para obtener más informaciónacerca del contexto de mensaje, consulte la descripción del campo MDUID yamencionada; consulte también la publicación MQSeries Application ProgrammingGuide.

El formato de MDPAN depende del valor de MDPAT.

Cuando el gestor de colas establece este campo (es decir, para todas lasopciones salvo para PMSETA), se le asigna el valor determinado por elentorno:v En OS/400, el gestor de colas utiliza el nombre del trabajo totalmente

calificado.

Para las llamadas MQPUT y MQPUT1, es un campo de entrada/salida si se haespecificado PMSETA en el parámetro PMO. Cualquier información que siga aun carácter nulo dentro del campo se pasará por alto. El gestor de colasconvierte en blancos el carácter nulo y todos los caracteres que le siguen. Si nose ha especificado PMSETA, este campo se pasa por alto a la entrada y solo esun campo de salida.

Tras la finalización satisfactoria de una llamada MQPUT o MQPUT1, estecampo contiene el MDPAN que se transmitió con el mensaje. Si el mensaje notiene contexto, el campo está completamente en blanco.

Es un campo de salida para la llamada MQGET. La longitud de este campo laproporciona LNPAN. El valor inicial del campo son 28 caracteres en blanco.

MDPD (serie de caracteres de 8 bytes)Fecha en que se puso el mensaje.

Forma parte del contexto de origen del mensaje. Para obtener más informaciónacerca del contexto de mensaje, consulte la descripción del campo MDUID yamencionada; consulte también la publicación MQSeries Application ProgrammingGuide.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 123

Page 138: amqwak00

El formato utilizado para la fecha cuando este campo lo genera el gestor decolas es el siguiente:

AAAAMMDD

donde los caracteres representan lo siguiente:AAAA

año (cuatro números)MM mes del año (de 01 a 12)DD día del mes (de 01 a 31)

En los campos MDPD y MDPT se utiliza la Hora del Meridiano de Greenwich(GMT), suponiendo que el reloj del sistema se haya ajustado correctamentesegún la GMT.

Si el mensaje se transfirió como parte de una unidad de trabajo, la fecha indicacuándo se transfirió el mensaje y no cuándo se comprometió la unidad detrabajo.

Para las llamadas MQPUT y MQPUT1, es un campo de entrada/salida si se haespecicado PMSETA en el parámetro PMO. El gestor de colas no comprueba elcontenido del campo excepto si se descarta cualquier información que siga aun carácter nulo dentro del campo. El gestor de colas convierte en blancos elcarácter nulo y todos los caracteres que le siguen. Si no se ha especificadoPMSETA, este campo se pasa por alto en la entrada y es un campo de solosalida.

Tras la conclusión satisfactoria de una llamada MQPUT o MQPUT1, estecampo contiene el MDPD que se transmitió con el mensaje. Si el mensaje no tienecontexto, el campo está completamente en blanco.

En VSE/ESA, es un campo reservado.

Es un campo de salida para la llamada MQGET. La longitud de este campo laproporciona LNPDAT. El valor inicial del campo son 8 caracteres en blanco.

MDPT (serie de caracteres de 8 bytes)Hora en que se transfirió el mensaje.

Forma parte del contexto de origen del mensaje. Para obtener más informaciónacerca del contexto de mensaje, consulte la descripción del campo MDUID yamencionada; consulte también la publicación MQSeries Application ProgrammingGuide.

El formato utilizado para la hora cuando el gestor de colas genera este campoes el siguiente:

HHMMSSTH

donde los caracteres representan (por orden), lo siguiente:HH horas (de 00 a 23)MM minutos (de 00 a 59)SS segundos (de 00 a 59; véase la siguiente nota)T décimas de segundo (de 0 a 9)H centésimas de segundo (de 0 a 9)

Nota: Si el reloj del sistema está sincronizado para una hora estándar muyexacta, es posible que en algunas ocasiones, poco frecuentes, se devuelva60 ó 61 para los segundos en MDPT. Esto sucede cuando se insertan

MQMD - Descriptor de mensaje

124 Consulta de programación de aplicaciones (ILE RPG)

|

Page 139: amqwak00

segundos de año bisiesto en la hora global estándar.En los campos MDPD y MDPT se utiliza la Hora del Meridiano de Greenwich(GMT), suponiendo que el reloj del sistema se haya ajustado correctamentesegún la GMT.

Si el mensaje se transfirió como parte de una unidad de trabajo, la hora indicacuándo se transfirió el mensaje y no cuándo se comprometió la unidad detrabajo.

Para las llamadas MQPUT y MQPUT1, es un campo de entrada/salida si se haespecicado PMSETA en el parámetro PMO. El gestor de colas no comprueba elcontenido del campo excepto si se descarta cualquier información que siga aun carácter nulo dentro del campo. El gestor de colas convierte en blancos elcarácter nulo y todos los caracteres que le siguen. Si no se ha especificadoPMSETA, este campo se pasa por alto a la entrada y solo es un campo desalida.

Tras la finalización satisfactoria de una llamada MQPUT o MQPUT1, estecampo contiene el MDPT que se transmitió con el mensaje. Si el mensaje no tienecontexto, el campo está completamente en blanco.

En VSE/ESA, es un campo reservado.

Es un campo de salida para la llamada MQGET. La longitud de este campo laproporciona LNPTIM. El valor inicial del campo son 8 caracteres en blanco.

MDAOD (serie de caracteres de 4 bytes)Datos de la aplicación relacionados con el origen.

Forma parte del contexto de origen del mensaje. Para obtener más informaciónacerca del contexto de mensaje, consulte la descripción del campo MDUID yamencionada; consulte también la publicación MQSeries Application ProgrammingGuide.

MDAOD es información definida por la suite de aplicaciones, que se puedeutilizar para proporcionar información adicional acerca del origen del mensaje.Por ejemplo, lo pueden establecer aplicaciones autorizadas convenientementepara indicar si los datos de identidad son fiables.

El gestor de colas trata esta información como datos de tipo carácter, pero nodefine su formato. Al generarla, está completamente en blanco.

Para las llamadas MQPUT y MQPUT1, es un campo de entrada/salida si se haespecicado PMSETA en el parámetro PMO. Cualquier información que siga a uncarácter nulo dentro del campo se pasará por alto. El gestor de colas convierteen blancos el carácter nulo y todos los caracteres que le siguen. Si no se haespecificado PMSETA, este campo se pasa por alto a la entrada y solo es uncampo de salida.

Tras la finalización satisfactoria de una llamada MQPUT o MQPUT1, estecampo contiene el MDAOD que se transmitió con el mensaje. Si el mensaje notiene contexto, el campo está completamente en blanco.

En VSE/ESA, es un campo reservado.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 125

|

|

Page 140: amqwak00

Es un campo de salida para la llamada MQGET. La longitud de este campo laproporciona LNAORD. El valor inicial del campo son 4 caracteres en blanco.

Los campos restantes no están presentes si MDVER es menor que MDVER2.

MDGID (serie de bits de 24 bytes)Identificador de grupo.

Es una serie de bytes que se utiliza para identificar el mensaje lógico o grupode mensajes determinado al que pertenece el mensaje físico. MDGID también seutiliza si se permite la segmentación del mensaje. En todos estos casos, MDGIDtiene un valor diferente del nulo, y se establece uno o más de los siguientesdistintivos en el campo MDMFL:

MFMIGMFLMIGMFSEGMFLSEGMFSEGA

Si no se establece ninguno de estos distintivos, MDGID tiene el valor nuloespecial GINONE.

No es necesario que la aplicación establezca este campo en la llamada MQPUTo MQGET cuando:v En la llamada MQPUT se especifica PMLOGO.v En la llamada MQGET no se especifica MOGRPI.

Estas son las maneras recomendadas de utilizar esas llamadas para losmensajes que no son mensajes de informe. Sin embargo, si la aplicaciónrequiere más control o la llamada es MQPUT1, la aplicación debe garantizarque MDGID se ha establecido con un valor adecuado.

Los segmentos y grupos de mensajes solo se pueden procesar correctamente siel identificador de grupo es exclusivo. Por este motivo, las aplicaciones no debengenerar sus propios identificadores de grupo; en cambio, deben realizar una de lassiguientes acciones:v Si se especifica PMLOGO, el gestor de colas genera automáticamente un

identificador de grupo exclusivo para el primer mensaje del grupo osegmento del mensaje lógico, y utiliza ese identificador de grupo para losmensajes restantes del grupo o los segmentos del mensaje lógico, de talmanera que la aplicación no tiene que realizar ninguna acción especial. Estees el procedimiento aconsejado.

v Si PMLOGO no se especifica, la aplicación debe solicitar al gestor de colarque genere el identificador de grupo, estableciendo MDGID en GINONE en laprimera llamada MQPUT o MQPUT1 para un mensaje del grupo osegmento del mensaje lógico. El identificador de grupo devuelto por elgestor de colas como salida de esa llamada debe utilizarse a continuaciónpara los restantes mensajes del grupo o segmentos del mensaje lógico. Si ungrupo de mensajes contiene mensajes segmentados, debe utilizarse el mismoidentificador de grupo para todos los segmentos y mensajes de ese grupo.Cuando PMLOGO no se especifica, los mensajes de grupos y los segmentosde mensajes lógicos se pueden transferir en cualquier orden (por ejemplo, enorden inverso), pero el identificador de grupo debe asignarlo la primerallamada MQPUT o MQPUT1 que se emite para cualquiera de esos mensajes.

A la entrada de las llamadas MQPUT y MQPUT1, el gestor de colas utiliza elvalor que se describe detalladamente en la Tabla 31 en la página 160. Como

MQMD - Descriptor de mensaje

126 Consulta de programación de aplicaciones (ILE RPG)

Page 141: amqwak00

salida de las llamadas MQPUT y MQPUT1, el gestor de colas establece estecampo en el valor que se envió con el mensaje si el objeto abierto es una solacola y no una lista de distribución, pero lo deja sin cambios si el objeto abiertoes una lista de distribución. En el último caso, si la aplicación tiene que sabercuáles son los identificadores de grupo generados, debe proporcionar registrosMQPMR que contengan el campo PRGID.

A la entrada de la llamada MQGET, el gestor de colas utiliza el valor que sedescribe detalladamente en la Tabla 16 en la página 64. Como salida de lallamada MQGET, el gestor de colas establece este campo en el valor para elmensaje recuperado.

Se define el siguiente valor especial:

GINONENo se especifica ningún identificador de grupo.

El valor de la longitud del campo es cero binario. Este es el valor quese utiliza para los mensajes que no están en grupos, que no sonsegmentos de mensajes lógicos y para los que no se permite lasegmentación.

La longitud de este campo la proporciona LNGID. El valor inicial del campo esGINONE. Este campo no está presente si MDVER es menor que MDVER2.

MDSEQ (entero con signo de 10 dígitos)Número de secuencia de mensaje lógico en grupo.

Los números de secuencia empiezan por el 1, y aumentan en 1 para cadanuevo mensaje lógico del grupo, hasta un máximo de 999 999 999. Losmensajes físicos que no están en un grupo tienen el número de secuencia 1.

No es necesario que la aplicación establezca este campo en la llamada MQPUTo MQGET cuando:v En la llamada MQPUT se especifica PMLOGO.v En la llamada MQGET no se especifica MOSEQN.

Estas son las maneras recomendadas de utilizar esas llamadas para losmensajes que no son mensajes de informe. Sin embargo, si la aplicaciónrequiere más control o la llamada es MQPUT1, la aplicación debe garantizarque MDSEQ se ha establecido con un valor adecuado.

A la entrada de las llamadas MQPUT y MQPUT1, el gestor de colas utiliza elvalor que se describe detalladamente en la Tabla 31 en la página 160. Comosalida de las llamadas MQPUT y MQPUT1, el gestor de colas establece estecampo en el valor que se envió con el mensaje.

Como entrada de la llamada MQGET, el gestor de colas utiliza el valor que sedescribe detalladamente en la Tabla 16 en la página 64. Como salida de lallamada MQGET, el gestor de colas establece este campo en el valor para elmensaje recuperado.

El valor inicial de este campo es uno. Este campo no está presente si MDVER esmenor que MDVER2.

MDOFF (entero con signo de 10 dígitos)Desplazamiento de datos en mensaje físico desde principio de mensaje lógico.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 127

Page 142: amqwak00

Es el desplazamiento, en bytes, de los datos del mensaje físico desde elprincipio del mensaje lógico del que forman parte los datos. Estos datos sellaman segmento. El desplazamiento está en el rango de 0 a 999 999 999. Losmensajes físicos que no son segmentos de mensajes lógicos tienen undesplazamiento cero.

No es necesario que la aplicación establezca este campo en la llamada MQPUTo MQGET cuando:v En la llamada MQPUT se especifica PMLOGO.v En la llamada MQGET no se especifica MOOFFS.

Estas son las maneras recomendadas de utilizar esas llamadas para losmensajes que no son mensajes de informe. Sin embargo, si la aplicación nocumple estas condiciones o la llamada es MQPUT1, la aplicación debegarantizar que MDOFF se ha establecido con un valor adecuado.

A la entrada de las llamadas MQPUT y MQPUT1, el gestor de colas utiliza elvalor que se describe detalladamente en la Tabla 31 en la página 160. Comosalida de las llamadas MQPUT y MQPUT1, el gestor de colas establece estecampo en el valor que se envió con el mensaje.

Para un mensaje de informe que informa acerca de un segmento de unmensaje lógico, el campo MDOLN (siempre que no sea OLUNDF) se utiliza paraactualizar el desplazamiento en la información de segmento retenida por elgestor de colas.

A la entrada de la llamada MQGET, el gestor de colas utiliza el valor que sedescribe detalladamente en la Tabla 16 en la página 64. Como salida de lallamada MQGET, el gestor de colas establece este campo en el valor para elmensaje recuperado.

El valor inicial de este campo es cero. Este campo no está presente si MDVER esmenor que MDVER2.

MDMFL (entero con signo de 10 dígitos)Distintivos de mensaje.

Son distintivos que especifican atributos del mensaje, o que controlan suproceso. Los distintivos se dividen en las siguientes categorías:v Distintivo de segmentaciónv Distintivos de estado

Ambos se describen a continuación.

Distintivo de segmentación: cuando un mensaje es demasiado grande parauna cola, el intento de ponerlo en la cola no suele ser satisfactorio. Lasegmentación es una técnica en la que el gestor de colas o la aplicación divideel mensaje en trozos más pequeños llamados segmentos, y coloca cadasegmento en la cola como un mensaje físico aparte. La aplicación que recuperael mensaje puede recuperar los segmentos uno por uno, o solicitar que elgestor de colas reensamble los segmentos en un único mensaje que es devueltopor la llamada MQGET. Esto último se consigue especificando la opciónGMCMPM en la llamada MQGET, y suministrando un almacenamientointermedio que sea lo bastante grande para dar cabida al mensaje completo.(Consulte el “Capítulo 8. MQGMO - Opciones de obtener mensaje” en lapágina 51 para obtener información detallada acerca de la opción GMCMPM.)

MQMD - Descriptor de mensaje

128 Consulta de programación de aplicaciones (ILE RPG)

Page 143: amqwak00

La segmentación de un mensaje puede producirse en el gestor de colas emisor,en un gestor de colas intermedio o en el gestor de colas destino.

Se puede especificar uno de los siguientes valores para controlar lasegmentación de un mensaje:

MFSEGISe inhibe la segmentación.

Esta opción impide que el gestor de colas desglose el mensaje ensegmentos. Si se especifica para un mensaje que ya es un segmento,esta opción impide que el segmento se desglose en segmentos máspequeños.

El valor de este distintivo es cero binario. Es el valor por omisión.

MFSEGASe permite segmentación.

Esta opción permite que el gestor de colas desglose el mensaje ensegmentos. Si se especifica para un mensaje que ya es un segmento,esta opción permite que el segmento se desglose en segmentos máspequeños. MFSEGA se puede establecer sin que se establezcan MFSEGo MFLSEG.

Cuando el gestor de colas segmenta un mensaje, activa el distintivoMFSEG en la copia del MQMD que se envía con cada segmento, perono altera los valores de esos distintivos en el MQMD que proporcionala aplicación en la llamada MQPUT o MQPUT1. En el último segmentodel mensaje lógico, el gestor de colas también activa el distintivoMFLSEG del MQMD que se envía con el segmento.

Nota: Hay que prestar atención al poner mensajes con MFSEGA perosin PMLOGO. Si el mensaje:v No es un segmento,v No está en un grupo, yv No se está reenviando,

la aplicación debe recordar que ha de restablecer el campo MDGIDen GINONE antes de cada llamada MQPUT o MQPUT1, a fin dehacer que el gestor de colas genere un identificador de grupoexclusivo para cada mensaje. Si no se hace esto, es posible quemensajes no relacionados terminen inadvertidamente con elmismo identificador de grupo, lo que puede provocar unproceso posterior incorrecto. Consulte las descripciones delcampo MDGID y la opción PMLOGO para obtener másinformación acerca de cuándo debe restablecerse el campoMDGID.

El gestor de colas divide los mensajes en segmentos, según lasnecesidades, para garantizar que los segmentos (más cualesquieradatos de cabecera que se requieran) caben en la cola. Sin embargo,existe un límite para el tamaño de los segmentos generados por elgestor de colas (véase a continuación), y solo el último segmentocreado de un mensaje puede ser más pequeño que este límite. El límiteinferior para el tamaño de un segmento generado por aplicación es deun byte. Los segmentos generados por el gestor de colas pueden tenerlongitudes desiguales. El gestor de colas procesa los mensajes de lasiguiente forma:

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 129

Page 144: amqwak00

v Los formatos definidos por usuario se dividen en límites que sonmúltiplos de 16 bytes. Esto significa que el gestor de colas nogenerará segmentos más pequeños de 16 bytes (que no sean elúltimo segmento).

v Los formatos incorporados que no son FMSTR se dividen en lospuntos adecuados en función de la naturaleza de los datos presentes.No obstante, el gestor de colas nunca divide un mensaje en mediode una estructura de cabecera MQ. Esto significa que el gestor decolas no puede dividir más el segmento que contiene una únicaestructura de cabecera MQ y que, como resultado, el tamaño desegmento mínimo posible para ese mensaje es mayor que 16 bytes.El segundo o último segmento generado por el gestor de colasempezará con uno de los siguientes elementos:– Una estructura de cabecera MQ– El principio de los datos de mensaje de aplicación– En mitad de los datos de mensaje de aplicación

v FMSTR se divide sin tener en cuenta la naturaleza de los datospresentes (SBCS, DBCS o SBCS/DBCS mixto). Cuando la serie esDBCS o SBCS/DBCS mixto, esto puede tener como resultadosegmentos cuyo juego de caracteres no se puede convertir de uno aotro (véase a continuación). El gestor de colas nunca divide mensajesFMSTR en segmentos más pequeños que 16 bytes (que no sean elúltimo segmento).

v El gestor de colas establece los campos MDFMT, MDCSI y MDENC en elMQMD de cada segmento para describir correctamente los datos queestán presentes al principio del segmento; el nombre del formato seráel de un formato incorporado o el de un formato definido porusuario.

v El campo MDREP en el MQMD de los segmentos con MDOFF mayor quecero se modifica de la siguiente forma:– Para cada tipo de informe, si la opción de informe es RO*D pero

el segmento no puede contener nunca ninguno de los primeros100 bytes de los datos de usuario (es decir, los datos que siguen acualesquiera estructuras de cabecera MQ que puedan estarpresentes), la opción de informe cambia a RO*.

El gestor de colas cumple las reglas mencionadas, pero por lo demásdivide los mensajes de la forma que cree conveniente; no hay quepresuponer nada acerca de la manera en que el gestor de colas va adividir un mensaje determinado.

En los mensajes permanentes, el gestor de colas puede llevar a cabo lasegmentación únicamente dentro de una unidad de trabajo:v Si la llamada MQPUT o MQPUT1 opera dentro de una unidad de

trabajo definida por usuario, se utiliza dicha unidad de trabajo. Si lallamada falla en mitad del proceso de segmentación, el gestor decolas elimina los segmentos que se colocaron en la cola comoresultado de la llamada no satisfactoria. No obstante, la anomalía noimpide que la unidad de trabajo se comprometa de formasatisfactoria.

v Si la llamada es operativa fuera de una unidad de trabajo definidapor usuario, y no existe ninguna unidad de trabajo definida porusuario, el gestor de colas crea una unidad de trabajoexclusivamente para el tiempo que dura la llamada. Si la llamada es

MQMD - Descriptor de mensaje

130 Consulta de programación de aplicaciones (ILE RPG)

Page 145: amqwak00

satisfactoria, el gestor de colas compromete la unidad de trabajoautomáticamente (la aplicación no tiene que hacerlo). Si la llamadano es satisfactoria, el gestor de colas restituye la unidad de trabajo.

v Si la llamada es operativa fuera de una unidad de trabajo definidapor usuario, pero sí existe una unidad de trabajo definida porusuario, el gestor de colas no puede llevar a cabo la segmentación. Siel mensaje no requiere segmentación, la llamada puede sersatisfactoria. Pero si el mensaje sí requiere segmentación, la llamadafalla con el código de razón RC2255.

En mensajes no permanentes, el gestor de colas no requiere que hayadisponible una unidad de trabajo para poder llevar a cabo lasegmentación.

Hay que tener en cuenta algunas consideraciones especiales en relacióncon la conversión de datos de los mensajes que pueden estarsegmentados:v Si la conversión de datos solo la lleva a cabo la aplicación receptora

en la llamada MQGET y la aplicación especifica la opciónGMCMPM, a la rutina de salida de conversión de datos se le pasaráel mensaje completo para su conversión, y el hecho de que elmensaje estuviera segmentado no será evidente para la rutina desalida.

v Si la aplicación receptora recupera los segmentos de uno en uno, seinvocará a la rutina de salida de conversión de datos para queconvierta los segmentos de uno en uno. Por consiguiente, la rutinade salida debe ser capaz de convertir los datos de un segmentoindependientemente de los datos de cualquiera de los demássegmentos.Si la naturaleza de los datos del mensaje es tal que la segmentaciónarbitraria de los datos en límites de 16 bytes puede tener comoresultado segmentos que la rutina de salida no puede convertir, o elformato es FMSTR y el juego de caracteres es DBCS o SBCS/DBCSmixto, la propia aplicación emisora debe crear y transferir lossegmentos, especificando MFSEGI para suprimir la segmentaciónadicional. De esta forma, la aplicación emisora puede asegurar quecada segmento contiene suficiente información para permitir que larutina de salida de conversión de datos convierta el segmentosatisfactoriamente.

v Si se especifica conversión de emisor para un agente de canal demensajes (MCA) emisor, el MCA convierte únicamente los mensajesque no son segmentos de mensajes lógicos; el MCA nunca intentaconvertir mensajes que son segmentos.

Este distintivo es un distintivo de entrada en las llamadas MQPUT y MQPUT1,y un distintivo de salida en la llamada MQGET. En esta última llamada, elgestor de colas también reproduce el valor del distintivo en el campo GMSEG deMQGMO.

El valor inicial de este distintivo es MFSEGI.

Distintivos de estado: son distintivos que indican si el mensaje físico pertenecea un grupo de mensajes, es un segmento de un mensaje lógico, ambas cosas oninguna de ellas. Uno o más de los siguientes valores se puede especificar enla llamada MQPUT o MQPUT1, o puede ser devuelto por la llamada MQGET:

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 131

Page 146: amqwak00

MFMIGEl mensaje es un miembro de un grupo.

MFLMIGEl mensaje es el último mensaje lógico de un grupo.

Si se establece este distintivo, el gestor de colas activa MFMIG en lacopia del MQMD que se envía con el mensaje, pero no altera losvalores de esos distintivos en el MQMD proporcionado por laaplicación en la llamada MQPUT o MQPUT1.

Es válido que un grupo conste únicamente de un mensaje lógico. Sieste es el caso, se establece MFLMIG, pero el campo MDSEQ tiene elvalor uno.

MFSEGEl mensaje es un segmento de un mensaje lógico.

Cuando MFSEG se especifica sin MFLSEG, la longitud de los datos demensaje de aplicación del segmento (excluidas las longitudes decualesquiera estructuras de cabecera MQ que pueda haber presentes)debe ser, como mínimo, uno. Si la longitud es cero, la llamada MQPUTo MQPUT1 falla con el código de razón RC2253.

MFLSEGEl mensaje es el último segmento de un mensaje lógico.

Si se establece este distintivo, el gestor de colas activa MFSEG en lacopia del MQMD que se envía con el mensaje, pero no altera losvalores de esos distintivos en el MQMD proporcionado por laaplicación en la llamada MQPUT o MQPUT1.

Es válido que un mensaje lógico conste únicamente de un segmento. Sieste es el caso, se establece MFLSEG, pero el campo MDOFF tiene elvalor cero.

Cuando se especifica MFLSEG, se permite que la longitud de los datosde mensaje de aplicación del segmento (excluidas las longitudes decualesquiera estructuras de cabecera que pueda haber presentes) seacero.

La aplicación debe asegurar que estos distintivos están establecidoscorrectamente cuando transfiere mensajes. Si se especifica PMLOGO, o se haespecificado en la llamada MQPUT anterior para el asa de cola, los valores delos distintivos deben ser coherentes con la información de grupo y desegmento retenida por el gestor de colas para el asa de cola. Las siguientescondiciones son aplicables en las llamadas sucesivas MQPUT para el asa decola, cuando se ha especificado PMLOGO:v Si no hay grupo o mensaje lógico actual, todos estos distintivos (y sus

combinaciones) son válidos.v Una vez especificado MFMIG, debe permanecer activo hasta que se

especifica MFLMIG. Si no se satisface esta condición, la llamada falla con elcódigo de razón RC2241.

v Una vez especificado MFSEG, debe permanecer activo hasta que seespecifica MFLSEG. Si no se satisface esta condición, la llamada falla con elcódigo de razón RC2242.

v Una vez especificado MFSEG sin MFMIG, MFMIG debe permanecerdesactivado hasta haber especificado MFLSEG. Si no se satisface estacondición, la llamada falla con el código de razón RC2242.

MQMD - Descriptor de mensaje

132 Consulta de programación de aplicaciones (ILE RPG)

Page 147: amqwak00

La Tabla 31 en la página 160 muestra las combinaciones válidas de losdistintivos, y los valores utilizados para varios campos.

Estos distintivos son distintivos de entrada en las llamadas MQPUT yMQPUT1, y distintivos de salida en la llamada MQGET. En esta últimallamada, el gestor de colas también reproduce los valores de los distintivos enlos campos GMGST y GMSST de MQGMO.

Distintivos por omisión: se puede especificar lo siguiente para indicar que elmensaje tiene atributos por omisión:

MFNONESin distintivos de mensaje (atributos de mensaje por omisión).

Esto inhibe la segmentación, e indica que el mensaje no está en ungrupo y no es un segmento de un mensaje lógico. MFNONE se hadefinido como ayuda para la documentación del programa. No sepretende que este distintivo se utilice con ningún otro, pero como suvalor es cero no es posible detectar tal uso.

El campo MDMFL está particionado en subcampos; encontrará informacióndetallada en el “Apéndice E. Opciones de informe” en la página 481.

El valor inicial de este campo es MFNONE. Este campo no está presente siMDVER es menor que MDVER2.

MDOLN (entero con signo de 10 dígitos)Longitud de mensaje original.

Este campo solo es pertinente en mensajes de informe; especifica la longituddel mensaje con el que está relacionado el informe. Si el mensaje de informeinforma acerca de un segmento, MDOLN es la longitud del segmento, y no lalongitud del mensaje lógico del que forma parte el segmento, ni tampoco lalongitud de los datos del mensaje de informe.

MDOLN debe establecerlo el programa que genera el informe, pero si eseprograma no establece el campo, MDOLN tiene el siguiente valor especial:

OLUNDFLongitud original del mensaje no definida.

Es un campo de entrada en las llamadas MQPUT y MQPUT1, pero el valorproporcionado por la aplicación solo se utiliza en circunstancias determinadas:v Si el mensaje que se transfiere es un segmento pero no un mensaje de

informe, el gestor de colas pasa por alto el campo y, en cambio, utiliza lalongitud de los datos de mensaje de aplicación.

v Si el mensaje que se transfiere es un mensaje de informe que informa acercade un segmento, el gestor de colas acepta el valor especificado. El valor debeser:– Mayor que cero si el segmento no es el último segmento– No menor que cero si el segmento es el último segmento– No menor que la longitud de los datos presentes en el mensaje

Si no se satisfacen estas condiciones, la llamada falla con el código de razónRC2252.

v En todos los demás casos, el gestor de colas pasa por alto el campo y, encambio, utiliza el valor OLUNDF.

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 133

Page 148: amqwak00

Es un campo de salida en la llamada MQGET.

El valor inicial de este campo es OLUNDF. Este campo no está presente siMDVER es menor que MDVER2.

Valores iniciales y declaración RPGTabla 22. Valores iniciales de campos de MQMD

Nombre de campo Nombre de constante Valor de constante

MDSID MDSIDV 'MDbb' (Ver nota 1)

MDVER MDVER1 1

MDREP RONONE 0

MDMT MTDGRM 8

MDEXP EIULIM -1

MDFB FBNONE 0

MDENC ENNAT Vea la nota 2

MDCSI CSQM 0

MDFMT FMNONE 'bbbbbbbb'

MDPRI PRQDEF -1

MDPER PEQDEF 2

MDMID MINONE Nulos

MDCID CINONE Nulos

MDBOC Ninguno 0

MDRQ Ninguno Blancos

MDRM Ninguno Blancos

MDUID Ninguno Blancos

MDACC ACNONE Nulos

MDAID Ninguno Blancos

MDPAT ATNCON 0

MDPAN Ninguno Blancos

MDPD Ninguno Blancos

MDPT Ninguno Blancos

MDAOD Ninguno Blancos

MDGID GINONE Nulos

MDSEQ Ninguno 1

MDOFF Ninguno 0

MDMFL MFNONE 0

MDOLN OLUNDF -1

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

2. El valor de esta constante es específico del entorno.

MQMD - Descriptor de mensaje

134 Consulta de programación de aplicaciones (ILE RPG)

Page 149: amqwak00

Declaración RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQMDD*D* Identificador de estructuraD MDSID 1 4D* Número de versión de estructuraD MDVER 5 8I 0D* Opciones para mensajes de informeD MDREP 9 12I 0D* Tipo de mensajeD MDMT 13 16I 0D* Duración de mensajeD MDEXP 17 20I 0D* Código de información de retorno o de razónD MDFB 21 24I 0D* Codificación numérica de datos de mensajeD MDENC 25 28I 0D* Identificador de juego de caracteres de los datos de mensajeD MDCSI 29 32I 0D* Nombre de formato de los datos de mensajeD MDFMT 33 40D* Prioridad de mensajeD MDPRI 41 44I 0D* Permanencia de mensajeD MDPER 45 48I 0D* Identificador de mensajeD MDMID 49 72D* Identificador de correlaciónD MDCID 73 96D* Contador de restituciónD MDBOC 97 100I 0D* Nombre de cola de respuestasD MDRQ 101 148D* Nombre de gestor de colas de respuestasD MDRM 149 196D* Identificador de usuarioD MDUID 197 208D* Símbolo de contabilidadD MDACC 209 240D* Datos de aplicación relativos a identidadD MDAID 241 272D* Tipo de aplicación que pone el mensajeD MDPAT 273 276I 0D* Nombre de aplicación que pone el mensajeD MDPAN 277 304D* Fecha en que se puso el mensajeD MDPD 305 312D* Hora en que se puso el mensajeD MDPT 313 320D* Datos de aplicación relativos al origenD MDAOD 321 324D* Identificador de grupoD MDGID 325 348D* Número de secuencia de mensaje lógico en grupoD MDSEQ 349 352I 0D* Desplazamiento de datos en mensaje físico desde principioD* de mensaje lógicoD MDOFF 353 356I 0D* Distintivos de mensajeD MDMFL 357 360I 0D* Longitud de mensaje originalD MDOLN 361 364I 0

MQMD - Descriptor de mensaje

Capítulo 10. MQMD - Descriptor de mensaje 135

Page 150: amqwak00

MQMD - Descriptor de mensaje

136 Consulta de programación de aplicaciones (ILE RPG)

Page 151: amqwak00

Capítulo 11. MQMDE - Extensión de descriptor de mensaje

La tabla siguiente resume los campos de la estructura.

Tabla 23. Campos de MQMDE

Campo Descripción Página

MESID Identificador de estructura 140

MEVER Número de versión de la estructura 140

MELEN Longitud de la estructura MQMDE 140

MEENC Codificación numérica de los datos que siguen aMQMDE

140

MECSI Identificador de juego de caracteres de los datosque siguen a MQMDE

140

MEFMT Nombre de formato de los datos que siguen aMQMDE

140

MEFLG Distintivos generales 141

MEGID Identificador de grupo 141

MESEQ Número de secuencia de mensaje lógico dentrodel grupo

141

MEOFF Desplazamiento de datos del mensaje físico desdeel inicio del mensaje lógico

141

MEMFL Distintivos de mensajes 141

MEOLN Longitud del mensaje original 141

Visión generalLa estructura MQMDE describe los datos que aparecen a veces antes de los datosdel mensaje de aplicación. Las aplicaciones normales deberán utilizar un MQMDde la versión 2, en cuyo caso no se encontrarán una estructura MQMDE. Sinembargo, las aplicaciones especializadas y las aplicaciones que continúenutilizando un MQMD de la versión 1, podrían encontrar una MQMDE en algunassituaciones.

La estructura MQMDE contiene aquellos campos de MQMD que existen en elMQMD de la versión 2, pero no en el MQMD de la versión 1. Puede aparecer bajolas siguientes circunstancias:v Especificado en las llamadas MQPUT y MQPUT1v Devuelto por la llamada MQGETv En los mensajes de las colas de transmisión

Estos se describen más adelante.

MQMDE especificada en llamadas MQPUT y MQPUT1: En las llamadas MQPUTy MQPUT1, si la aplicación proporciona un MQMD de la versión 1, la aplicaciónpuede poner una MQMDE opcionalmente como prefijo de los datos del mensaje,estableciendo el campo MDFMT de MQMD en FMMDE para indicar que hay unaMQMDE presente. Si la aplicación no proporciona una MQMDE, el gestor de colastoma los valores por omisión para los campos de la MQMDE. Los valores por

© Copyright IBM Corp. 1994, 2000 137

Page 152: amqwak00

omisión que utiliza el gestor de colas son los mismos que los valores iniciales parala estructura – vea la Tabla 25 en la página 141.

Si la aplicación proporciona un MQMD de la versión 2 y pone una MQMDE comoprefijo de los datos del mensaje de aplicación, las estructuras se procesan como semuestra en la Tabla 24.

Existe un caso especial. Si la aplicación utiliza un MQMD de la versión 2 paratransferir un mensaje que es un segmento (es decir, está establecido el distintivoMFSEG o MFLSEG) y el nombre de formato del MQMD es FMDLH, el gestor decolas genera una estructura MQMDE y la inserta entre la estructura MQDLH y losdatos que siguen. En el MQMD que el gestor de colas retiene con el mensaje, seestablecen los campos de la versión 2 en sus valores por omisión.

Tabla 24. Acción del gestor de colas cuando se especifica MQMDE en MQPUT oMQPUT1. Esta tabla muestra la acción que lleva a cabo el gestor de colas cuando laaplicación especifica una estructura MQMDE al principio de los datos del mensaje deaplicación en la llamada MQPUT o MQPUT1.

Versión deMQMD

Valores de loscampos de la

versión 2

Valores de los correspondientescampos de MQMDE

Acción que lleva a cabo elgestor de colas

1 – Válido MQMDE se respeta

1 – No válido Anomalía de la llamada con uncódigo de razón adecuado

1 – MQMDE tiene un juego decaracteres o una codificaciónerróneos, o una versión nosoportada

Se trata a MQMDE como datosde mensaje

2 Por omisión Válido MQMDE se respeta

2 Por omisión No válido Anomalía de la llamada con uncódigo de razón adecuado

2 Por omisión MQMDE tiene un juego decaracteres o una codificaciónerróneos, o una versión nosoportada

Se trata a MQMDE como datosde mensaje

2 No por omisión Válidos e iguales que MQMD MQMDE se respeta

2 No por omisión Válidos, pero distintos deMQMD

Se trata a MQMDE como datosde mensaje

2 No por omisión No válido Anomalía de la llamada con uncódigo de razón adecuado

2 No por omisión MQMDE tiene un juego decaracteres o una codificaciónerróneos, o una versión nosoportada

Se trata a MQMDE como datosde mensaje

Los datos de la estructura MQMDE deben tener el mismo juego de caracteres y lamisma codificación que el gestor de colas. El juego de caracteres viene dado por elatributo de gestor de colasCodedCharSetId (vea el “Capítulo 43. Atributos del gestorde colas” en la página 337), mientras que, en la mayoría de los casos, lacodificación viene dada por el valor de ENNAT. Si no se satisface esta condición,se acepta MQMDE, pero no se cumple, es decir, se trata a MQMDE como datos demensaje.

Nota: En las aplicaciones OS/2 y Windows NT, compiladas con Micro FocusCOBOL, utilice un valor de ENNAT distinto de la codificación del gestor decolas. Aunque los campos numéricos de la estructura MQMD en las

MQMDE - Extensión de descriptor de mensaje

138 Consulta de programación de aplicaciones (ILE RPG)

Page 153: amqwak00

llamadas MQPUT, MQPUT1 y MQGET deben tener la codificación de MicroFocus COBOL, los campos numéricos de la estructura MQMDE deben tenerla codificación del gestor de colas. Esta viene dada por ENNAT para ellenguaje de programación C y tiene el valor 546.

Varios de los campos que existen en el MQMD de la versión 2, pero no en el de laversión 1, son campos de entrada/salida en MQPUT y MQPUT1. Sin embargo, elgestor de colas no devuelve valores en los campos equivalentes de la MQMDEpara salida de las llamadas MQPUT y MQPUT1; si la aplicación necesita dichosvalores de salida, debe utilizar un MQMD de la versión 2.

MQMDE devuelta por una llamada MQGET: En la llamada MQGET, si laaplicación proporciona un MQMD de la versión 1, el gestor de colas pone unaMQMDE como prefijo del mensaje devuelto, pero solamente si uno o varios de loscampos de la MQMDE tiene un valor no por omisión. El gestor de colas estableceel campo MDFMT de MQMD en el valor FMMDE para indicar que hay una MQMDEpresente.

Si la aplicación proporciona una MQMDE al principio del parámetro BUFFER, seignora la MQMDE. Cuando se devuelve desde la llamada MQGET, se sustituyepor la MQMDE del mensaje (si es necesario), o bien queda sobrescrita por losdatos del mensaje de aplicación (si la MQMDE no es necesaria).

Si la llamada MQGET devuelve una MQMDE, los datos de la MQMDE suelentener el mismo juego de caracteres y la misma codificación que el gestor de colas.Sin embargo, la MQMDE podría tener otro juego de caracteres y otra codificaciónsi se cumple lo siguiente:v Se trató a MQMDE como datos en la llamada MQPUT o MQPUT1 (vea la

Tabla 24 en la página 138 para conocer las circunstancias que pueden provocaresto).

v El mensaje se recibió desde un gestor de colas remoto conectado mediante unaconexión TCP, y el agente de canal de mensajes (MCA) receptor no se habíaestablecido correctamente (consulte el manual MQSeries Intercommunication paraobtener más información).

Nota: En las aplicaciones OS/2 y Windows NT, compiladas con Micro FocusCOBOL, utilice un valor de ENNAT que sea distinto de la codificación delgestor de colas (vea más arriba).

MQMDE en mensajes en colas de transmisión: Los mensajes que hay en las colasde transmisión llevan como prefijo la estructura MQXQH, que contiene un MQMDde la versión 1. También puede haber una MQMDE, situada entre la estructuraMQXQH y los datos del mensaje de aplicación, pero normalmente solo estarápresente si uno o varios de los campos de la MQMDE tiene un valor no poromisión.

También pueden aparecer otras estrcuturas de cabecera MQ entre la estructuraMQXQH y los datos del mensaje de aplicación. Por ejemplo, cuando la cabecera demensaje no entregado MQDLH está presente y el mensaje no es un segmento, elorden es:v MQXQH (contiene un MQMD de versión 1)v MQMDEv MQDLHv datos del mensaje de la aplicación

MQMDE - Extensión de descriptor de mensaje

Capítulo 11. MQMDE - Extensión de descriptor de mensaje 139

Page 154: amqwak00

CamposMESID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

MESIDVIdentificador de la estructura de extensión de descriptor de mensaje.

El valor inicial de este campo es MESIDV.

MEVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

MEVER2Estructura de extensión de descriptor de mensaje de la versión 2.

La siguiente constante especifica el número de la versión actual:

MEVERCVersión actual de la estructura de extensión de descriptor de mensaje.

El valor inicial de este campo es MEVER2.

MELEN (entero con signo de 10 dígitos)Longitud de la estructura MQMDE.

Se ha definido el siguiente valor:

MELEN2Longitud de la estructura de extensión de descriptor de mensaje de laversión 2.

El valor inicial de este campo es MELEN2.

MEENC (entero con signo de 10 dígitos)Codificación numérica de los datos que siguen a MQMDE.

El gestor de colas no comprueba el valor de este campo. Vea el campo MDENCdescrito en el “Capítulo 10. MQMD - Descriptor de mensaje” en la página 85para obtener más información sobre las codificaciones de datos.

El valor inicial de este campo es ENNAT.

MECSI (entero con signo de 10 dígitos)Identificador de juego de caracteres de los datos que siguen a MQMDE.

El gestor de colas no comprueba el valor de este campo.

El valor inicial de este campo es 0.

MEFMT (serie de caracteres de 8 bytes)Nombre de formato de los datos que siguen a MQMDE.

El gestor de colas no comprueba el valor de este campo. Vea el campo MDFMTdescrito en el “Capítulo 10. MQMD - Descriptor de mensaje” en la página 85para obtener más información sobre los nombres de formato.

MQMDE - Extensión de descriptor de mensaje

140 Consulta de programación de aplicaciones (ILE RPG)

Page 155: amqwak00

El valor inicial de este campo es FMNONE.

MEFLG (entero con signo de 10 dígitos)Distintivos generales.

Puede especificarse el siguiente distintivo:

MEFNONNingún distintivo.

El valor inicial de este campo es MEFNON.

MEGID (serie de bits de 24 bytes)Identificador de grupo.

Vea el campo MDGID descrito en el “Capítulo 10. MQMD - Descriptor demensaje” en la página 85. El valor inicial de este campo es GINONE.

MESEQ (entero con signo de 10 dígitos)Número de secuencia de mensaje lógico dentro del grupo.

Vea el campo MDSEQ descrito en el “Capítulo 10. MQMD - Descriptor demensaje” en la página 85. El valor inicial de este campo es 1.

MEOFF (entero con signo de 10 dígitos)Desplazamiento de datos del mensaje físico desde el inicio del mensaje lógico.

Vea el campo MDOFF descrito en el “Capítulo 10. MQMD - Descriptor demensaje” en la página 85. El valor inicial de este campo es 0.

MEMFL (entero con signo de 10 dígitos)Distintivos de mensajes.

Vea el campo MDMFL descrito en el “Capítulo 10. MQMD - Descriptor demensaje” en la página 85. El valor inicial de este campo es MFNONE.

MEOLN (entero con signo de 10 dígitos)Longitud del mensaje original.

Vea el campo MDOLN descrito en el “Capítulo 10. MQMD - Descriptor demensaje” en la página 85. El valor inicial de este campo es OLUNDF.

Valores iniciales y declaración de RPGTabla 25. Valores iniciales de los campos de MQMDE

Nombre de campo Nombre de constante Valor de constante

MESID MESIDV 'MDEb' (Vea la nota 1)

MEVER MEVER2 2

MELEN MELEN2 72

MEENC ENNAT Vea la nota 2

MECSI Ninguno 0

MEFMT FMNONE 'bbbbbbbb'

MEFLG MEFNON 0

MEGID GINONE Nulos

MESEQ Ninguno 1

MQMDE - Extensión de descriptor de mensaje

Capítulo 11. MQMDE - Extensión de descriptor de mensaje 141

Page 156: amqwak00

Tabla 25. Valores iniciales de los campos de MQMDE (continuación)

Nombre de campo Nombre de constante Valor de constante

MEOFF Ninguno 0

MEMFL MFNONE 0

MEOLN OLUNDF -1

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

2. El valor de esta constante es específico del entorno.

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQMDED*D* Identificador de estructuraD MESID 1 4D* Número de versión de estructuraD MEVER 5 8I 0D* Longitud de la estructura MQMDED MELEN 9 12I 0D* Codificación numérica de los datos que siguen a MQMDED MEENC 13 16I 0D* Identificador de juego de caracteres de los datos que siguen a MQMDED MECSI 17 20I 0D* Nombre de formato de los datos que siguen a MQMDED MEFMT 21 28D* Distintivos generalesD MEFLG 29 32I 0D* Identificador de grupoD MEGID 33 56D* Número de secuencia de mensaje lógico dentro del grupoD MESEQ 57 60I 0D* Desplazamiento de datos del mensaje físico desde el principio del mensaje lógicoD MEOFF 61 64I 0D* Distintivos de mensajeD MEMFL 65 68I 0D* Longitud del mensaje originalD MEOLN 69 72I 0

Declaración de RPG

142 Consulta de programación de aplicaciones (ILE RPG)

Page 157: amqwak00

Capítulo 12. MQOD - Descriptor de objeto

La tabla siguiente resume los campos de la estructura.

Tabla 26. Campos de MQOD

Campo Descripción Página

ODSID Identificador de estructura 144

ODVER Número de versión de la estructura 144

ODOT Tipo de objeto 144

ODON Nombre de objeto 145

ODMN Nombre del gestor de colas del objeto 145

ODDN Nombre de cola dinámica 146

ODAU Identificador de usuario alternativo 147

Nota: Los campos restantes no estarán presentes si ODVER es inferior a ODVER2.

ODREC Número de registros de objeto presentes 147

ODKDC Número de colas locales abiertassatisfactoriamente

147

ODUDC Número de colas remotas abiertassatisfactoriamente

147

ODIDC Número de colas que no han logrado abrirse 148

ODORO Desplazamiento del primer registro de objetodesde el principio de MQOD

148

ODRRO Desplazamiento del primer registro de respuestadesde el principio de MQOD

148

ODORP Dirección del primer registro de objeto 149

ODRRP Dirección del primer registro de respuesta 149

Nota: Los campos restantes no estarán presentes si ODVER es inferior a ODVER3.

ODASI Identificador de seguridad alternativo 150

ODRQN Nombre de cola resuelto 150

ODRMN Nombre de gestor de colas resuelto 151

Visión generalPara especificar un objeto por su nombre se utiliza la estructura MQOD. Sonválidos los siguientes tipos de objetos:v Cola o lista de distribuciónv Definición de procesov Gestor de colas

La versión actual de MQOD viene dada por ODVERC. Los campos que existensolamente en las versiones más recientes de la estructura están identificados comotales en las descripciones que se ofrecen a continuación. La declaración de MQODproporcionada en el archivo COPY contiene los campos adicionales, pero el valorinicial proporcionado para el campo ODVER es ODVER1. Para utilizar los camposadicionales, la aplicación debe establecer el número de versión en ODVERC. Las

© Copyright IBM Corp. 1994, 2000 143

|

|||

|||

|||

Page 158: amqwak00

aplicaciones pensadas para su uso entre varios entornos deberán utilizar unaversión de MQOD más reciente solo si todos los entornos soportan dicha versión.

Para abrir una lista de distribución, ODVER debe ser ODVER2 o superior.

Esta estructura es un parámetro de entrada/salida para las llamadas MQOPEN yMQPUT1.

CamposODSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

ODSIDVIdentificador de la estructura del descriptor de objeto.

Siempre es un campo de entrada. El valor inicial de este campo es ODSIDV.

ODVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser uno de los siguientes:

ODVER1Estructura del descriptor de objeto de la versión 1.

ODVER2Estructura del descriptor de objeto de la versión 2.

Los campos que existen solamente en la estructura de la versión 2están identificados como tales en las descripciones que se ofrecen acontinuación.

ODVER3Estructura del descriptor de objeto de la versión 3.

Los campos que existen solamente en la estructura de la versión 3están identificados como tales en las descripciones que se ofrecen acontinuación.

La siguiente constante especifica el número de la versión actual:

ODVERCVersión actual de la estructura del descriptor de objeto.

Siempre es un campo de entrada. El valor inicial de este campo es ODVER1.

ODOT (entero con signo de 10 dígitos)Tipo de objeto.

Tipo de objeto al que se da nombre en ODON. Los valores posibles son:

OTQ Cola.

OTNLSTLista de nombres.

OTPRODefinición de proceso.

MQOD - Descriptor de objeto

144 Consulta de programación de aplicaciones (ILE RPG)

||

|||

Page 159: amqwak00

OTQMGestor de colas.

Siempre es un campo de entrada. El valor inicial de este campo es OTQ.

ODON (serie de caracteres de 48 bytes)Nombre de objeto.

Es el nombre local del objeto tal como se ha definido en el gestor de colasidentificado por ODMN. El nombre puede contener los siguientes caracteres:v Caracteres alfabéticos en mayúsculas (de A a Z)v Caracteres alfabéticos en minúsculas (de ″a″ a ″z″)v Dígitos numéricos (de 0 a 9)v Punto (.), barra inclinada (/), subrayado (_), signo de porcentaje (%)

El nombre no debe contener blancos iniciales ni intercalados, pero puedecontener blancos finales. Puede utilizarse un carácter nulo para indicar el finalde los datos significativos del nombre; el carácter nulo y los caracteres que lesigan se tratarán como blancos.

Se aplican las siguientes restricciones en los entornos indicados:v En los sistemas que utilizan Katakana EBCDIC, no pueden utilizarse

caracteres en minúsculas.v En OS/400, los nombres que contienen caracteres en minúsculas, barras

inclinadas o signos de porcentaje, deben ir entre comillas cuando seespecifican en mandatos. No deben especificarse dichas comillas en elparámetro QMNAME.

Si ODOT es OTQM, se aplicarán reglas especiales; en ese caso, el nombre deberáestar completamente en blanco hasta el primer carácter nulo o hasta el final delcampo.

Si ODON es el nombre de una cola modelo, el gestor de colas crea una coladinámica con los atributos de la cola modelo y devuelve en el campo ODON elnombre de la cola creada. Solo puede especificarse una cola modelo para lallamada MQOPEN.

Si se abre una lista de distribución (es decir, ODREC está presente y es mayorque cero), ODON debe ser un espacio en blanco o la serie de nulos. Si no secumple esta condición, la llamada resulta anómala, con el código de razónRC2152.

Este es un campo de entrada/salida para la llamada MQOPEN cuando ODON esel nombre de una cola modelo, y un campo solo de entrada en el resto decasos. La longitud de este campo la indica LNQN. El valor inicial de estecampo es de 48 caracteres en blanco.

ODMN (serie de caracteres de 48 bytes)Nombre del gestor de colas del objeto.

Es el nombre del gestor de colas en el que está definido el objeto ODON. Loscaracteres que son válidos en el nombre son los mismos que para ODON (veamás arriba).

Un nombre que esté completamente en blanco hasta el primer carácter nulo ohasta el final del campo indica el gestor de colas al que está conectada laaplicación.

MQOD - Descriptor de objeto

Capítulo 12. MQOD - Descriptor de objeto 145

Page 160: amqwak00

Si ODOT es OTNLST, OTPRO o OTQM, el nombre del gestor de colas local debeespecificarse de forma explícita o como blanco.

Si ODON es el nombre de una cola modelo, el gestor de colas crea una coladinámica con los atributos de la cola modelo y devuelve en el campo ODMN elnombre del gestor de colas en el que se ha creado la cola, que coincide con elnombre del gestor de colas local. Solo puede especificarse una cola modelopara la llamada MQOPEN.

Si ODON es el nombre de una cola de clúster y ODMN está en blanco, el destinoreal de los mensajes enviados utilizando el asa de cola devuelta por la llamadaMQOPEN lo elige el gestor de colas (o una rutina de salida de carga de trabajode clúster, si existe una):v Si se especifica OOBNDO, el gestor de colas selecciona una instancia

concreta de la cola de clúster durante el proceso de la llamada MQOPEN, ytodos los mensajes transferidos utilizando esta asa de cola se envían a esainstancia.

v Si se especifica OOBNDN, el gestor de colas puede elegir una instanciadistinta de la cola destino (que resida en un gestor de colas distinto delclúster) en cada llamada MQPUT sucesiva que utilice esta asa de cola.

Si la aplicación necesita enviar un mensaje a una instancia específica de una colade clúster (es decir, una instancia de cola que resida en un gestor de colasconcreto), la aplicación debe especificar el nombre de ese gestor de colas en elcampo ODMN. Esto fuerza al gestor de colas local a enviar el mensaje al gestorde colas destino especificado.

Si se abre una lista de distribución (es decir, ODREC es mayor que cero), ODMNdebe ser un espacio en blanco o la serie de nulos. Si no se cumple estacondición, la llamada resulta anómala, con el código de razón RC2153.

Este es un campo de entrada/salida para la llamada MQOPEN cuando ODON esel nombre de una cola modelo, y un campo solo de entrada en el resto decasos. La longitud de este campo la indica LNQMN. El valor inicial de estecampo es de 48 caracteres en blanco.

ODDN (serie de caracteres de 48 bytes)Nombre de cola dinámica.

Es el nombre de una cola dinámica que la llamada MQOPEN deberá crear.Esto solamente tiene relevancia cuando ODON especifica el nombre de una colamodelo; en todos los demás casos se ignora ODDN.

Los caracteres que son válidos en el nombre son los mismos que para ODON(vea más arriba), excepto en que el asterisco también es válido (vea más abajo).Un nombre totalmente en blanco (o en el que solo aparezcan blancos antes delprimer carácter nulo) no es válido si ODON es el nombre de una cola modelo.

Si el último carácter no blanco del nombre es un asterisco (*), el gestor de colassustituye el asterisco por una serie de caracteres que garantiza que el nombregenerado para la cola es exclusivo en el gestor de colas local. Para permitir unnúmero de caracteres suficiente para esto, el asterisco solo es válido en lasposiciones 1 a la 33. Después del asterisco, solo pueden aparecer blancos o uncarácter nulo.

MQOD - Descriptor de objeto

146 Consulta de programación de aplicaciones (ILE RPG)

|

||||

||||

|||

|||||

Page 161: amqwak00

El asterisco también puede ir en la primera posición, en cuyo caso el nombreconstará únicamente de los caracteres generados por el gestor de colas.

Es un campo de entrada. La longitud de este campo la indica LNQN. El valorinicial de este campo es 'AMQ.*', rellenado con blancos.

ODAU (serie de caracteres de 12 bytes)Identificador de usuario alternativo.

Si se especifica OOALTU para la llamada MQOPEN, o PMALTU para lallamada MQPUT1, este campo contendrá un identificador de usuarioalternativo que debe utilizarse para comprobar la autorización de apertura, envez del identificador de usuario bajo el que se está ejecutando la aplicaciónactualmente. Sin embargo, algunas comprobaciones siguen efectuándose con elidentificador de usuario actual (por ejemplo, las comprobaciones de contexto).

Si se ha especificado OOALTU o PMALTU y el campo está completamente enblanco hasta el primer carácter nulo o hasta el final del campo, la apertura solopodrá realizarse si no se necesita autorización de usuario para abrir el objetocon las opciones especificadas.

Si no se especifica OOALTU ni PMALTU, el campo se ignorará.

Es un campo de entrada. La longitud de este campo la indica LNUID. El valorinicial del campo son 12 caracteres en blanco.

Los campos restantes no estarán presentes si ODVER es inferior a ODVER2.

ODREC (entero con signo de 10 dígitos)Número de registros de objeto presentes.

Este es el número de registros de objeto MQOR que la aplicación haproporcionado. Si el número es mayor que cero, indica que se abrirá una listade distribución, siendo ODREC el número de colas destino de la lista. Es válidoque una lista de distribución solo contenga un destino.

El valor de ODREC no debe ser menor que cero y, si es mayor que cero, ODOTdebe ser OTQ; si no se cumplen estas condiciones, la llamada resulta anómalacon el código de razón RC2154.

Es un campo de entrada. El valor inicial de este campo es 0. Este campo noestará presente si ODVER es inferior a ODVER2.

ODKDC (entero con signo de 10 dígitos)Número de colas locales abiertas satisfactoriamente.

Es el número de colas de la lista de distribución que se resuelven en colaslocales y que se abrieron satisfactoriamente. El recuento no incluye las colasque se resuelven en colas remotas (aunque inicialmente se utilice una cola detransmisión local para almacenar el mensaje). Si está presente, este campotambién se establece al abrir una sola cola que no está en una lista dedistribución.

Es un campo de salida. El valor inicial de este campo es 0. Este campo noestará presente si ODVER es inferior a ODVER2.

ODUDC (entero con signo de 10 dígitos)Número de colas remotas abiertas satisfactoriamente

MQOD - Descriptor de objeto

Capítulo 12. MQOD - Descriptor de objeto 147

Page 162: amqwak00

Es el número de colas de la lista de distribución que se resuelven en colasremotas y que se abrieron satisfactoriamente. Si está presente, este campotambién se establece al abrir una sola cola que no está en una lista dedistribución.

Es un campo de salida. El valor inicial de este campo es 0. Este campo noestará presente si ODVER es inferior a ODVER2.

ODIDC (entero con signo de 10 dígitos)Número de colas que no han logrado abrirse.

Es el número de colas de la lista de distribución que no han logrado abrirsesatisfactoriamente. Si está presente, este campo también se establece al abriruna sola cola que no está en una lista de distribución.

Nota: Si está presente, este campo solo se establece si el parámetro CMPCOD de lallamada MQOPEN o MQPUT1 es CCOK o CCWARN; no se establece siel parámetro CMPCOD es CCFAIL.

Es un campo de salida. El valor inicial de este campo es 0. Este campo noestará presente si ODVER es inferior a ODVER2.

ODORO (entero con signo de 10 dígitos)Desplazamiento del primer registro de objeto desde el principio de MQOD.

Es el desplazamiento en bytes del primer registro de objeto MQOR desde elprincipio de la estructura MQOD. El desplazamiento puede ser positivo onegativo. ODORO se utiliza solamente cuando se va a abrir una lista dedistribución. El campo se ignora si ODREC es cero.

Cuando se abre una lista de distribución, debe proporcionarse un conjunto deuno o más registros de objeto MQOR para poder especificar los nombres de lascolas destino en la lista de distribución. Esto puede llevarse a cabo de dosmaneras:v Utilizando el campo de desplazamiento ODORO

En este caso, la aplicación deberá declarar su propia estructura conteniendoun MQOD seguido del conjunto de registros MQOR (con todos loselementos de conjunto que sean necesarios) y establecer ODORO en eldesplazamiento del primer elemento del conjunto desde el principio deMQOD. Debe ponerse gran cuidado para asegurarse de que estedesplazamiento es correcto.

v Utilizando el campo de puntero ODORP

En este caso, la aplicación puede declarar el conjunto de estructuras MQORaparte de la estructura MQOD y establecer ODORP en la dirección delconjunto.

Elija la técnica que elija, debe utilizarse ODORO o ODORP; la llamada resultaanómala con el código de razón RC2155 si ambos son cero o si ninguno escero.

Es un campo de entrada. El valor inicial de este campo es 0. Este campo noestará presente si ODVER es inferior a ODVER2.

ODRRO (entero con signo de 10 dígitos)Desplazamiento del primer registro de respuesta desde el principio de MQOD.

MQOD - Descriptor de objeto

148 Consulta de programación de aplicaciones (ILE RPG)

Page 163: amqwak00

Es el desplazamiento en bytes del primer registro de respuesta MQRR desde elprincipio de la estructura MQOD. El desplazamiento puede ser positivo onegativo. ODRRO se utiliza solamente cuando se va a abrir una lista dedistribución. El campo se ignora si ODREC es cero.

Cuando se abre una lista de distribución, puede proporcionarse un conjunto deuno o más registros de respuesta MQRR para poder identificar las colas que nohan logrado abrirse (campo RRCC de MQRR) y el motivo de cada anomalía(campo RRREA de MQRR). Los datos se devuelven en el conjunto de registrosde respuesta en el mismo orden en que aparecen los nombres de cola en elconjunto de registros de objeto. El gestor de colas establece los registros derespuesta solamente cuando el resultado de la llamada es mixto (es decir,algunas colas se abrieron satisfactoriamente mientras otras no lo consiguieron,o bien ninguna lo consiguió por distintos motivos); el código de razón RC2136de la llamada indica este caso. Si el mismo código de razón es aplicable atodas las colas, esa razón se devuelve en el parámetro REASON de la llamadaMQOPEN o MQPUT1 y no se establecen los registros de respuesta. Losregistros de respuesta son opcionales pero, si se suministran, debe haber unODREC de ellos.

Los registros de respuesta pueden suministrarse de la misma forma que losregistros de objeto, especificando un desplazamiento en ODRRO, o bienespecificando una dirección en ODRRP; vea la descripción de ODORO más arribapara conocer detalles sobre cómo hacerlo. Sin embargo, no puede utilizarsemás de uno de ODRRO y de ODRRP; la llamada resulta anómala con el código derazón RC2156 si ninguno es cero.

Para la llamada MQPUT1, estos registros de respuesta se utilizan paradevolver información sobre errores que se producen cuando se envía elmensaje a las colas de la lista de distribución, así como los errores que seproducen cuando se abren las colas. El código de terminación y el código derazón de la operación de poner para una cola sustituyen a los de la operaciónde abrir para esa cola, solamente si el código de terminación de la operaciónde abrir era CCOK o CCWARN.

Es un campo de entrada. El valor inicial de este campo es 0. Este campo noestará presente si ODVER es inferior a ODVER2.

ODORP (puntero)Dirección del primer registro de objeto.

Esta es la dirección del primer registro de objeto MQOR. ODORP se utilizasolamente cuando se va a abrir una lista de distribución. El campo se ignora siODREC es cero.

Puede utilizarse ODORP o bien ODORO para especificar los registros de objeto,pero no ambos; vea la descripción del campo ODORO más arriba para conocerdetalles. Si no se utiliza ODORP, debe establecerse en el puntero nulo o en bytesnulos.

Es un campo de entrada. El valor inicial de este campo es el puntero nulo. Estecampo no estará presente si ODVER es inferior a ODVER2.

ODRRP (puntero)Dirección del primer registro de respuesta.

MQOD - Descriptor de objeto

Capítulo 12. MQOD - Descriptor de objeto 149

Page 164: amqwak00

Esta es la dirección del primer registro de respuesta MQRR. ODRRP se utilizasolamente cuando se va a abrir una lista de distribución. El campo se ignora siODREC es cero.

Puede utilizarse ODRRP o bien ODRRO para especificar los registros de respuesta,pero no ambos; vea la descripción del campo ODRRO más arriba para conocerlos detalles. Si no se utiliza ODRRP, debe establecerse en el puntero nulo o enbytes nulos.

Es un campo de entrada. El valor inicial de este campo es el puntero nulo. Estecampo no estará presente si ODVER es inferior a ODVER2.

Los campos restantes no estarán presentes si ODVER es inferior a ODVER3.

ODASI (serie de bits de 40 bytes)Identificador de seguridad alternativo.

Este es un identificador de seguridad que se transfiere con el ODAU al serviciode autorizaciones para permitir que se lleven a cabo las comprobaciones deautorización correspondientes. ODASI se utiliza solamente si:v Se especifica OOALTU en la llamada MQOPEN ov Se especifica PMALTU en la llamada MQPUT1

y el campo ODAU no está completamente en blanco hasta el primer carácter nuloo hasta el final del campo.

El campo ODASI tiene la siguiente estructura:v El primer byte es un entero binario que contiene la longitud de los datos

significativos que siguen; la longitud excluye el propio byte de longitud. Sino hay un identificador de seguridad presente, la longitud es cero.

v El segundo byte indica el tipo de identificador de seguridad que estápresente; estos son los valores posibles:SITWNT

Identificador de seguridad de Windows NT.SITNON

Ningún identificador de seguridad.v El tercer byte y los siguientes, hasta la longitud definida por el primer byte,

contienen el propio identificador de seguridad.v Los bytes restantes del campo se establecen a ceros binarios.

Puede utilizarse el siguiente valor especial:

SINONENingún identificador de seguridad especificado.

El valor de la longitud del campo es cero binario.

Es un campo de entrada. La longitud de este campo la indica LNSCID. Elvalor inicial de este campo es SINONE. Este campo no estará presente si ODVERes inferior a ODVER3.

ODRQN (serie de caracteres de 48 bytes)Nombre de cola resuelto.

Es el nombre de la cola destino final, tal como la conoce el gestor de colaslocal. El gestor de colas la establece en un valor no blanco, solamente para lascolas que se abren para examinar, entrada o salida (o cualquier combinación).

MQOD - Descriptor de objeto

150 Consulta de programación de aplicaciones (ILE RPG)

|

|

||

|||

Page 165: amqwak00

ODRQN se establece en blancos si el objeto abierto es alguno de los siguientes:v Una lista de distribuciónv No abierto para examinar, entrada o salidav No es una cola

Es un campo de salida. La longitud de este campo la indica LNQN. El valorinicial de este campo es la serie de caracteres nulos de C y 48 caracteres enblanco en otros lenguajes de programación. Este campo no estará presente siODVER es inferior a ODVER3.

ODRMN (serie de caracteres de 48 bytes)Nombre de gestor de colas resuelto.

Es el nombre del gestor de colas destino final, tal como lo conoce el gestor decolas local. El gestor de colas la establece en un valor no blanco, solamentepara las colas que se abren para examinar, entrada o salida (o cualquiercombinación de estas opciones).

ODRMN se establece en blancos si el objeto abierto es alguno de los siguientes:v Una cola de clúster con OOBNDN especificado (o con OOBNDQ en vigor

cuando el atributo de cola DefBind tiene el valor BNDNOT)v Una lista de distribuciónv No abierto para examinar, entrada o salidav No es una cola

Es un campo de salida. La longitud de este campo la indica LNQN. El valorinicial de este campo es la serie de caracteres nulos de C y 48 caracteres enblanco en otros lenguajes de programación. Este campo no estará presente siODVER es inferior a ODVER3.

Valores iniciales y declaración de RPGTabla 27. Valores iniciales de campos de MQOD

Nombre de campo Nombre de constante Valor de constante

ODSID ODSIDV 'ODbb' (Vea la nota 1)

ODVER ODVER1 1

ODOT OTQ 1

ODON Ninguno Blancos

ODMN Ninguno Blancos

ODDN Ninguno 'AMQ.*'

ODAU Ninguno Blancos

ODREC Ninguno 0

ODKDC Ninguno 0

ODUDC Ninguno 0

ODIDC Ninguno 0

ODORO Ninguno 0

ODRRO Ninguno 0

ODORP Ninguno Puntero nulo o bytesnulos

ODRRP Ninguno Puntero nulo o bytesnulos

MQOD - Descriptor de objeto

Capítulo 12. MQOD - Descriptor de objeto 151

||||

||||

||

||||

||||||

||||

Page 166: amqwak00

Tabla 27. Valores iniciales de campos de MQOD (continuación)

Nombre de campo Nombre de constante Valor de constante

ODASI SINONE Nulos

ODRQN Ninguno Blancos

ODRMN Ninguno Blancos

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQODD*D* Identificador de estructuraD ODSID 1 4D* Número de versión de estructuraD ODVER 5 8I 0D* Tipo de objetoD ODOT 9 12I 0D* Nombre de objetoD ODON 13 60D* Nombre del gestor de colas del objetoD ODMN 61 108D* Nombre de cola dinámicaD ODDN 109 156D* Identificador de usuario alternativoD ODAU 157 168D* Número de registros de objeto presentesD ODREC 169 172I 0D* Número de colas locales abiertas satisfactoriamenteD ODKDC 173 176I 0D* Número de colas remotas abiertas satisfactoriamenteD ODUDC 177 180I 0D* Número de colas que no han logrado abrirseD ODIDC 181 184I 0D* Desplazamiento del primer registro de objeto desde el principio de MQODD ODORO 185 188I 0D* Desplazamiento del primer registro de respuesta desde el principio de MQODD ODRRO 189 192I 0D* Dirección del primer registro de objetoD ODORP 193 208*D* Dirección del primer registro de respuestaD ODRRP 209 224*D* Identificador de seguridad alternativoD ODASI 225 264D* Nombre de cola resueltoD ODRQN 265 312D* Nombre de gestor de colas resueltoD ODRMN 313 360

MQOD - Descriptor de objeto

152 Consulta de programación de aplicaciones (ILE RPG)

|||

|||

|||

||||||

Page 167: amqwak00

Capítulo 13. MQOR - Registro de objeto

La tabla siguiente resume los campos de la estructura.

Tabla 28. Campos de MQOR

Campo Descripción Página

ORON Nombre de objeto 153

ORMN Nombre del gestor de colas del objeto 153

Visión generalLa estructura MQOR se utiliza para especificar el nombre de cola y el nombre delgestor de colas de una sola cola destino. Al proporcionarse un conjunto de estasestructuras en la llamada MQOPEN, es posible abrir una lista de colas; esta lista sedenomina lista de distribución. Cada mensaje transferido utilizando el asa de coladevuelta por esa llamada MQOPEN se coloca en cada una de las colas de la lista,siempre que esa cola se haya abierto satisfactoriamente.

Los datos de tipo carácter de la estructura MQOR deben ser del mismo juego decaracteres que el gestor de colas. MQOR es una estructura de entrada para lasllamadas MQOPEN y MQPUT1.

CamposORON (serie de caracteres de 48 bytes)

Nombre de objeto.

Es igual que el campo ODON de la estructura MQOD (vea MQOD para conocermás detalles), excepto en lo siguiente:v Debe ser el nombre de una cola.v No debe ser el nombre de una cola modelo.

Siempre es un campo de entrada. El valor inicial de este campo es de 48caracteres en blanco.

ORMN (serie de caracteres de 48 bytes)Nombre del gestor de colas del objeto.

Es igual que el campo ODMN de la estructura MQOD (vea MQOD para conocermás detalles).

Siempre es un campo de entrada. El valor inicial de este campo es de 48caracteres en blanco.

Valores iniciales y declaración de RPGTabla 29. Valores iniciales de campos de MQOR

Nombre de campo Nombre de constante Valor de constante

ORON Ninguno Blancos

ORMN Ninguno Blancos

© Copyright IBM Corp. 1994, 2000 153

Page 168: amqwak00

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQORD*D* Nombre de objetoD ORON 1 48D* Nombre del gestor de colas del objetoD ORMN 49 96

Declaración de RPG

154 Consulta de programación de aplicaciones (ILE RPG)

Page 169: amqwak00

Capítulo 14. MQPMO - Opciones de poner mensaje

La tabla siguiente resume los campos de la estructura.

Tabla 30. Campos de MQPMO

Campo Descripción Página

PMSID Identificador de estructura 156

PMVER Número de versión de la estructura 156

PMOPT Opciones que controlan la acción de MQPUT yMQPUT1

156

PMCT Asa de objeto de la cola de entrada 165

PMKDC Número de mensajes enviados satisfactoriamentea colas locales

165

PMUDC Número de mensajes enviados satisfactoriamentea colas remotas

165

PMIDC Número de mensajes que no han podido enviarse 165

PMRQN Nombre resuelto de la cola destino 166

PMRMN Nombre resuelto del gestor de la cola destino 166

Nota: Los campos restantes no estarán presentes si PMVER es inferior a PMVER2.

PMREC Número de registros de poner mensaje o deregistros de respuesta presentes

166

PMPRF Distintivos que indican qué campos de MQPMRestán presentes

167

PMPRO Desplazamiento del primer registro de ponermensaje desde el principio de MQPMO

167

PMRRO Desplazamiento del primer registro de respuestadesde el principio de MQPMO

168

PMPRP Dirección del primer registro de poner mensaje 169

PMRRP Dirección del primer registro de respuesta 170

Visión generalLa versión actual de MQPMO viene dada por PMVERC. Los campos que existensolamente en las versiones más recientes de la estructura están identificados comotales en las descripciones que se ofrecen a continuación. La declaración deMQPMO proporcionada en el archivo COPY contiene los campos adicionales, peroel valor inicial proporcionado para el campo PMVER es PMVER1. Para utilizar loscampos adicionales, la aplicación debe establecer el número de versión enPMVERC. Las aplicaciones pensadas para su uso entre varios entornos deberánutilizar una versión de MQPMO más reciente solo si todos los entornos soportandicha versión.

La estructura MQPMO es un parámetro de entrada/salida para las llamadasMQPUT y MQPUT1.

© Copyright IBM Corp. 1994, 2000 155

Page 170: amqwak00

CamposPMSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

PMSIDVIdentificador de la estructura de opciones de poner mensaje.

Siempre es un campo de entrada. El valor inicial de este campo es PMSIDV.

PMVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser uno de los siguientes:

PMVER1Estructura de opciones de poner mensaje de la versión 1.

PMVER2Estructura de opciones de poner mensaje de la versión 2.

Los campos que existen solamente en la estructura de la versión 2están identificados como tales en las descripciones que se ofrecen acontinuación.

La siguiente constante especifica el número de la versión actual:

PMVERCVersión actual de la estructura de opciones de poner mensaje.

Siempre es un campo de entrada. El valor inicial de este campo es PMVER1.

PMOPT (entero con signo de 10 dígitos)Opciones que controlan la acción de MQPUT y MQPUT1.

Puede especificarse cualquiera o ninguno de los siguientes valores. Si esnecesario más de uno, los valores se añaden juntos (no añada la mismaconstante más de una vez). Se indican las combinaciones no válidas; las demáscombinaciones son válidas.

PMSYPPoner mensaje con control de punto de sincronismo.

La petición debe operar con los protocolos normales de la unidad detrabajo. El mensaje no es visible fuera de la unidad de trabajo hastaque dicha unidad de trabajo se comprometa. Si la unidad de trabajo serestituye, el mensaje se suprime.

Si no se especifica esta opción ni PMNSYP, la petición de transferenciano está en una unidad de trabajo.

PMNSYP no debe especificarse con PMSYP.

PMNSYPPoner mensaje sin control de punto de sincronismo.

La petición debe operar fuera de los protocolos normales de la unidadde trabajo. El mensaje queda disponible inmediatamente y no puedesuprimirse restituyendo una unidad de trabajo.

MQPMO - Opciones de poner mensaje

156 Consulta de programación de aplicaciones (ILE RPG)

Page 171: amqwak00

Si no se especifica esta opción ni PMSYP, la petición de transferenciano está en una unidad de trabajo.

PMNSYP no debe especificarse con PMSYP.

PMNMIDGenerar un nuevo identificador de mensaje.

Esta opción provoca que el gestor de colas sustituya el contenido delcampo MDMID de MQMD por un nuevo identificador de mensaje. Dichoidentificador de mensaje se envía con el mensaje y se devuelve a laaplicación en la salida de la llamada MQPUT o MQPUT1.

Esta opción también puede especificarse cuando se está transfiriendo elmensaje a una lista de distribución; vea la descripción del campo PRMIDen la estructura MQPMR para conocer los detalles.

Utilizar esta opción libra a la aplicación de la necesidad de restablecerel campo MDMID a MINONE antes de cada llamada MQPUT oMQPUT1.

PMNCIDGenerar un nuevo identificador de correlación.

Esta opción provoca que el gestor de colas sustituya el contenido delcampo MDCID de MQMD por un nuevo identificador de correlación.Dicho identificador de correlación se envía con el mensaje y sedevuelve a la aplicación en la salida de la llamada MQPUT oMQPUT1.

Esta opción también puede especificarse cuando se está transfiriendo elmensaje a una lista de distribución; vea la descripción del campo PRCIDen la estructura MQPMR para conocer los detalles.

PMNCID es útil en situaciones en las que la aplicación necesite unidentificador de correlación exclusivo.

Opción de grupos y segmentos: La opción descrita más abajo está relacionadacon los mensajes en grupos y segmentos de los mensajes lógicos. Las siguientesdefiniciones pueden servir de ayuda para entender esta opción:

Mensaje físicoLa unidad de información más pequeña que puede colocarse en unacola o eliminarse de ella; suele corresponder a la informaciónespecificada o recuperada en una sola llamada MQPUT, MQPUT1 oMQGET. Cada mensaje físico tiene su propio descriptor de mensaje(MQMD). Generalmente, los mensajes físicos se distinguen por valoresdistintos para el identificador de mensaje (campo MDMID de MQMD),aunque el gestor de colas no lo impone.

Mensaje lógicoUna sola unidad de información de la aplicación. En ausencia derestricciones del sistema, un mensaje lógico sería lo mismo que unmensaje físico. Pero cuando los mensajes lógicos son excesivamentegrandes, las restricciones del sistema hacen que sea recomendable oincluso necesario dividir un mensaje lógico en dos o más mensajesfísicos, denominados segmentos.

Un mensaje lógico que ha sido segmentado consta de dos o másmensajes físicos que tienen el mismo identificador de grupo no nulo(campo MDGID de MQMD) y el mismo número de secuencia de mensaje(campo MDSEQ de MQMD). Los segmentos se distinguen por valores

MQPMO - Opciones de poner mensaje

Capítulo 14. MQPMO - Opciones de poner mensaje 157

Page 172: amqwak00

distintos para el desplazamiento de segmento (campo MDOFF deMQMD), que da el desplazamiento de los datos del mensaje físicodesde el inicio de los datos del mensaje lógico. Dado que cadasegmento es un mensaje físico, los segmentos de un mensaje lógicosuelen tener distintos identificadores de mensaje.

Un mensaje lógico que no ha sido segmentado, pero para el que laaplicación emisora ha permitido la segmentación, también tiene unidentificador de grupo no nulo, aunque en este caso solamente hay unmensaje físico con ese identificador de grupo si el mensaje lógico nopertenece a un grupo de mensajes. Los mensajes lógicos para los quese la aplicación emisora ha inhibido la segmentación, tienen unidentificador de grupo nulo (GINONE), a no ser que el mensaje lógicopertenezca a un grupo de mensajes.

Grupo de mensajesEs un conjunto de uno o varios mensajes lógicos que tienen el mismoidentificador de grupo no nulo. Los mensajes lógicos del grupo sedistinguen por valores distintos para el número de secuencia demensaje, el cuál es un entero de 1 a n, donde n es el número demensajes lógicos del grupo. Si uno o varios de los mensajes lógicosestá segmentado, habrá más de n mensajes físicos en el grupo.

PMLOGOLos mensajes en grupos y segmentos de mensajes lógicos setransferirán en orden lógico.

Esta opción indica al gestor de colas cómo la aplicación pondrá losmensajes de grupos y los segmentos de mensajes lógicos. Solamentepuede especificarse en la llamada MQPUT; no es válido en la llamadaMQPUT1.

Si se especifica PMLOGO, indica que la aplicación utilizará llamadasMQPUT sucesivas con el siguiente fin:v Poner los segmentos de cada mensaje lógico en el orden creciente de

desplazamiento de segmento, empezando por el 0, sin huecos.v Poner todos los segmentos de un mensaje lógico antes de poner los

segmentos del siguiente mensaje lógico.v Poner los mensajes lógicos de cada grupo de mensajes en el orden

creciente de número de secuencia de mensaje, empezando por el 1,sin huecos.

v Poner todos los mensajes lógicos de un grupo de mensajes antes deponer los mensajes lógicos del siguiente grupo de mensajes.

El orden anterior se denomina “orden lógico”.

Dado que la aplicación ha indicado al gestor de colas cómo pondrá losmensajes de grupos y los segmentos de mensajes lógicos, la aplicaciónno tiene que mantener ni actualizar la información de grupos ysegmentos en cada llamada MQPUT, ya que el gestor de colas realizaráesta operación. Especificamente, esto significa que la aplicación notiene está obligada a establecer los campos MDGID, MDSEQ y MDOFF deMQMD, ya que el gestor de colas establece los valores adecuados enesos campos. La aplicación solamente tiene que establecer el campoMDMFL de MQMD, para indicar cuándo los mensajes pertenecen agrupos o bien son segmentos de mensajes lógicos y para señalar elúltimo mensaje de un grupo o el último segmento de un mensajelógico.

MQPMO - Opciones de poner mensaje

158 Consulta de programación de aplicaciones (ILE RPG)

Page 173: amqwak00

Una vez se ha iniciado un grupo de mensajes o un mensaje lógico, lasllamadas MQPUT siguientes deben especificar los distintivos MF*adecuados en MDMFL de MQMD. Si la aplicación intenta transferir unmensaje que no está en un grupo cuando hay grupo de mensajes noconcluido, o intenta transferir un mensaje que no es un segmentocuando hay mensaje lógico no concluido, la llamada resulta anómalacon el código de razón RC2241 o RC2242, como corresponda. Noobstante, el gestor de colas conserva la información sobre el grupo demensajes actual y/o el mensaje lógico actual, y la aplicación puedefinalizarlos enviando un mensaje (probablemente sin datos de mensajede aplicación) que especifique MFLMIG y/o MFLSEG comocorresponda, antes de volver a emitir la llamada MQPUT paratransferir el mensaje que no está en el grupo o no es un segmento.

La Tabla 31 en la página 160 muestra las combinaciones de opciones ydistintivos que son válidas y los valores de los campos MDGID, MDSEQ yMDOFF que el gestor de colas utiliza en cada caso. Las combinaciones deopciones y distintivos que no aparecen en la tabla no son válidas. Lascolumnas de la tabla tienen los siguientes significados:

ORD LOGUna marca “U” significa que la fila solo es aplicable cuando seespecifica la opción PMLOGO.

MIG Una marca “U” significa que la fila solo es aplicable cuando seespecifica la opción MFMIG o MFLMIG.

SEG Una marca “U” significa que la fila solo es aplicable cuando seespecifica la opción MFSEG o MFLSEG.

Una marca “(U)” significa que la fila es aplicable seespecifiquen o no las opciones MFSEG o MFLSEG.

SEG OKUna marca “U” significa que la fila solo es aplicable cuando seespecifica la opción MFSEGA.

Una marca “(U)” significa que la fila es aplicable seespecifique o no la opción MFSEGA.

Grp actUna marca “U” significa que la fila solo es aplicable cuandoexiste un grupo de mensajes actual antes de la llamada.

Una marca “(U)” significa que la fila es aplicable exista o noun grupo de mensajes actual antes de la llamada.

Msg log actUna marca “U” significa que la fila solo es aplicable cuandoexiste un mensaje lógico actual antes de la llamada.

Una marca “(U)” significa que la fila es aplicable exista o noun mensaje lógico actual antes de la llamada.

Otras columnasMuestran los valores que utiliza el gestor de colas. “Anterior”denota el valor utilizado para el campo en el mensaje anteriorpara el asa de cola.

MQPMO - Opciones de poner mensaje

Capítulo 14. MQPMO - Opciones de poner mensaje 159

||

|||

|||

|||

||

|||

||

|||

||

|||

||

||||

Page 174: amqwak00

Tabla 31. Opciones de MQPUT relacionadas con los mensajes de los grupos y los segmentos de mensajes lógicosOpciones que especifica personalmente Estado de grupo y

mensaje lógico antesde llamada

Valores que utiliza el gestor de colas

ORDLOG

MIG SEG SEG OK Grp act Msg logact

MDGID MDSEQ MDOFF

U GINONE 1 0

U U ID de grupo nuevo 1 0

U U (U) ID de grupo nuevo 1 0

U U (U) U ID de grupo anterior 1 Desplazamiento anterior+ longitud de segmento

anterior

U U (U) (U) ID de grupo nuevo 1 0

U U (U) (U) U ID de grupo anterior Número de secuenciaanterior + 1

0

U U U (U) U U ID de grupo anterior Número de secuenciaanterior

Desplazamiento anterior+ longitud de segmento

anterior

(U) (U) GINONE 1 0

U (U) (U) ID de grupo nuevo siGINONE, si no valor en

campo

1 0

U (U) (U) (U) ID de grupo nuevo siGINONE, si no valor en

campo

1 Valor en campo

U (U) (U) (U) ID de grupo nuevo siGINONE, si no valor en

campo

Valor en campo 0

U U (U) (U) (U) ID de grupo nuevo siGINONE, si no valor en

campo

Valor en campo Valor en campo

Notas:

v PMLOGO no es válido en la llamada MQPUT1.

v Para el campo MDMID, el gestor de colas genera un nuevo identificador de mensaje si se especifica PMNMID o MINONE, de lo contrario utiliza elvalor del campo.

v Para el campo MDCID, el gestor de colas genera un nuevo identificador de correlación si se especifica PMNCID, de lo contrario utiliza el valor delcampo.

Cuando se especifica PMLOGO, el gestor de colas requiere que todoslos mensajes de un grupo y los segmentos de un mensaje lógico setransfieran con el mismo valor del campo MDPER de MQMD, es decir,todos deben ser persistentes o bien todos deben ser no persistentes. Sino se cumple esta condición, la llamada MQPUT resulta anómala conel código de razón RC2185.

La opción PMLOGO afecta a las unidades de trabajo de las siguientesmaneras:v Si el primer mensaje físico de un grupo o de un mensaje lógico se

pone dentro de una unidad de trabajo, todos los demás mensajesfísicos del grupo o del mensaje lógico deben ponerse dentro de unaunidad de trabajo, si se utiliza la misma asa de cola. No obstante, noes necesario que se pongan dentro de la misma unidad de trabajo.Esto permite que un grupo de mensajes o un mensaje lógico queconste de muchos mensajes físicos pueda dividirse entre dos o másunidades de trabajo consecutivas para el asa de cola.

v Si el primer mensaje físico de un grupo o de un mensaje lógico no sepone dentro de una unidad de trabajo, ninguno de los demásmensajes físicos del grupo o del mensaje lógico podrá ponersedentro de una unidad de trabajo, si se utiliza la misma asa de cola.

MQPMO - Opciones de poner mensaje

160 Consulta de programación de aplicaciones (ILE RPG)

Page 175: amqwak00

Si no se cumplen estas condiciones, la llamada MQPUT resultaanómala con el código de razón RC2245.

Cuando se especifica PMLOGO, el MQMD suministrado en la llamadaMQPUT no debe ser inferior a MDVER2. Si no se cumple estacondición, la llamada resulta anómala, con el código de razón RC2257.

Si no se especifica PMLOGO, los mensajes en grupos y los segmentosde mensajes lógicos pueden transferirse en cualquier orden y no esnecesario transferir grupos de mensajes completos o mensajes lógicoscompletos. Es responsabilidad de la aplicación asegurarse de que loscampos MDGID, MDSEQ, MDOFF y MDMFL tienen los valores adecuados.

Esta es la técnica que puede utilizarse para reiniciar un grupo demensajes o un mensaje lógico por la mitad, tras producirse unaanomalía del sistema. Al rearrancarse el sistema, la aplicación puedeestablecer los campos MDGID, MDSEQ, MDOFF, MDMFL y MDPER en los valoresadecuados y, a continuación, emitir la llamada MQPUT con PMSYP oPMNSYP establecidos como se desee, pero sin especificar PMLOGO. Siesta llamada resulta satisfactoria, el gestor de colas retiene lainformación de grupos y segmentos, y así las llamadas MQPUTsiguientes que utilicen esa asa de cola pueden especificar PMLOGOcon normalidad.

La información de grupos y segmentos que el gestor de colas retienepara la llamada MQPUT está separada de la información de grupos ysegmentos que retiene para la llamada MQGET.

Para cualquier asa de cola dada, la aplicación tiene libertad paramezclar las llamadas MQPUT que especifiquen PMLOGO con lasllamadas MQPUT que no lo especifiquen, pero deben tenerse en cuentalos siguientes puntos:v Cada llamada MQPUT satisfactoria que no especifique PMLOGO

hace que el gestor de colas establezca la información de grupos ysegmentos del asa de cola en los valores especificados por laaplicación; así se sustituye la información de grupos y segmentosexistente que el gestor de colas ha retenido para el asa de cola.

v Si no se especifica PMLOGO, la llamada no resulta anómala si hayun grupo de mensajes o un mensaje lógico actuales, pero el mensajeo segmento transferido no es el siguiente del grupo o mensaje lógico.No obstante, la llamada puede resultar satisfactoria, con un códigode terminación CCWARN. La Tabla 32 en la página 162 muestra losdiversos casos que pueden darse. En estos casos, si el código determinación no es CCOK, el código de razón será uno de lossiguientes (como corresponda):

RC2241RC2242RC2185RC2245

Nota: El gestor de colas no comprueba la información de grupos ysegmentos para la llamada MQPUT1.

MQPMO - Opciones de poner mensaje

Capítulo 14. MQPMO - Opciones de poner mensaje 161

Page 176: amqwak00

Tabla 32. Resultado cuando no existe coherencia entre la llamada MQPUT o MQCLOSE y la información de gruposy segmentos

Llamada actual Llamada anterior

MQPUT con PMLOGO MQPUT sin PMLOGO

MQPUT con PMLOGO CCFAIL CCFAIL

MQPUT sin PMLOGO CCWARN CCOK

MQCLOSE con un grupo o mensaje lógicono concluido

CCWARN CCOK

Se recomienda que las aplicaciones que simplemente deseen transferirmensajes y segmentos en orden lógico especifiquen PMLOGO, ya quees la opción más sencilla que se puede utilizar. Esta opción libra a laaplicación de la necesidad de gestionar la información de grupos ysegmentos, ya que el gestor de colas se encarga de gestionar esainformación. Sin embargo, las aplicaciones especializadas puedennecesitar más control que el que proporciona la opción PMLOGO, loque puede conseguirse no especificando esa opción. Si es así, laaplicación debe asegurarse de que los campos MDGID, MDSEQ, MDOFF yMDMFL de MQMD se establecen correctamente antes de cada llamadaMQPUT o MQPUT1.

Por ejemplo, una aplicación que desee reenviar los mensajes físicos quereciba, sin tener en cuenta si esos mensajes están en grupos o sonsegmentos de mensajes lógicos, no deberá especificar PMLOGO. Haydos motivos para ello:v Si los mensajes se recuperan y transfieren por orden, especificar

PMLOGO provocará que se asigne un identificador de grupo nuevoa los mensajes, lo que puede hacer más difícil o incluso imposibleque el originador de los mensajes pueda correlacionar los mensajesde respuesta o de informe que se obtengan como resultado delgrupo de mensajes.

v En una red compleja con múltiples vías de acceso entre el gestor decolas emisor y el receptor, los mensajes físicos pueden llegardesordenados. Si no se especifica PMLOGO ni el GMLOGOcorrespondiente en la llamada MQGET, la aplicación emisora puederecuperar y reenviar cada mensaje físico en cuanto llega, sin tenerque esperar al siguiente que llegue en orden lógico.

Las aplicaciones que generan mensajes de informe para los mensajesde grupos o los segmentos de mensajes lógicos tampoco deberíanespecificar PMLOGO al poner el mensaje de informe.

PMLOGO puede especificarse con cualquiera de las demás opcionesPM*.

PMNOCNo debe asociarse contexto al mensaje.

Tanto el contexto de identidad como el de origen se establecen paraindicar que no hay contexto. Esto significa los campos de contexto deMQMD se establecen en:v Blancos para los campos de caracteresv Nulos para los campos de bytesv Ceros para los campos numéricos

MQPMO - Opciones de poner mensaje

162 Consulta de programación de aplicaciones (ILE RPG)

Page 177: amqwak00

PMDEFCUtilizar el contexto por omisión.

El mensaje debe tener información de contexto por omisión asociada aél para la identidad y el origen. El gestor de colas establece los camposde contexto del descriptor de mensaje del modo siguiente:

Campo de MQMDValor utilizado

MDUID Determinado por el entorno a ser posible; de lo contrario,establecido en blancos.

MDACC Determinado por el entorno a ser posible; de lo contrario,establecido en ACNONE.

MDAID Establecido en blancos.MDPAT Determinado por el entorno.MDPAN Determinado por el entorno a ser posible; de lo contrario,

establecido en blancos.MDPD Establecido en la fecha del momento de poner el mensaje.MDPT Establecido en la hora del momento de poner el mensaje.MDAOD Establecido en blancos.

Para más información sobre el contexto de mensaje, consulte el manualMQSeries Application Programming Guide.

Esta es la acción por omisión si no se especifican opciones de contexto.

PMPASIPasar contexto de identidad desde un asa de cola de entrada.

El mensaje debe tener asociada información de contexto. El contexto deidentidad se toma del asa de cola especificada en el campo PMCT. Elgestor de colas genera la información de contexto de origen del mismomodo que para PMDEFC (consulte los valores más arriba). Para másinformación sobre el contexto de mensajes, consulte el manualMQSeries Application Programming Guide.

Para la llamada MQPUT, debe haberse abierto la cola con la opciónOOPASI (o una opción que la implique). Para la llamada MQPUT1, selleva a cabo la misma comprobación de autorización que para lallamada MQOPEN con la opción OOPASI.

PMPASAPasa todo el contexto desde un asa de cola de entrada.

El mensaje debe tener asociada información de contexto. Tanto elcontexto de identidad como el de origen se toman del asa de colaespecificada en el campo PMCT. Para más información sobre el contextode mensajes, consulte el manual MQSeries Application ProgrammingGuide.

Para la llamada MQPUT, debe haberse abierto la cola con la opciónOOPASA (o una opción que la implique). Para la llamada MQPUT1, selleva a cabo la misma comprobación de autorización que para lallamada MQOPEN con la opción OOPASA.

PMSETIEstablecer el contexto de identidad desde la aplicación.

El mensaje debe tener asociada información de contexto. La aplicaciónespecifica el contexto de identidad en la estructura MQMD. El gestorde colas genera la información de contexto de origen del mismo modo

MQPMO - Opciones de poner mensaje

Capítulo 14. MQPMO - Opciones de poner mensaje 163

Page 178: amqwak00

que para PMDEFC (consulte los valores más arriba). Para másinformación sobre el contexto de mensajes, consulte el manualMQSeries Application Programming Guide.

Para la llamada MQPUT, debe haberse abierto la cola con la opciónOOSETI (o una opción que la implique). Para la llamada MQPUT1, selleva a cabo la misma comprobación de autorización que para lallamada MQOPEN con la opción OOSETI.

PMSETAEstablecer todo el contexto desde la aplicación.

El mensaje debe tener asociada información de contexto. La aplicaciónespecifica el contexto de identidad y origen en la estructura MQMD.Para más información sobre el contexto de mensajes, consulte elmanual MQSeries Application Programming Guide.

Para la llamada MQPUT, debe haberse abierto la cola con la opciónOOSETA. Para la llamada MQPUT1, se lleva a cabo la mismacomprobación de autorización que para la llamada MQOPEN con laopción OOSETA.

Solo se puede especificar una de las opciones de contexto PM*. Si no seespecifica ninguna de estas opciones, se toma PMDEFC.

PMALTUValidar con el identificador de usuario especificado.

Indica que el campo ODAU del parámetro OBJDSC de la llamadaMQPUT1 contiene un identificador de usuario que debe utilizarse paravalidar la autorización de transferencia de mensajes a la cola. Lallamada solo será satisfactoria si este ODAU tiene autorización para abrirla cola con las opciones especificadas, independientemente de si elidentificador del usuario bajo el que está ejecutándose la aplicacióntiene autorización para ello. (Sin embargo, esto no se aplica a ningunade las opciones de contexto especificadas, ya que se compruebansiempre con el identificador de usuario bajo el que está ejecutándose laaplicación.)

Esta opción solo es válida con la llamada MQPUT1.

PMFIQFalla si el gestor de colas está en reposo.

Esta opción fuerza que fallen las llamadas MQPUT o MQPUT1 si elestado del gestor de colas es en reposo.

La llamada devuelve el código de terminación CCFAIL con el códigode razón RC2161.

PMNONENo se especifican opciones.

Este valor puede utilizarse para indicar que no se han especificadootras opciones; todas las opciones toman sus valores por omisión.PMNONE se ha definido para ayudar en la documentación delprograma; no se pretende que esta opción se utilice con ninguna otra,pero ya que su valor es cero, esa utilización no puede ser detectada.

Es un campo de entrada. El valor inicial del campo PMOPT es PMNONE.

MQPMO - Opciones de poner mensaje

164 Consulta de programación de aplicaciones (ILE RPG)

Page 179: amqwak00

PMTO (entero con signo de 10 dígitos)Reservado.

Es un campo reservado; su valor no es significativo. El valor inicial de estecampo es −1.

PMCT (entero con signo de 10 dígitos)Asa de objeto de la cola de entrada.

Si se especifica PMPASI o PMPASA, este campo debe contener el asa de colade entrada de la que se toma la información de contexto que va a asociarse almensaje que se está transfiriendo.

Si no se especifica PMPASI ni PMPASA, el campo se ignorará.

Es un campo de entrada. El valor inicial de este campo es 0.

PMKDC (entero con signo de 10 dígitos)Número de mensajes enviados satisfactoriamente a colas locales.

Este es el número de mensajes que la llamada MQPUT o MQPUT1 actual haenviado satisfactoriamente a las colas de la lista de distribución que son colaslocales. El recuento no incluye los mensajes enviados a colas que se resuelvenen colas remotas (aunque inicialmente se utilice una cola de transmisión localpara almacenar el mensaje). Este campo también se establece al poner unmensaje en una sola cola que no está en una lista de distribución.

Es un campo de salida. El valor inicial de este campo es 0. Este campo no seestablece si PMVER es inferior a PMVER2.

PMUDC (entero con signo de 10 dígitos)Número de mensajes enviados satisfactoriamente a colas remotas.

Este es el número de mensajes que la llamada MQPUT o MQPUT1 actual haenviado satisfactoriamente a las colas de la lista de distribución que seresuelven en colas remotas. Los mensajes que el gestor de colas conservatemporalmente en forma de lista de distribución se cuentan como el númerode destinos individuales que contienen esas listas de distribución. Este campotambién se establece cuando se pone un mensaje en una sola cola que no estáen una lista de distribución.

Es un campo de salida. El valor inicial de este campo es 0. Este campo no seestablece si PMVER es inferior a PMVER2.

PMIDC (entero con signo de 10 dígitos)Número de mensajes que no han podido enviarse.

Este es el número de mensajes que no han podido enviarse a las colas de lalista de distribución. El recuento incluye las colas que no han podido abrirse,así como las colas que se han abierto satisfactoriamente, pero para las que hafallado la operación de poner. Este campo también se establece cuando se poneun mensaje en una sola cola que no está en una lista de distribución.

Nota: Este campo solo se establece si el parámetro CMPCOD de la llamadaMQPUT o MQPUT1 es CCOK o CCWARN; no se establece si elparámetro CMPCOD es CCFAIL.

MQPMO - Opciones de poner mensaje

Capítulo 14. MQPMO - Opciones de poner mensaje 165

Page 180: amqwak00

Es un campo de salida. El valor inicial de este campo es 0. Este campo no seestablece si PMVER es inferior a PMVER2.

PMRQN (serie de caracteres de 48 bytes)Nombre resuelto de la cola destino.

Es un campo de salida al que el gestor de colas asigna el nombre de la cola(tras la resolución del alias) en la que se colocará el mensaje. Puede ser elnombre de una cola local o el de una cola remota. Si la cola destino abierta erauna cola modelo, se devolverá el nombre de la cola local dinámica creada. Enambos casos, el nombre devuelto es el de una cola definida en el gestor decolas identificado por PMRMN.

Si se utiliza la llamada MQPUT o MQPUT1 para poner el mensaje en una listade distribución, el valor devuelto en este campo no está definido.

Es un campo de salida. La longitud de este campo la indica LNQN. El valorinicial de este campo es de 48 caracteres en blanco.

PMRMN (serie de caracteres de 48 bytes)Nombre resuelto del gestor de la cola destino.

Es el nombre del gestor de colas (tras la resolución del alias) que posee la colaespecificada por PMRQN.

Si se utiliza la llamada MQPUT o MQPUT1 para poner el mensaje en una listade distribución, el valor devuelto en este campo no está definido.

Es un campo de salida. La longitud de este campo la indica LNQMN. El valorinicial de este campo es de 48 caracteres en blanco.

Los campos restantes no estarán presentes si PMVER es inferior a PMVER2.

PMREC (entero con signo de 10 dígitos)Número de registros de poner mensaje o de registros de respuesta presentes.

Este es el número de registros de poner mensaje MQPMR o de registros derespuesta MQRR que la aplicación ha suministrado. Este número puede sermayor que cero solamente si el mensaje se va a poner en una lista dedistribución. Los registros de poner mensaje y los registros de respuesta sonopcionales – la aplicación no tiene que suministrar ningún registro, o bienpuede elegir suministrar registros de un tipo solamente. Sin embargo, si laaplicación suministra registros de ambos tipos, debe proporcionar registrosPMREC de cada tipo.

El valor de PMREC no tiene por qué ser el mismo que el número de destinos dela lista de distribución. Si se suministran demasiados registros, el excedente nose utiliza; si no se suministran suficientes, se utilizan valores por omisión paralas propiedades de mensaje para aquellos destinos que no tengan registros deponer mensaje (vea PMPRO más abajo).

Si PMREC es menos que cero o es mayor que cero pero el mensaje no se pone enuna lista de distribución, la llamada falla con el código de razón RC2154.

Es un campo de entrada. El valor inicial de este campo es 0. Este campo noestará presente si PMVER es inferior a PMVER2.

MQPMO - Opciones de poner mensaje

166 Consulta de programación de aplicaciones (ILE RPG)

Page 181: amqwak00

PMPRF (entero con signo de 10 dígitos)Distintivos que indican qué campos de MQPMR están presentes.

Este campo contiene distintivos que deben establecerse para indicar quécampos de MQPMR están presentes en los registros de poner mensajesuministrados por la aplicación. PMPRF se utiliza solamente cuando se pone elmensaje en una lista de distribución. El campo se ignorará si PMREC es cero, otanto PMPRO como PMPRP son cero.

Para los campos presentes, el gestor de colas utiliza, para cada destino, losvalores de los campos del registro de poner mensaje correspondiente. Para loscampos ausentes, el gestor de colas utiliza los valores de la estructura MQMD.

Puede especificarse uno o varios de los distintivos siguientes para indicar quécampos están presentes en los registros de poner mensaje:

PFMIDEl campo Identificador de mensaje está presente.

PFCIDEl campo Identificador de correlación está presente.

PFGIDEl campo Identificador de grupo está presente.

PFFB El campo información de retorno está presente.

PFACCEl campo símbolo de contabilidad está presente.

Si se especifica este distintivo, deberá especificarse PMSETI o PMSETAen el campo PMOPT; si no se cumple esta condición, la llamada resultaanómala con el código de razón RC2158.

Si no hay campos de MQPMR presentes, puede especificarse lo siguiente:

PFNONENo hay campos de registro de poner mensaje presentes.

Si se especifica este valor, PMREC deberá ser cero, o bien tanto PMPROcomo PMPRP deberán ser cero.

PFNONE se define para ayudar en la documentación del programa.No se pretende que esta constante se utilice con ninguna otra, pero yaque su valor es cero, esa utilización no se puede detectar.

Si PMPRF contiene distintivos no válidos, o se suministran registros de ponermensaje pero PMPRF tiene el valor PFNONE, la llamada resulta anómala con elcódigo de razón RC2158.

Es un campo de entrada. El valor inicial de este campo es PFNONE. Estecampo no estará presente si PMVER es inferior a PMVER2.

PMPRO (entero con signo de 10 dígitos)Desplazamiento del primer registro de poner mensaje a partir del principio deMQPMO.

Es el desplazamiento en bytes del primer registro de poner mensaje MQPMRdesde el principio de la estructura MQPMO. El desplazamiento puede serpositivo o negativo. PMPRO se utiliza solamente cuando el mensaje se pone enuna lista de distribución. El campo se ignora si PMREC es cero.

MQPMO - Opciones de poner mensaje

Capítulo 14. MQPMO - Opciones de poner mensaje 167

Page 182: amqwak00

Cuando se pone el mensaje en una lista de distribución, puede suministrarseun conjunto de uno o varios registros de poner mensaje MQPMR paraespecificar determinadas propiedades del mensaje para cada destinoindividualmente; esas propiedades son:v identificador de mensajev identificador de correlaciónv identificador de grupov valor de información de retornov símbolo de contabilidad

No es necesario especificar todas estas propiedades pero, cualquiera que sea elsubconjunto elegido, los campos deben especificarse en el orden correcto. Veala descripción de la estructura MQPMR para conocer más detalles.

Normalmente, debería haber tantos registros de poner mensaje como registrosde objeto especificados por MQOD al abrir la lista de distribución; cadaregistro de poner mensaje suministra las propiedades de mensaje para la colaidentificada por el registro de objeto correspondiente. Las colas de la lista dedistribución que no consigan abrirse deberán seguir teniendo asignadosregistros de poner mensaje en las posiciones adecuadas en el conjunto aunque,en este caso, las propiedades de mensaje se ignoran.

Es posible que el número de registros de poner mensaje sea distinto delnúmero de registros de objeto. Si hay menos registros de poner mensaje queregistros de objeto, las propiedades de mensaje para los destinos que no tenganregistros de poner mensaje se tomarán de los campos correspondientes en eldescriptor de mensaje MQMD. Si hay más registros de poner mensaje queregistros de objeto, el excedente no se utiliza (aunque aún puede ser posibleacceder a ellos). Los registros de poner mensaje son opcionales pero, si sesuministran, la cantidad que debe haber es PMREC.

Los registros de poner mensaje pueden suministrarse de forma similar a losregistros de objeto de MQOD, especificando un desplazamiento en PMPRO, obien especificando una dirección en PMPRP; para conocer detalles sobre cómohacerlo, vea el campo ODORO descrito en el “Capítulo 12. MQOD - Descriptor deobjeto” en la página 143.

No puede utilizarse más de uno de PMPRO y PMPRP; la llamada resulta anómalacon el código de razón RC2159 si ninguno es cero.

Es un campo de entrada. El valor inicial de este campo es 0. Este campo noestará presente si PMVER es inferior a PMVER2.

PMRRO (entero con signo de 10 dígitos)Desplazamiento del primer registro de respuesta desde el principio deMQPMO.

Es el desplazamiento en bytes del primer registro de respuesta de MQRRdesde el principio de la estructura MQPMO. El desplazamiento puede serpositivo o negativo. PMRRO se utiliza solamente cuando se pone el mensaje enuna lista de distribución. El campo se ignora si PMREC es cero.

Cuando se pone el mensaje en una lista de distribución, puede suministrarseun conjunto de uno o varios registros de respuesta MQRR para poderidentificar las colas a las que no se envió el mensaje satisfactoriamente (campoRRCC de MQRR) y el motivo de cada anomalía (campo RRREA de MQRR). Es

MQPMO - Opciones de poner mensaje

168 Consulta de programación de aplicaciones (ILE RPG)

Page 183: amqwak00

posible que el mensaje no se haya enviado porque la cola no ha logradoabrirse, o bien porque la operación de poner ha fallado. El gestor de colasestablece los registros de respuesta solamente cuando el resultado de lallamada es mixto (es decir, algunos mensajes se enviaron satisfactoriamentemientras que otros no, o bien no llegó ninguno por distintos motivos); elcódigo de razón RC2136 de la llamada indica este caso. Si el mismo código derazón es aplicable a todas las colas, esa razón se devuelve en el parámetroREASON de la llamada MQPUT o MQPUT1 y no se establecen los registros derespuesta.

Normalmente, debería haber tantos registros de respuesta como registros deobjeto especificados por MQOD al abrirse la lista de distribución; cuando esnecesario, cada registro de respuesta se establece en el código de terminación yel código de razón para la transferencia a la cola identificada por el registro deobjeto correspondiente. Las colas de la lista de distribución que no consiganabrirse deberán seguir teniendo asignados registros de respuesta en lasposiciones adecuadas en el conjunto, aunque se establecen en el código determinación y el código de razón resultado de la operación de abrir, en lugarde la operación de poner.

Es posible que el número de registros de respuesta sea distinto del número deregistros de objeto. Si hay menos registros de respuesta que registros de objeto,es posible que la aplicación no pueda identificar todos los destinos para losque la operación de transferencia ha resultado anómala, o los motivos de lasanomalías. Si hay más registros de respuesta que registros de objeto, elexcedente no se utiliza (aunque aún puede ser posible acceder a ellos). Losregistros de respuesta son opcionales pero, si se suministran, la cantidad quedebe haber es PMREC.

Los registros de respuesta pueden suministrarse de forma similar a losregistros de objeto de MQOD, especificando un desplazamiento en PMRRO, obien especificando una dirección en PMRRP; para conocer detalles sobre cómohacerlo, vea el campo ODORO descrito en el “Capítulo 12. MQOD - Descriptor deobjeto” en la página 143. Sin embargo, no puede utilizarse más de uno dePMRRO y de PMRRP; la llamada resulta anómala con el código de razón RC2156 sininguno es cero.

Para la llamada MQPUT1, este campo debe ser cero. Esto se debe a que lainformación de respuesta (si se solicita) se devuelve en los registros derespuesta especificados por el descriptor de objeto MQOD.

Es un campo de entrada. El valor inicial de este campo es 0. Este campo noestará presente si PMVER es inferior a PMVER2.

PMPRP (puntero)Dirección del primer registro de poner mensaje.

Esta es la dirección del primer registro de poner mensaje MQPMR. PMPRP seutiliza solamente cuando se pone el mensaje en una lista de distribución. Elcampo se ignora si PMREC es cero.

Puede utilizarse PMPRP o bien PMPRO para especificar los registros de ponermensaje, pero no ambos; vea la descripción del campo PMPRO más arriba paraconocer detalles. Si no se utiliza PMPRP, debe establecerse en el puntero nulo oen bytes nulos.

MQPMO - Opciones de poner mensaje

Capítulo 14. MQPMO - Opciones de poner mensaje 169

Page 184: amqwak00

Es un campo de entrada. El valor inicial de este campo es el puntero nulo. Estecampo no estará presente si PMVER es inferior a PMVER2.

PMRRP (puntero)Dirección del primer registro de respuesta.

Esta es la dirección del primer registro de respuesta MQRR. PMRRP se utilizasolamente cuando se pone el mensaje en una lista de distribución. El campo seignora si PMREC es cero.

Puede utilizarse PMRRP o bien PMRRO para especificar los registros de respuesta,pero no ambos; vea la descripción del campo PMRRO más arriba para conocerdetalles. Si no se utiliza PMRRP, debe establecerse en el puntero nulo o en bytesnulos.

Para la llamada MQPUT1, este campo debe ser el puntero nulo o bytes nulos.Esto se debe a que la información de respuesta (si se solicita) se devuelve enlos registros de respuesta especificados por el descriptor de objeto MQOD.

Es un campo de entrada. El valor inicial de este campo es el puntero nulo. Estecampo no estará presente si PMVER es inferior a PMVER2.

Valores iniciales y declaración de RPGTabla 33. Valores iniciales de campos de MQPMO

Nombre de campo Nombre de constante Valor de constante

PMSID PMSIDV 'PMOb' (Vea la nota 1)

PMVER PMVER1 1

PMOPT PMNONE 0

PMTO Ninguno -1

PMCT Ninguno 0

PMKDC Ninguno 0

PMUDC Ninguno 0

PMIDC Ninguno 0

PMRQN Ninguno Blancos

PMRMN Ninguno Blancos

PMREC Ninguno 0

PMPRF PFNONE 0

PMPRO Ninguno 0

PMRRO Ninguno 0

PMPRP Ninguno Puntero nulo o bytesnulos

PMRRP Ninguno Puntero nulo o bytesnulos

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

MQPMO - Opciones de poner mensaje

170 Consulta de programación de aplicaciones (ILE RPG)

Page 185: amqwak00

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQPMOD*D* Identificador de estructuraD PMSID 1 4D* Número de versión de estructuraD PMVER 5 8I 0D* Opciones que controlan la acción de MQPUT y MQPUT1D PMOPT 9 12I 0D* ReservadoD PMTO 13 16I 0D* Asa de objeto de la cola de entradaD PMCT 17 20I 0D* Número de mensajes enviados satisfactoriamente a colas localesD PMKDC 21 24I 0D* Número de mensajes enviados satisfactoriamente a colas remotasD PMUDC 25 28I 0D* Número de mensajes que no han podido enviarseD PMIDC 29 32I 0D* Nombre resuelto de la cola destinoD PMRQN 33 80D* Nombre resuelto del gestor de la cola destinoD PMRMN 81 128D* Número de registros de poner mensaje o de respuesta presentesD PMREC 129 132I 0D* Distintivos que indican qué campos de MQPMR están presentesD PMPRF 133 136I 0D* Desplazamiento del primer registro de poner mensaje desde el principio de MQPMOD PMPRO 137 140I 0D* Desplazamiento del primer registro de respuesta desde el principio de MQPMOD PMRRO 141 144I 0D* Dirección del primer registro de poner mensajeD PMPRP 145 160*D* Dirección del primer registro de respuestaD PMRRP 161 176*

Declaración de RPG

Capítulo 14. MQPMO - Opciones de poner mensaje 171

Page 186: amqwak00

Declaración de RPG

172 Consulta de programación de aplicaciones (ILE RPG)

Page 187: amqwak00

Capítulo 15. MQPMR - Registro de poner mensaje

La tabla siguiente resume los campos de la estructura.

Tabla 34. Campos de MQPMR

Campo Descripción Página

PRMID Identificador de mensaje 173

PRCID Identificador de correlación 174

PRGID Identificador de grupo 174

PRFB Código de información de retorno o de razón 174

PRACC Símbolo de contabilidad 175

Visión generalLa estructura MQPMR se utiliza para especificar diversas propiedades de mensajepara un único destino. Al proporcionarse un conjunto de estas estructuras en lallamada MQPUT o MQPUT1, es posible especificar distintos valores para cada coladestino de una lista de distribución. Algunos de los campos son solo de entrada,otros son de entrada/salida.

Nota: Esta estructura es inusual ya que no tiene un diseño fijo. Los campos de estaestructura son opcionales y la presencia o ausencia de cada campo vieneindicada por los distintivos del campo PMPRF de MQPMO. Los campospresentes deben aparecen en el orden mostrado más abajo. Los camposausentes no ocupan espacio en el registro.

Dado que MQPMR no tiene un diseño fijo, no se le proporciona unadeclaración en un archivo COPY. El programador de la aplicación debe crearuna declaración que contenga los campos que la aplicación necesita yestablecer los distintivos de PMPRF para indicar los campos que estánpresentes.

MQPMR es una estructura de entrada/salida para las llamadas MQPUT yMQPUT1.

CamposPRMID (serie de bits de 24 bytes)

Identificador de mensaje.

Este es el identificador de mensaje que debe utilizarse para el mensaje enviadoa la cola, cuyo nombre especificó el elemento correspondiente del conjunto deestructuras MQOR suministradas en la llamada MQOPEN o MQPUT1. Seprocesa de la misma forma que el campo MDMID de MQMD para latransferencia a una sola cola.

Si este campo no está presente en el registro MQPMR, o hay menos registrosde MQPMR que destinos, se utiliza el valor de MQMD para esos destinos queno tienen un registro MQPMR que contenga un campo PRMID. Si ese valor es

© Copyright IBM Corp. 1994, 2000 173

Page 188: amqwak00

MINONE, se genera un nuevo identificador de mensaje para cada destino (esdecir, no habrá dos destinos con el mismo identificador de mensaje).

Si se especifica PMNMID, se generan nuevos identificadores de mensajes paratodos los destinos de la lista de distribución, sin tener en cuenta si tienenregistros MQPMR. Este es un proceso distinto al de PMNCID (vea más abajo).

Este es un campo de entrada/salida.

PRCID (serie de bits de 24 bytes)Identificador de correlación.

Este es el identificador de correlación que debe utilizarse para el mensajeenviado a la cola, cuyo nombre especificó el elemento correspondiente delconjunto de estructuras MQOR suministradas en la llamada MQOPEN oMQPUT1. Se procesa de la misma forma que el campo MDCID de MQMD parala transferencia a una sola cola.

Si este campo no está presente en el registro MQPMR, o hay menos registrosMQPMR que destinos, se utiliza el valor de MQMD para esos destinos que notienen un registro MQPMR que contenga un campo PRCID.

Si se especifica PMNCID, se genera un único identificador de correlación y seutiliza para todos los destinos de la lista de distribución, sin tener en cuenta sitienen registros MQPMR. Este es un proceso distinto al de PMNMID (vea másabajo).

Este es un campo de entrada/salida.

PRGID (serie de bits de 24 bytes)Identificador de grupo.

Este es el identificador de grupo que debe utilizarse para el mensaje enviado ala cola, cuyo nombre especificó el elemento correspondiente del conjunto deestructuras MQOR suministradas en la llamada MQOPEN o MQPUT1. Seprocesa de la misma forma que el campo MDGID de MQMD para latransferencia a una sola cola.

Si este campo no está presente en el registro MQPMR, o hay menos registrosMQPMR que destinos, se utiliza el valor de MQMD para esos destinos que notienen un registro MQPMR que contenga un campo PRGID. El valor se procesatal como se explica en la Tabla 31 en la página 160, pero con las siguientesdiferencias:v En aquellos casos en los que se utilizaría un nuevo identificador de grupo, el

gestor de colas genera un identificador de grupo distinto para cada destino(es decir, no habrá dos destinos con el mismo identificador de grupo).

v En aquellos casos en que se utilizaría el valor del campo, la llamada resultaanómala, con el código de razón RC2258.

Este es un campo de entrada/salida.

PRFB (entero con signo de 10 dígitos)Código de información de retorno o de razón.

Este es el código de información de retorno que debe utilizarse para el mensajeenviado a la cola, cuyo nombre especificó el elemento correspondiente delconjunto de estructuras MQOR suministradas en la llamada MQOPEN o

MQPMR - Registro de poner mensaje

174 Consulta de programación de aplicaciones (ILE RPG)

Page 189: amqwak00

MQPUT1. Se procesa de la misma forma que el campo MDFB de MQMD parauna transferencia a una sola cola. Si este campo no está presente, se utiliza elvalor de MQMD.

Es un campo de entrada.

PRACC (serie de bits de 32 bytes)Símbolo de contabilidad

Es el símbolo de contabilidad que debe utilizarse para el mensaje enviado a lacola, cuyo nombre especificó el elemento correspondiente del conjunto deestructuras MQOR suministradas en la llamada MQOPEN o MQPUT1. Seprocesa de la misma forma que el campo MDACC de MQMD para latransferencia a una sola cola. Vea la descripción de MDACC en el “Capítulo 10.MQMD - Descriptor de mensaje” en la página 85 para obtener informaciónsobre el contenido de este campo.

Si este campo no está presente, se utiliza el valor de MQMD.

Es un campo de entrada.

Valores iniciales y declaración de RPGNo hay valores iniciales definidos para esta estructura, ya que no se suministraninguna declaración de estructura. La declaración de ejemplo que encontrará másabajo muestra cómo el programador de la aplicación debe declarar la estructura sitodos los campos son necesarios.

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQPMRD*D* Identificador de mensajeD PRMID 1 24D* Identificador de correlaciónD PRCID 25 48D* Identificador de grupoD PRGID 49 72D* Código de información de retorno o de razónD PRFB 73 76I 0D* Símbolo de contabilidadD PRACC 77 108

MQPMR - Registro de poner mensaje

Capítulo 15. MQPMR - Registro de poner mensaje 175

|||

Page 190: amqwak00

Declaración de RPG

176 Consulta de programación de aplicaciones (ILE RPG)

Page 191: amqwak00

Capítulo 16. MQRMH - Cabecera de mensaje de referencia

La tabla siguiente resume los campos de la estructura.

Tabla 35. Campos de MQRMH

Campo Descripción Página

RMSID Identificador de estructura 178

RMVER Número de versión de la estructura 178

RMLEN Longitud total de MQRMH, incluidas las seriessituadas al final de los campos de longitud fija,pero no los datos generales

179

RMENC Codificación numérica de los datos generales 179

RMCSI Identificador del juego de caracteres de los datosgenerales

179

RMFMT Nombre de formato de los datos generales 179

RMFLG Distintivos de mensajes de referencia 179

RMOT Tipo de objeto 180

RMOII Identificador de la instancia de objeto 180

RMSEL Longitud de los datos del entorno origen 180

RMSEO Desplazamiento de los datos del entorno origen 180

RMSNL Longitud del nombre de objeto origen 181

RMSNO Desplazamiento del nombre de objeto origen 181

RMDEL Longitud de los datos del entorno destino 181

RMDEO Desplazamiento de los datos del entorno destino 181

RMDNL Longitud del nombre de objeto destino 182

RMDNO Desplazamiento del nombre de objeto destino 182

RMDL Longitud de los datos generales 182

RMDO Desplazamiento bajo de los datos generales 183

RMDO2 Desplazamiento alto de los datos generales 183

Visión generalLa estructura MQRMH define el formato de una cabecera de mensaje de referencia.Una aplicación puede transferir un mensaje en este formato, omitiendo los datosgenerales. Cuando un agente de canal de mensajes (MCA) lee el mensaje en la colade transmisión, se llama a una rutina de salida de mensaje suministrada porusuario para que procese la cabecera del mensaje de referencia. La rutina de salidapuede añadir al mensaje de referencia los datos generales identificados por laestructura MQRMH, antes de que el MCA envíe el mensaje a través del canal alsiguiente gestor de colas.

En el extremo receptor debe existir una rutina de salida de mensaje que esperemensajes de referencia. Al recibirse un mensaje de referencia, la rutina de salidadebe crear el objeto a partir de los datos generales que siguen a la MQRMH en elmensaje y, a continuación, pasar el mensaje de referencia sin los datos generales.

© Copyright IBM Corp. 1994, 2000 177

Page 192: amqwak00

Posteriormente, una aplicación que lea el mensaje de referencia (sin los datosgenerales) en una cola, puede recuperarlo de una cola.

Normalmente, la estructura MQRMH (opcionalmente con los datos generales) estodo lo que hay en el mensaje. Sin embargo, si el mensaje está en una cola detransmisión, habrá una o más cabeceras adicionales precediendo a la estructuraMQRMH.

Un mensaje de referencia también puede enviarse a una lista de distribución. Eneste caso, la estructura MQDH y sus registros relacionados preceden a la estructuraMQRMH cuando el mensaje está en una cola de transmisión.

Nota: Un mensaje de referencia no debe enviarse como un mensaje segmentado,ya que la rutina de salida de mensaje no puede procesarlo correctamente.

Para la conversión de datos, la conversión de la estructura MQRMH incluye laconversión de los datos del entorno origen, el nombre del objeto origen, los datosdel entorno destino y el nombre del objeto destino. Los demás bytes que haya enRMLEN se descartarán o bien tendrán valores no definidos tras la conversión dedatos. Los datos generales se convertirán siempre que se cumplan las siguientescondiciones:v Los datos generales están presentes en el mensaje cuando se realiza la

conversión de datos.v El campo RMFMT de MQRMH tiene un valor que no es FMNONE.v Existe una rutina de salida de conversión de datos escrita por usuario que tiene

el nombre de formato especificado.

Tenga en cuenta, no obstante, que normalmente los datos generales no estánpresentes en el mensaje cuando el mensaje está en una cola y que, como resultado,la opción GMCONV no convertirá los datos generales.

El nombre de formato de una estructura MQRMH es FMRMH. Los campos de laestructura MQRMH y las series direccionadas por los campos de desplazamientotienen el juego de caracteres y la codificación dados por los campos MDCSI y MDENCde la estructura de cabecera que precede a la MQRMH, o por esos campos de laestructura MQMD, si la MQRMH está al principio de los datos del mensaje deaplicación.

CamposRMSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

RMSIDVIdentificador para la estructura de cabecera de mensaje de referencia.

El valor inicial de este campo es RMSIDV.

RMVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

RMVER1Estructura de cabecera de mensaje de referencia de la versión 1.

MQRMH - Cabecera de mensaje de referencia

178 Consulta de programación de aplicaciones (ILE RPG)

Page 193: amqwak00

La siguiente constante especifica el número de la versión actual:

RMVERCVersión actual de la estructura de cabecera de mensaje de referencia.

El valor inicial de este campo es RMVER1.

RMLEN (entero con signo de 10 dígitos)Longitud total de MQRMH, incluidas las series situadas al final de los camposde longitud fija, pero no los datos generales.

El valor inicial de este campo es cero.

RMENC (entero con signo de 10 dígitos)Codificación numérica de los datos generales.

Identifica la representación utilizada para valores numéricos en los datosgenerales; esto se aplica a datos enteros binarios, datos enteros con decimalesempaquetados y datos de coma flotante.

El valor inicial de este campo es ENNAT.

RMCSI (entero con signo de 10 dígitos)Identificador del juego de caracteres de los datos generales.

Especifica el identificador del juego de caracteres codificado de los datos detipo carácter de los datos generales.

Recuerde que los datos de tipo carácter de las estructuras de datos MQ debenestar en el juego de caracteres utilizado por el gestor de colas. Esto se definemediante el atributo CodedCharSetId del gestor de colas; vea el “Capítulo 43.Atributos del gestor de colas” en la página 337 para ver más detalles de esteatributo.

El valor inicial de este campo es 0.

RMFMT (serie de caracteres de 8 bytes)Nombre de formato de los datos generales.

Es un nombre que el emisor del mensaje puede utilizar para indicar al receptorla naturaleza de los datos generales. Puede especificarse para el nombrecualquier carácter que esté en el juego de caracteres del gestor de colas, pero esaconsejable que el nombre esté dentro de las siguientes limitaciones:v Mayúsculas de la A a la Zv Dígitos numéricos del 0 a al 9

Si se utilizan otros caracteres, puede que no sea posible la conversión delnombre entre los juegos de caracteres del gestor de colas emisor y del receptor.

El nombre debe estar rellenado con blancos en toda la longitud del campo. Noutilice un carácter nulo para terminar el nombre antes del final del campo, yaque el gestor de colas no cambia el nulo y los caracteres siguientes por blancosen la estructura MQRMH. No especifique un nombre con blancos iniciales niintercalados.

El valor inicial de este campo es FMNONE.

RMFLG (entero con signo de 10 dígitos)Distintivos de mensajes de referencia.

MQRMH - Cabecera de mensaje de referencia

Capítulo 16. MQRMH - Cabecera de mensaje de referencia 179

Page 194: amqwak00

Están definidos los siguientes distintivos:

RMLASTEl mensaje de referencia contiene o representa la última parte delobjeto.

Este distintivo indica que el mensaje de referencia representa ocontiene la última parte del objeto referenciado.

RMNLSTEl mensaje de referencia no contiene ni representa la última parte delobjeto.

RMNLST se define para ayudar en la documentación del programa.No se pretende que esta opción se utilice con ninguna otra, pero yaque su valor es cero, esa utilización no se puede detectar.

El valor inicial de este campo es RMNLST.

RMOT (serie de caracteres de 8 bytes)Tipo de objeto.

Es un nombre que la rutina de salida de mensaje puede utilizar para reconocerlos tipos de mensajes de referencia que soporta. Se recomienda que el nombrese ajuste a las mismas reglas que el campo RMFMT descrito más arriba.

El valor inicial de este campo es de 8 blancos.

RMOII (serie de bits de 24 bytes)Identificador de la instancia de objeto.

Este campo puede utilizarse para identificar una instancia específica de unobjeto. Si no es necesario, deberá establecerse en el siguiente valor:

OIINONNo se ha especificado ningún identificador de la instancia de objeto.

El valor de la longitud del campo es cero binario.

La longitud de este campo la indica LNOIID. El valor inicial de este campo esOIINON.

RMSEL (entero con signo de 10 dígitos)Longitud de los datos del entorno origen.

Si este campo es cero, significa que no hay datos del entorno origen y RMSEO seignora.

El valor inicial de este campo es 0.

RMSEO (entero con signo de 10 dígitos)Desplazamiento de los datos del entorno origen.

Este campo especifica el desplazamiento de los datos del entorno origen desdeel principio de la estructura MQRMH. El creador del mensaje de referenciapuede especificar los datos del entorno origen, si el creador conoce esos datos.Por ejemplo, en OS/2, los datos del entorno origen podrían ser la vía de accesodel directorio del objeto que contiene los datos generales. Sin embargo, si elcreador no conoce los datos del entorno origen, la rutina de salida de mensajesuministrada por usuario es la encargada de determinar la información deentorno necesaria.

MQRMH - Cabecera de mensaje de referencia

180 Consulta de programación de aplicaciones (ILE RPG)

Page 195: amqwak00

La longitud de los datos del entorno origen viene dada por RMSEL; si estalongitud es cero, significa que no hay datos del entorno origen y RMSEO seignora. Si están presentes, los datos del entorno origen deben residir porcompleto en RMLEN bytes desde el principio de la estructura.

Las aplicaciones no deben presuponer que los datos de entorno empiezaninmediatamente después del último campo de longitud fija de la estructura, oque se encuentran junto a los datos direccionados por los campos RMSNO, RMDEOy RMDNO.

El valor inicial de este campo es 0.

RMSNL (entero con signo de 10 dígitos)Longitud del nombre de objeto origen.

Si este campo es cero, significa que no hay un nombre de objeto origen y RMSNOse ignora.

El valor inicial de este campo es 0.

RMSNO (entero con signo de 10 dígitos)Desplazamiento del nombre de objeto origen.

Este campo especifica el desplazamiento del nombre de objeto origen desde elprincipio de la estructura MQRMH. El creador del mensaje de referencia puedeespecificar el nombre de objeto origen, si el creador conoce esos datos. Sinembargo, si el creador no conoce el nombre de objeto origen, la rutina desalida de mensaje suministrada por usuario es la encargada de identificar elobjeto al que se ha de acceder.

La longitud del nombre de objeto origen viene dada por RMSNL; si esta longitudes cero, significa que no hay un nombre de objeto origen y RMSNO se ignora. Siestá presente, el nombre de objeto origen debe residir por completo en RMLENbytes desde el principio de la estructura.

Las aplicaciones no deben presuponer que el nombre de objeto origen seencuentra junto a los datos direccionados por los campos RMSEO, RMDEO y RMDNO.

El valor inicial de este campo es 0.

RMDEL (entero con signo de 10 dígitos)Longitud de los datos del entorno destino.

Si este campo es cero, significa que no hay datos del entorno destino y RMDEOse ignora.

RMDEO (entero con signo de 10 dígitos)Desplazamiento de los datos del entorno destino.

Este campo especifica el desplazamiento de los datos del entorno destino desdeel principio de la estructura MQRMH. El creador del mensaje de referenciapuede especificar los datos del entorno destino, si el creador conoce esos datos.Por ejemplo, en OS/2, los datos del entorno destino podrían ser la vía deacceso del directorio del objeto que contiene los datos generales. Sin embargo,si el creador no conoce los datos del entorno destino, la rutina de salida demensaje suministrada por usuario es la encargada de determinar lainformación de entorno necesaria.

MQRMH - Cabecera de mensaje de referencia

Capítulo 16. MQRMH - Cabecera de mensaje de referencia 181

Page 196: amqwak00

La longitud de los datos del entorno destino viene dada por RMDEL; si estalongitud es cero, significa que no hay datos del entorno destino y RMDEO seignora. Si están presentes, los datos del entorno destino deben residir porcompleto en RMLEN bytes desde el principio de la estructura.

Las aplicaciones no deben presuponer que los datos del entorno destino seencuentran junto a los datos direccionados por los campos RMSEO, RMSNO yRMDNO.

El valor inicial de este campo es 0.

RMDNL (entero con signo de 10 dígitos)Longitud del nombre de objeto destino.

Si este campo es cero, significa que no hay un nombre de objeto destino yRMDNO se ignora.

RMDNO (entero con signo de 10 dígitos)Desplazamiento del nombre de objeto destino.

Este campo especifica el desplazamiento del nombre de objeto destino desde elprincipio de la estructura MQRMH. El creador del mensaje de referencia puedeespecificar el nombre de objeto destino, si el creador conoce esos datos. Sinembargo, si el creador no conoce el nombre de objeto destino, la rutina desalida de mensaje suministrada por usuario es la encargada de identificar elobjeto que debe crearse o modificarse.

La longitud del nombre de objeto destino viene dada por RMDNL; si estalongitud es cero, significa que no hay un nombre de objeto destino y RMDNO seignora. Si está presente, el nombre de objeto destino debe residir por completoen RMLEN bytes desde el principio de la estructura.

Las aplicaciones no deben presuponer que el nombre de objeto destino seencuentra junto a los datos direccionados por los campos RMSEO, RMSNO y RMDEO.

El valor inicial de este campo es 0.

RMDL (entero con signo de 10 dígitos)Longitud de los datos generales.

El campo RMDL especifica la longitud de los datos generales referenciados por laestructura MQRMH.

Si los datos generales están realmente presentes en el mensaje, los datosempiezan en un desplazamiento de RMLEN bytes desde el principio de laestructura MQRMH. La longitud del mensaje completo, menos RMLEN, da lalongitud de los datos generales presentes.

Si hay datos presentes en el mensaje, RMDL especifica la cantidad de esos datosque es de relevancia. El caso normal es que RMDL tenga el mismo valor que lalongitud de datos realmente presentes en el mensaje.

Si la estructura MQRMH representa los datos restantes del objeto (a partir deldesplazamiento lógico especificado), puede utilizarse el valor cero para RMDL,siempre que los datos generales no estén realmente presentes en el mensaje.

MQRMH - Cabecera de mensaje de referencia

182 Consulta de programación de aplicaciones (ILE RPG)

Page 197: amqwak00

Si no hay datos presentes, el final de MQRMH coincidirá con el final delmensaje.

El valor inicial de este campo es 0.

RMDO (entero con signo de 10 dígitos)Desplazamiento bajo de los datos generales.

Este campo especifica el desplazamiento bajo de los datos generales desde elprincipio del objeto del que forman parte los datos generales. Eldesplazamiento de los datos generales desde el principio del objeto sedenomina desplazamiento lógico. Este no es el desplazamiento físico de los datosgenerales desde el principio de la estructura MQRMH – ese desplazamientoestá indicado por RMLEN.

Para permitir que se envíen objetos de gran tamaño utilizando mensajes dereferencia, el desplazamiento lógico se divide en dos campos y eldesplazamiento lógico real viene dado por la suma de estos campos:v RMDO representa el resto obtenido cuando se divide el desplazamiento lógico

entre 1 000 000 000. Por consiguiente, será un valor comprendido entre 0 y999 999 999.

v RMDO2 representa el resultado obtenido cuando se divide el desplazamientológico entre 1 000 000 000. Por consiguiente, será el número de múltiploscompletos de 1 000 000 000 que existan en el desplazamiento lógico. Elnúmero de múltiplos está comprendido entre 0 y 999 999 999.

El valor inicial de este campo es 0.

RMDO2 (entero con signo de 10 dígitos)Desplazamiento alto de los datos generales.

Este campo especifica el desplazamiento alto de los datos generales desde elprincipio del objeto del que forman parte los datos generales. Es un valorcomprendido entre 0 y 999 999 999. Vea RMDO para más detalles.

El valor inicial de este campo es 0.

MQRMH - Cabecera de mensaje de referencia

Capítulo 16. MQRMH - Cabecera de mensaje de referencia 183

Page 198: amqwak00

Valores iniciales y declaración de RPGTabla 36. Valores iniciales de campos de MQRMH

Nombre de campo Nombre de constante Valor de constante

RMSID RMSIDV 'RMHb' (Vea la nota 1)

RMVER RMVER1 1

RMLEN Ninguno 0

RMENC ENNAT Vea la nota 2

RMCSI Ninguno 0

RMFMT FMNONE 'bbbbbbbb'

RMFLG RMNLST 0

RMOT Ninguno 'bbbbbbbb'

RMOII OIINON Nulos

RMSEL Ninguno 0

RMSEO Ninguno 0

RMSNL Ninguno 0

RMSNO Ninguno 0

RMDEL Ninguno 0

RMDEO Ninguno 0

RMDNL Ninguno 0

RMDNO Ninguno 0

RMDL Ninguno 0

RMDO Ninguno 0

RMDO2 Ninguno 0

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

2. El valor de esta constante es específico del entorno.

Declaración de RPG

184 Consulta de programación de aplicaciones (ILE RPG)

Page 199: amqwak00

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQRMHD*D* Identificador de estructuraD RMSID 1 4D* Número de versión de estructuraD RMVER 5 8I 0D* Longitud total de MQRMH, incluidas las series al final de los campos de longitud fija,D* pero no los datos generalesD RMLEN 9 12I 0D* Codificación numérica de los datos generalesD RMENC 13 16I 0D* Identificador del juego de caracteres de los datos generalesD RMCSI 17 20I 0D* Nombre de formato de los datos generalesD RMFMT 21 28D* Distintivos de mensajes de referenciaD RMFLG 29 32I 0D* Tipo de objetoD RMOT 33 40D* Identificador de la instancia de objetoD RMOII 41 64D* Longitud de los datos del entorno origenD RMSEL 65 68I 0D* Desplazamiento de los datos del entorno origenD RMSEO 69 72I 0D* Longitud del nombre de objeto origenD RMSNL 73 76I 0D* Desplazamiento del nombre de objeto origenD RMSNO 77 80I 0D* Longitud de los datos del entorno destinoD RMDEL 81 84I 0D* Desplazamiento de los datos del entorno destinoD RMDEO 85 88I 0D* Longitud del nombre de objeto destinoD RMDNL 89 92I 0D* Desplazamiento del nombre de objeto destinoD RMDNO 93 96I 0D* Longitud de los datos generalesD RMDL 97 100I 0D* Desplazamiento bajo de los datos generalesD RMDO 101 104I 0D* Desplazamiento alto de los datos generalesD RMDO2 105 108I 0

Declaración de RPG

Capítulo 16. MQRMH - Cabecera de mensaje de referencia 185

Page 200: amqwak00

Declaración de RPG

186 Consulta de programación de aplicaciones (ILE RPG)

Page 201: amqwak00

Capítulo 17. MQRR - Registro de respuesta

La tabla siguiente resume los campos de la estructura.

Tabla 37. Campos de MQRR

Campo Descripción Página

RRCC Código de terminación para la cola 187

RRREA Código de razón para la cola 187

Visión generalLa estructura MQRR se utiliza para recibir el código de terminación y el código derazón resultantes de la operación de abrir o poner para una sola cola destino.Proporcionando un conjunto de estas estructuras en las llamadas MQOPEN yMQPUT, o en la llamada MQPUT1, es posible determinar los códigos determinación y los códigos de razón para todas las colas de una lista dedistribución, cuando el resultado de la llamada es mixto, es decir, cuando lallamada es satisfactoria para algunas colas de la lista pero resulta anómala paraotras. El código de razón RC2136 de la llamada indica que el gestor de colas haestablecido los registros de respuesta (si la aplicación los suministra).

MQRR es una estructura de salida para las llamadas MQOPEN, MQPUT yMQPUT1.

CamposRRCC (entero con signo de 10 dígitos)

Código de terminación para la cola.

Este es el código de terminación resultante de la operación de apertura otransferencia para la cola cuyo nombre especificó el elemento correspondientedel conjunto de estructuras MQOR suministradas en la llamada MQOPEN oMQPUT1.

Es siempre un campo de salida. El valor inicial de este campo es CCOK.

RRREA (entero con signo de 10 dígitos)Código de razón para la cola.

Este es el código de razón resultante de la operación de apertura otransferencia para la cola cuyo nombre especificó el elemento correspondientedel conjunto de estructuras MQOR suministradas en la llamada MQOPEN oMQPUT1.

Es siempre un campo de salida. El valor inicial de este campo es RCNONE.

© Copyright IBM Corp. 1994, 2000 187

Page 202: amqwak00

Valores iniciales y declaración de RPGTabla 38. Valores iniciales de campos de MQRR

Nombre de campo Nombre de constante Valor de constante

RRCC CCOK 0

RRREA RCNONE 0

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQRRD*D* Código de terminación para la colaD RRCC 1 4I 0D* Código de razón para la colaD RRREA 5 8I 0

Declaración de RPG

188 Consulta de programación de aplicaciones (ILE RPG)

Page 203: amqwak00

Capítulo 18. MQTM - Mensaje desencadenante

La tabla siguiente resume los campos de la estructura.

Tabla 39. Campos de MQTM

Campo Descripción Página

TMSID Identificador de estructura 190

TMVER Número de versión de la estructura 190

TMQN Nombre de cola desencadenada 190

TMPN Nombre del objeto proceso 191

TMTD Datos desencadenantes 191

TMAT Tipo de aplicación 191

TMAI Identificador de aplicación 192

TMED Datos del entorno 192

TMUD Datos de usuario 192

Visión generalLa estructura MQTM describe los datos del mensaje desencadenante que el gestorde colas envía a una aplicación supervisora de desencadenamiento cuando seproduce un suceso desencadenante para una cola. Esta estructura forma parte de lainterfaz de supervisor de desencadenamiento (TMI) de MQSeries, que es una delas interfaces de la Infraestructura MQSeries.

La aplicación supervisora de desencadenamiento tal vez tenga que pasar parte otoda la información del mensaje desencadenante a la aplicación arrancada por laaplicación supervisora de desencadenamiento. La información que la aplicaciónarrancada puede necesitar incluye TMQN, TMTD y TMUD. La aplicación supervisora dedesencadenamiento puede pasar la estructura MQTM directamente a la aplicaciónarrancada o bien pasar una estructura MQTMC2, según lo que sea más prácticopara la aplicación arrancada. Para obtener información sobre MQTMC2, vea el“Capítulo 19. MQTMC2 - Mensaje desencadenante (formato de caracteres)” en lapágina 195.

Encontrará información sobre mensajes desencadenantes en MQSeries ApplicationProgramming Guide.

Los campos del descriptor del mensaje desencadenante se establecen del modosiguiente:

Campo de MQMDValor utilizado

MDSID MDSIDVMDVER MDVER1MDREP RONONEMDMT MTDGRMMDEXP EIULIMMDFB FBNONEMDENC ENNAT

© Copyright IBM Corp. 1994, 2000 189

Page 204: amqwak00

MDCSI Atributo CodedCharSetId del gestor de colasMDFMT FMTMMDPRI Atributo DefPriority de la cola de inicioMDPER PENPERMDMID Un valor exclusivoMDCID CINONEMDBOC 0MDRQ BlancosMDRM Nombre del gestor de colasMDUID BlancosMDACC ACNONEMDAID BlancosMDPAT ATQM o el apropiado para el agente de canal de mensajesMDPAN Los primeros 28 bytes del nombre del gestor de colasMDPD Fecha en la que se envía el mensaje desencadenanteMDPT Hora a la que se ha envía el mensaje desencadenanteMDAOD Blancos

Se recomienda utilizar valores similares en las aplicaciones que generen unmensaje desencadenante, salvo en los casos siguientes:v El campo MDPRI se puede establecer en PRQDEF (el gestor de colas cambiará este

valor por la prioridad por omisión para la cola de inicio cuando se ponga elmensaje).

v El campo MDRM se puede establecer en blancos (el gestor de colas cambiará estevalor por el nombre del gestor de colas local cuando se ponga el mensaje).

v Los campos de contexto deben establecerse según corresponda a la aplicación.

CamposTMSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

TMSIDVIdentificador de una estructura de mensaje desencadenante.

El valor inicial de este campo es TMSIDV.

TMVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

TMVER1Número de versión de la estructura del mensaje desencadenante.

La siguiente constante especifica el número de la versión actual:

TMVERCVersión actual de la estructura de mensaje desencadenante.

El valor inicial de este campo es TMVER1.

TMQN (serie de caracteres de 48 bytes)Nombre de la cola desencadenada.

MQTM - Mensaje desencadenante

190 Consulta de programación de aplicaciones (ILE RPG)

Page 205: amqwak00

Es el nombre de la cola para la que se ha producido un sucesodesencadenante; lo utiliza la aplicación arrancada por la aplicación supervisorade desencadenamiento. El gestor de colas inicializa este campo con el valor delatributo QName de la cola desencadenada; vea el “Capítulo 37. Atributos detodas las colas” en la página 305 para obtener detalles de este atributo.

Los nombres cuya longitud sea inferior a la definida para el campo serellenarán con blancos a la derecha; no terminarán prematuramente medianteun carácter nulo.

La longitud de este campo la indica LNQN. El valor inicial de este campo esde 48 caracteres en blanco.

TMPN (serie de caracteres de 48 bytes)Nombre del objeto proceso.

Es el nombre del objeto proceso de gestor de colas especificado para la coladesencadenada; lo puede utilizar la aplicación supervisora dedesencadenamiento que recibe el mensaje desencadenante. El gestor de colasinicializa este campo con el valor del atributo ProcessName de la colaidentificada por el campo TMQN; vea el “Capítulo 38. Atributos de colas locales ycolas modelo” en la página 311 para obtener detalles de este atributo.

Los nombres cuya longitud sea inferior a la definida para el campo siempre serellenarán con blancos a la derecha; no terminarán prematuramente medianteun carácter nulo.

La longitud de este campo la indica LNPRON. El valor inicial de este campoes de 48 caracteres en blanco.

TMTD (serie de caracteres de 64 bytes)Datos desencadenantes.

Son datos con formato libre que utilizará la aplicación supervisora dedesencadenamiento que recibe el mensaje desencadenante. El gestor de colasinicializa este campo con el valor del atributo TriggerData de la colaidentificada por el campo TMQN; vea el “Capítulo 38. Atributos de colas locales ycolas modelo” en la página 311 para obtener detalles de este atributo. Elcontenido de estos datos no es significativo para el gestor de colas.

La longitud de este campo la indica LNTRGD. El valor inicial del campo son64 caracteres en blanco.

TMAT (entero con signo de 10 dígitos)Tipo de aplicación.

Identifica la naturaleza del programa que se ha de arrancar; lo utiliza laaplicación supervisora de desencadenamiento que recibe el mensajedesencadenante. El gestor de colas inicializa este campo con el valor delatributo ApplType del objeto proceso identificado por el campo TMPN; vea el“Capítulo 42. Atributos de las definiciones de proceso” en la página 333 paraobtener detalles de este atributo. El contenido de estos datos no es significativopara el gestor de colas.

TMAT puede tener uno de los siguientes valores estándar. También puedenutilizarse tipos definidos por el usuario, pero deben estar restringidos a losvalores comprendidos entre ATUFST y ATULST:

MQTM - Mensaje desencadenante

Capítulo 18. MQTM - Mensaje desencadenante 191

Page 206: amqwak00

ATCICSTransacción CICS.

ATVSETransacción CICS/VSE.

AT400 Aplicación OS/400ATUFST

Valor inferior del tipo de aplicación definido por el usuario.ATULST

Valor superior del tipo de aplicación definido por el usuario.

El valor inicial de este campo es 0.

TMAI (serie de caracteres de 256 bytes)Identificador de aplicación.

Es una serie de caracteres que identifica la aplicación que debe arrancarse; loutiliza la aplicación supervisora de desencadenamiento que recibe el mensajedesencadenante. El gestor de colas inicializa este campo con el valor delatributo ApplId del objeto proceso identificado por el campo TMPN; vea el“Capítulo 42. Atributos de las definiciones de proceso” en la página 333 paraobtener detalles de este atributo. El contenido de estos datos no es significativopara el gestor de colas.

El significado de TMAI viene determinado por la aplicación supervisora dedesencadenamiento. El supervisor de desencadenamiento suministrado porMQSeries requiere que TMAI sea el nombre de un programa ejecutable.

La longitud de este campo la indica LNPROA. El valor inicial del campo son256 caracteres en blanco.

TMED (serie de caracteres de 128 bytes)Datos de entorno.

Es una serie de caracteres que contiene información relacionada con el entornoy referente a la aplicación que se ha de arrancar; lo utiliza la aplicaciónsupervisora de desencadenamiento que recibe el mensaje desencadenante. Elgestor de colas inicializa este campo con el valor del atributo EnvData delobjeto proceso identificado por el campo TMPN; vea el “Capítulo 42. Atributosde las definiciones de proceso” en la página 333 para obtener detalles de esteatributo. El contenido de estos datos no es significativo para el gestor de colas.

La longitud de este campo la indica LNPROE. El valor inicial del campo son128 caracteres en blanco.

TMUD (serie de caracteres de 128 bytes)Datos de usuario.

Es una serie de caracteres que contiene información de usuario referente a laaplicación que se ha de arrancar; lo utiliza la aplicación supervisora dedesencadenamiento que recibe el mensaje desencadenante. El gestor de colasinicializa este campo con el valor del atributo UserData del objeto procesoidentificado por el campo TMPN; vea el “Capítulo 42. Atributos de lasdefiniciones de proceso” en la página 333 para obtener detalles de este atributo.El contenido de estos datos no es significativo para el gestor de colas.

La longitud de este campo la indica LNPROU. El valor inicial del campo son128 caracteres en blanco.

MQTM - Mensaje desencadenante

192 Consulta de programación de aplicaciones (ILE RPG)

||

Page 207: amqwak00

Valores iniciales y declaración de RPGTabla 40. Valores iniciales de campos de MQTM

Nombre de campo Nombre de constante Valor de constante

TMSID TMSIDV 'TMbb' (Ver nota 1)

TMVER TMVER1 1

TMQN Ninguno Blancos

TMPN Ninguno Blancos

TMTD Ninguno Blancos

TMAT Ninguno 0

TMAI Ninguno Blancos

TMED Ninguno Blancos

TMUD Ninguno Blancos

Notas:

1. El símbolo ‘b’ representa un solo carácter en blanco.

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura de MQTMD*D* Identificador de estructuraD TMSID 1 4D* Número de versión de estructuraD TMVER 5 8I 0D* Nombre de cola desencadenadaD TMQN 9 56D* Nombre del objeto procesoD TMPN 57 104D* Datos desencadenantesD TMTD 105 168D* Tipo de aplicaciónD TMAT 169 172I 0D* Identificador de aplicaciónD TMAI 173 428D* Datos de entornoD TMED 429 556D* Datos de usuarioD TMUD 557 684

MQTM - Mensaje desencadenante

Capítulo 18. MQTM - Mensaje desencadenante 193

Page 208: amqwak00

MQTM - Mensaje desencadenante

194 Consulta de programación de aplicaciones (ILE RPG)

Page 209: amqwak00

Capítulo 19. MQTMC2 - Mensaje desencadenante (formato decaracteres)

La tabla siguiente resume los campos de la estructura.

Tabla 41. Campos de MQTMC2

Campo Descripción Página

TC2SID Identificador de estructura 196

TC2VER Número de versión de la estructura 196

TC2QN Nombre de cola desencadenada 196

TC2PN Nombre del objeto de proceso 196

TC2TD Datos desencadenantes 196

TC2AT Tipo de aplicación 196

TC2AI Identificador de aplicación 196

TC2ED Datos del entorno 196

TC2UD Datos de usuario 196

TC2QMN Nombre del gestor de colas 197

Visión generalCuando una aplicación supervisora de desencadenamiento recupera un mensajedesencadenante (MQTM) de una cola de inicio, el supervisor dedesencadenamiento puede tener que pasar parte o toda la información del mensajedesencadenante a la aplicación arrancada por el supervisor de desencadenamiento.La información que la aplicación arrancada puede necesitar incluye TC2QN, TC2TD yTC2UD. La aplicación supervisora de desencadenamiento puede pasar la estructuraMQTM directamente a la aplicación arrancada o bien pasar una estructuraMQTMC2, según lo que sea más práctico para la aplicación arrancada.

Esta estructura forma parte de la interfaz de supervisor de desencadenamiento(TMI) de MQSeries, que es una de las interfaces de la Infraestructura MQSeries.v En OS/390, para una aplicación ATIMS que se arranque utilizando la aplicación

CSQQTRMN, se pone una estructura MQTMC2 a disposición de la aplicaciónarrancada.

v En VSE/ESA, esta estructura no está soportada.v En Windows de 16 bits y Windows de 32 bits, no hay ninguna aplicación

supervisora de desencadenamiento, por lo que esta estructura no está soportada.

La estructura MQTMC2 es muy parecida al formato del mensaje desencadenante(estructura MQTM). La diferencia estriba en que los campos de MQTM que no sonde caracteres, en MQTMC2 se convierten en campos de caracteres de la mismalongitud y se añade el nombre del gestor de colas al final de la estructura.

Vea el “Capítulo 18. MQTM - Mensaje desencadenante” en la página 189 paraobtener más detalles sobre los campos que son los mismos en esta estructura.

© Copyright IBM Corp. 1994, 2000 195

|

Page 210: amqwak00

CamposTC2SID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

TCSIDVIdentificador de una estructura de mensaje desencadenante (formato decaracteres).

TC2VER (serie de caracteres de 4 bytes)Número de versión de la estructura.

El valor debe ser:

TCVER2Estructura de mensaje desencadenante (formato de caracteres) de laversión 2.

La siguiente constante especifica el número de la versión actual:

TCVERCVersión actual de la estructura de mensaje desencadenante (formato decaracteres).

TC2QN (serie de caracteres de 48 bytes)Nombre de la cola desencadenada.

Vea el campo TMQN de la estructura MQTM.

TC2PN (serie de caracteres de 48 bytes)Nombre del objeto proceso.

Vea el campo TMPN de la estructura MQTM.

TC2TD (serie de caracteres de 64 bytes)Datos desencadenantes.

Vea el campo TMTD de la estructura MQTM.

TC2AT (serie de caracteres de 4 bytes)Tipo de aplicación.

Este campo siempre contiene blancos, sea cual sea el valor del campo TMAT dela estructura MQTM del mensaje desencadenante original.

TC2AI (serie de caracteres de 256 bytes)Identificador de aplicación.

Vea el campo TMAI de la estructura MQTM.

TC2ED (serie de caracteres de 128 bytes)Datos de entorno.

Vea el campo TMED de la estructura MQTM.

TC2UD (serie de caracteres de 128 bytes)Datos de usuario.

Vea el campo TMUD de la estructura MQTM.

MQTMC2 - Mensaje desencadenante (formato de caracteres)

196 Consulta de programación de aplicaciones (ILE RPG)

Page 211: amqwak00

TC2QMN (serie de caracteres de 48 bytes)Nombre del gestor de colas.

Es el nombre del gestor de colas en el que se ha producido el sucesodesencadenante.

Valores iniciales y declaración de RPGTabla 42. Valores iniciales de campos de MQTMC2

Nombre de campo Nombre de constante Valor de constante

TC2SID TCSIDV 'TMCb' (Ver nota 1)

TC2VER TCVER2 'bbb2'

TC2QN Ninguno Blancos

TC2PN Ninguno Blancos

TC2TD Ninguno Blancos

TC2AT Ninguno 'bbbb'

TC2AI Ninguno Blancos

TC2ED Ninguno Blancos

TC2UD Ninguno Blancos

TC2QMN Ninguno Blancos

Notas:

1. El símbolo ‘b’ representa un solo carácter en blanco.

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQTMC2D*D* Identificador de estructuraD TC2SID 1 4D* Número de versión de estructuraD TC2VER 5 8D* Nombre de cola desencadenadaD TC2QN 9 56D* Nombre del objeto procesoD TC2PN 57 104D* Datos desencadenantesD TC2TD 105 168D* Tipo de aplicaciónD TC2AT 169 172D* Identificador de aplicaciónD TC2AI 173 428D* Datos de entornoD TC2ED 429 556D* Datos de usuarioD TC2UD 557 684D* Nombre del gestor de colasD TC2QMN 685 732

MQTMC2 - Mensaje desencadenante (formato de caracteres)

Capítulo 19. MQTMC2 - Mensaje desencadenante (formato de caracteres) 197

Page 212: amqwak00

Declaración de RPG

198 Consulta de programación de aplicaciones (ILE RPG)

Page 213: amqwak00

Capítulo 20. MQWIH - Cabecera de información de trabajo

La tabla siguiente resume los campos de la estructura.

Tabla 43. Campos de MQWIH

Campo Descripción Página

WISID Identificador de estructura 199

WIVER Número de versión de la estructura 199

WILEN Longitud de la estructura MQWIH 200

WIENC Codificación numérica de los datos que siguen aMQWIH

200

WICSI Identificador de juego de caracteres de los datosque siguen a MQWIH

200

WIFMT Nombre de formato de los datos que siguen aMQWIH

200

WIFLG Distintivos 200

WISNM Nombre de servicio 200

WISST Nombre de paso de servicio 200

WITOK Símbolo de mensaje 201

Visión generalLa estructura MQWIH describe la información que debe estar presente al principiode un mensaje que el gestor de carga de trabajo de OS/390 tiene que manejar. Elnombre del formato de esta estructura es FMWIH.

CamposWISID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

WISIDVIdentificador de la estructura de cabecera de información de trabajo.

El valor inicial de este campo es WISIDV.

WIVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

WIVER1Estructura de cabecera de información de trabajo de la versión 1.

La siguiente constante especifica el número de la versión actual:

WIVERCVersión actual de la estructura de cabecera de información de trabajo.

© Copyright IBM Corp. 1994, 2000 199

Page 214: amqwak00

El valor inicial de este campo es WIVER1.

WILEN (entero con signo de 10 dígitos)Longitud de la estructura MQWIH.

El valor debe ser:

WILEN1Longitud de la estructura de cabecera de información de trabajo de laversión 1.

La siguiente constante especifica la longitud de la versión actual:

WILENCLongitud de la versión actual de la estructura de cabecera deinformación de trabajo.

El valor inicial de este campo es WILEN1.

WIENC (entero con signo de 10 dígitos)Codificación numérica de los datos que siguen a MQWIH.

Esta es la codificación numérica de los datos que siguen a la estructuraMQWIH. El valor inicial de este campo es 0.

WICSI (entero con signo de 10 dígitos)Identificador de juego de caracteres de los datos que siguen a MQWIH.

Este es el identificador de juego de caracteres codificado de los datos quesiguen a la estructura MQWIH. El valor inicial de este campo es 0.

WIFMT (serie de caracteres de 8 bytes)Nombre del formato de los datos que siguen a MQWIH.

Este es el nombre de formato MQ de los datos que siguen a la estructuraMQWIH. Las reglas para codificar son las mismas que las aplicables al campoMDFMT de MQMD.

La longitud de este campo la indica LNFMT. El valor inicial de este campo esFMNONE.

WIFLG (entero con signo de 10 dígitos)Distintivos

El valor debe ser:

WINONENingún distintivo.

El valor inicial de este campo es WINONE.

WISNM (serie de caracteres de 32 bytes)Nombre de servicio.

Esl el nombre del servicio que procesará el mensaje.

La longitud de este campo la indica LNSVNM. El valor inicial del campo son32 caracteres en blanco.

WISST (serie de caracteres de 8 bytes)Nombre de paso de servicio.

MQWIH - Cabecera de información de trabajo

200 Consulta de programación de aplicaciones (ILE RPG)

Page 215: amqwak00

Es el nombre del paso de WISNM con el que está relacionado el mensaje.

La longitud de este campo la indica LNSVST. El valor inicial del campo son 8caracteres en blanco.

WITOK (serie de bits de 16 bytes)Símbolo de mensaje.

Es un símbolo de mensaje que identifica al mensaje de forma exclusiva.

En las llamadas MQPUT y MQPUT1, se ignora este campo. La longitud de estecampo la indica LNMTOK. El valor inicial de este campo es MTKNON.

WIRSV (serie de caracteres de 32 bytes)Reservado.

Es un campo reservado; debe estar en blanco.

Valores iniciales y declaración de RPGTabla 44. Valores iniciales de campos de MQWIH

Nombre de campo Nombre de constante Valor de constante

WISID WISIDV 'WIHb' (Vea la nota 1)

WIVER WIVER1 1

WILEN WILEN1 120

WIENC Ninguno 0

WICSI Ninguno 0

WIFMT FMNONE 'bbbbbbbb'

WIFLG WINONE 0

WISNM Ninguno Blancos

WISST Ninguno Blancos

WITOK MTKNON Nulos

WIRSV Ninguno Blancos

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQWIHD*D* Identificador de estructuraD WISID 1 4D* Número de versión de estructuraD WIVER 5 8I 0D* Longitud de la estructura MQWIHD WILEN 9 12I 0D* Codificación numérica de los datos que siguen a MQWIHD WIENC 13 16I 0D* Identificador de juego de caracteres de los datos que siguen a MQWIHD WICSI 17 20I 0D* Nombre de formato de los datos que siguen a MQWIHD WIFMT 21 28D* Distintivos

MQWIH - Cabecera de información de trabajo

Capítulo 20. MQWIH - Cabecera de información de trabajo 201

||

|||

|||

|||

|||

|||

|||

|||

|||

|||

|||

|||

|||

|

||

|

Page 216: amqwak00

D WIFLG 29 32I 0D* Nombre de servicioD WISNM 33 64D* Nombre de paso de servicioD WISST 65 72D* Símbolo de mensajeD WITOK 73 88D* ReservadoD WIRSV 89 120

Declaración de RPG

202 Consulta de programación de aplicaciones (ILE RPG)

Page 217: amqwak00

Capítulo 21. MQXQH - Cabecera de cola de transmisión

La tabla siguiente resume los campos de la estructura.

Tabla 45. Campos de MQXQH

Campo Descripción Página

XQSID Identificador de estructura 206

XQVER Número de versión de la estructura 206

XQRQ Nombre de la cola destino 206

XQRQM Nombre del gestor de colas destino 206

XQMD Descriptor de mensaje original 206

Visión generalLa estructura MQXQH describe la información que se prefija en los datos de losmensajes de aplicación cuando están en colas de transmisión. Una cola detransmisión es un tipo especial de cola local que contiene temporalmente losmensajes destinados a colas remotas (es decir, los destinados a colas que nopertenecen al gestor de colas local). Una cola de transmisión se indica mediante elvalor USTRAN aplicado al atributo de cola Usage.

Un mensaje que está en una cola de transmisión tiene dos descriptores de mensaje:v Un descriptor de mensaje se almacena aparte de los datos del mensaje, lo que se

conoce con el nombre de descriptor de mensaje aparte, y se trata de una versiónmodificada del descriptor de mensaje que facilita la aplicación en el parámetroMSGDSC de la llamada MQPUT o MQPUT1 (vea más detalles a continuación).El mensaje transferido por la aplicación puede ser un mensaje de un grupo o unsegmento de un mensaje lógico, o bien puede tener habilitada la segmentación,pero estas propiedades no se propagan al descriptor de mensaje aparte: loscampos de la versión 2 en el descriptor de mensaje aparte siempre tienen losvalores por omisión.El descriptor de mensaje aparte es el que se devuelve a la aplicación en elparámetro MSGDSC de la llamada MQGET cuando el mensaje se elimina de la colade transmisión.

v Un segundo descriptor de mensaje se almacena en la estructura MQXQH comoparte de los datos del mensaje, lo que se conoce con el nombre de descriptor demensaje incorporado y es una copia bastante aproximada del descriptor demensaje que facilita la aplicación en el parámetro MSGDSC de la llamada MQPUTo MQPUT1 (vea más detalles a continuación).El descriptor de mensaje incorporado es siempre un MQMD de la versión 1. Siel mensaje transferido por la aplicación tiene valores no por omisión para uno ovarios de los campos de la versión 2 en el MQMD, habrá una estructuraMQMDE a continuación de MQXQH que, a su vez, irá seguido de los datos delmensaje de la aplicación (si los hay). El MQMDE puede ser:– Generado por el gestor de colas (si la aplicación utiliza un MQMD de la

versión 2 para transferir el mensaje), o bien– Ya presente al principio de los datos del mensaje de la aplicación (si la

aplicación utiliza un MQMD de la versión 1 para transferir el mensaje).

© Copyright IBM Corp. 1994, 2000 203

Page 218: amqwak00

El descriptor de mensaje incorporado es el que se devuelve a la aplicación en elparámetro MSGDSC de la llamada MQGET cuando el mensaje se elimina de la coladestino final.

Poner mensajes en colas remotas: Cuando una aplicación pone un mensaje en unacola remota (ya sea especificando directamente el nombre de la cola remota, outilizando una definición local de la cola remota), el gestor de colas local:v Crea una estructura MQXQH que contiene el descriptor de mensaje incorporadov Añade una MQMDE, si es necesaria y no hay ninguna presentev Añade los datos del mensaje de aplicaciónv Coloca el mensaje en una cola de transmisión adecuada

Los datos de tipo carácter de la estructura MQXQH tienen el juego de caracteresdel gestor de colas local (definido por el atributo de gestor de colasCodedCharSetId); los datos de tipo entero tienen la codificación de máquina nativa.Estos valores se almacenan en el descriptor de mensaje aparte y pueden serdistintos de los valores de los campos MDCSI y MDENC del descriptor de mensajeincorporado, ya que los últimos campos están relacionados con los datos delmensaje de aplicación y no con la estructura MQXQH propiamente dicha.

Los campos del descriptor de mensaje incorporado tienen los mismos valores quelos del parámetro MSGDSC de la llamada MQPUT o MQPUT1, salvo en los casossiguientes:v El campo MDVER siempre tiene el valor MDVER1.v Si el campo MDPRI tiene el valor PRQDEF, se sustituye por el valor del atributo

DefPriority de la cola.v Si el campo MDPER tiene el valor PEQDEF, se sustituye por el valor del atributo

DefPersistence de la cola.v Si el campo MDMID tiene el valor MINONE, o se ha especificado la opción

PMNMID, o el mensaje es un mensaje de lista de distribución, se sustituye MDMIDpor un identificador de mensaje nuevo generado por el gestor de colas.Cuando se divide un mensaje de lista de distribución en mensajes de lista dedistribución más pequeños colocados en distintas colas de transmisión, el campoMDMID de cada uno de los nuevos descriptores de mensaje incorporados seráigual que en el mensaje de lista de distribución original.

v Si se ha especificado la opción PMNCID, se sustituye MDCID por un identificadorde correlación nuevo generado por el gestor de colas.

v Los campos de contexto se definen tal como indican las opciones de contextoPM* especificadas en el parámetro PMO. Estos campos de contexto son loscampos de MDUID a MDAOD indicados en la lista siguiente.

v Los campos de la versión 2 (si están presentes) se eliminan de MQMD y setrasladan a una estructura MQMDE, si uno o varios de los campos de la versión2 tienen un valor no por omisión.

Los campos del descriptor de mensaje aparte los establece el gestor de colas delmodo que se muestra más abajo. Si el gestor de colas no soporta el MQMD de laversión 2, se utiliza un MQMD de la versión 1 sin pérdida de funciones.

Campo en MQMD separado Valor utilizadoMDSID MDSIDVMDVER MDVER2MDREP Copiado del descriptor de mensaje incorporado, pero con los bits

identificados por ROAUXM establecidos en cero. (Esto impide que segenere un mensaje de informe COA o COD cuando se coloca o se eliminaun mensaje en una cola de transmisión).

MQXQH - Cabecera de cola de transmisión

204 Consulta de programación de aplicaciones (ILE RPG)

Page 219: amqwak00

Campo en MQMD separado Valor utilizadoMDMT Copiado del descriptor de mensaje incorporado.MDEXP Copiado del descriptor de mensaje incorporado.MDFB Copiado del descriptor de mensaje incorporado.MDENC ENNATMDCSI Atributo CodedCharSetId del gestor de colas.MDFMT FMXQHMDPRI Copiado del descriptor de mensaje incorporado.MDPER Copiado del descriptor de mensaje incorporado.MDMID El gestor de colas genera un valor nuevo. Este identificador de mensaje

es distinto del MDMID que el gestor de colas puede haber generado para eldescriptor de mensaje incorporado (vea la nota anterior).

MDCID El MDMID del descriptor de mensaje incorporado.MDBOC 0MDRQ Copiado del descriptor de mensaje incorporado.MDRM Copiado del descriptor de mensaje incorporado.MDUID Copiado del descriptor de mensaje incorporado.MDACC Copiado del descriptor de mensaje incorporado.MDAID Copiado del descriptor de mensaje incorporado.MDPAT ATQMMDPAN Los primeros 28 bytes del nombre del gestor de colas.MDPD Fecha en la que se puso el mensaje en la cola de transmisión.MDPT Hora en la que se puso el mensaje en la cola de transmisión.MDAOD Blancos.MDGID GINONEMDSEQ 1MDOFF 0MDMFL MFNONEMDOLN OLUNDF

Poner mensajes directamente en colas de transmisión: También es posible queuna aplicación ponga un mensaje directamente en una cola de transmisión. En esecaso, la aplicación debe prefijar los datos del mensaje de la aplicación con unaestructura MQXQH e inicializar los campos con los valores adecuados. Además, elcampo MDFMT del parámetro MSGDSC de la llamada MQPUT o MQPUT1 debe tenerel valor FMXQH.

Los datos de tipo carácter de la estructura MQXQH creada por la aplicación debentener el juego de caracteres del gestor de colas local (definido por el atributo degestor de colas CodedCharSetId); los datos de tipo entero deben tener lacodificación de máquina nativa. Además, los datos de tipo carácter de la estructuraMQXQH deben rellenarse con blancos hasta alcanzar la longitud definida para elcampo; los datos no deben terminar prematuramente utilizando un carácter nulo,ya que el gestor de colas no convierte en blancos el nulo ni los caracteressiguientes de esta estructura MQXQH.

Recuerde que el gestor de colas no comprueba si existe una estructura MQXQH, nisi se han especificado valores válidos en los campos.

Obtener mensajes de las colas de transmisión: Las aplicaciones que obtienenmensajes de una cola de transmisión deben procesar de forma adecuada lainformación de la estructura MQXQH. La presencia de la estructura MQXQH alprincipio de los datos del mensaje de aplicación está indicada mediante ladevolución del valor FMXQH en el campo MDFMT del parámetro MSGDSC de lallamada MQGET. Los valores devueltos en los campos MDCSI y MDENC del

MQXQH - Cabecera de cola de transmisión

Capítulo 21. MQXQH - Cabecera de cola de transmisión 205

Page 220: amqwak00

parámetro MSGDSC indican, respectivamente, el juego de caracteres y la codificaciónde los datos de tipo carácter y de tipo entero de la estructura MQXQH. El juego decaracteres y la codificación de los datos del mensaje de aplicación los definen loscampos MDCSI y MDENC del descriptor de mensaje incorporado.

CamposXQSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

XQSIDVIdentificador de la estructura de cabecera de cola de transmisión.

El valor inicial de este campo es XQSIDV.

XQVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

XQVER1Número de versión de la estructura de cabecera de cola detransmisión.

La siguiente constante especifica el número de la versión actual:

XQVERCVersión actual de la estructura de cabecera de cola de transmisión.

El valor inicial de este campo es XQVER1.

XQRQ (serie de caracteres de 48 bytes)Nombre de la cola destino.

Es el nombre de la cola de mensajes que constituye el destino eventual yaparente del mensaje (puede que no sea el posible destino real si, por ejemplo,la cola se define en XQRQM como la definición local de otra cola remota).

Si el mensaje es un mensaje de lista de distribución (es decir, el campo MDFMTdel descriptor de mensaje incorporado es FMDH), XQRQ estará en blanco.

La longitud de este campo la indica LNQN. El valor inicial de este campo esde 48 caracteres en blanco.

XQRQM (serie de caracteres de 48 bytes)Nombre del gestor de colas destino.

Es el nombre del gestor de colas propietario de la cola que constituye eldestino eventual y aparente del mensaje.

Si el mensaje es un mensaje de lista de distribución, XQRQM estará en blanco.

La longitud de este campo la indica LNQMN. El valor inicial de este campo esde 48 caracteres en blanco.

XQMD (MQMD1)Descriptor de mensaje original.

MQXQH - Cabecera de cola de transmisión

206 Consulta de programación de aplicaciones (ILE RPG)

Page 221: amqwak00

Es el descriptor de mensaje incorporado y es una copia aproximada delMQMD del descriptor de mensaje que se especificó como parámetro MSGDSC enla llamada MQPUT o MQPUT1 al transferir originalmente el mensaje a la colaremota.

Nota: Este es un MQMD de la versión 1.

Los valores iniciales de los campos de esta estructura son iguales que los de laestructura MQMD.

Valores iniciales y declaración de RPGTabla 46. Valores iniciales de campos de MQXQH

Nombre de campo Nombre de constante Valor de constante

XQSID XQSIDV 'XQHb' (Vea la nota 1)

XQVER XQVER1 1

XQRQ Ninguno Blancos

XQRQM Ninguno Blancos

XQMD Los mismos nombres y valores que paraMQMD; vea la Tabla 22 en la página 134

Notas:

1. El símbolo ‘b’ representa un carácter en blanco.

Declaración de RPGD*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQXQHD*D* Identificador de estructuraD XQSID 1 4D* Número de versión de estructuraD XQVER 5 8I 0D* Nombre de la cola destinoD XQRQ 9 56D* Nombre del gestor de colas destinoD XQRQM 57 104D* Descriptor de mensaje originalD*D* Identificador de estructuraD XQ1SID 105 108D* Número de versión de estructuraD XQ1VER 109 112I 0D* Opciones de informeD XQ1REP 113 116I 0D* Tipo de mensajeD XQ1MT 117 120I 0D* Hora de caducidadD XQ1EXP 121 124I 0D* Código de información de retorno o de razónD XQ1FB 125 128I 0D* Codificación numérica de los datos del mensajeD XQ1ENC 129 132I 0D* Identificador de juego de caracteres de los datos del mensajeD XQ1CSI 133 136I 0D* Nombre de formato de los datos del mensajeD XQ1FMT 137 144D* Prioridad del mensajeD XQ1PRI 145 148I 0

MQXQH - Cabecera de cola de transmisión

Capítulo 21. MQXQH - Cabecera de cola de transmisión 207

Page 222: amqwak00

D* Permanencia del mensajeD XQ1PER 149 152I 0D* Identificador de mensajeD XQ1MID 153 176D* Identificador de correlaciónD XQ1CID 177 200D* Contador de restituciónD XQ1BOC 201 204I 0D* Nombre de la cola de respuestasD XQ1RQ 205 252D* Nombre del gestor de la cola de respuestasD XQ1RM 253 300D* Identificador de usuarioD XQ1UID 301 312D* Símbolo de contabilidadD XQ1ACC 313 344D* Datos de aplicación relacionados con la identidadD XQ1AID 345 376D* Tipo de aplicación que pone el mensajeD XQ1PAT 377 380I 0D* Nombre de aplicación que pone el mensajeD XQ1PAN 381 408D* Fecha en que se puso el mensajeD XQ1PD 409 416D* Hora en que se puso el mensajeD XQ1PT 417 424D* Datos de aplicación relacionados con el origenD XQ1AOD 425 428

Declaración de RPG

208 Consulta de programación de aplicaciones (ILE RPG)

Page 223: amqwak00

Parte 2. Llamadas de funciones

Capítulo 22. Descripciones de las llamadas . . 211Convenios utilizados en las descripciones de lasllamadas . . . . . . . . . . . . . . . 211

Capítulo 23. MQBACK - Restituir cambios . . . 213Sintaxis . . . . . . . . . . . . . . . 213Parámetros . . . . . . . . . . . . . . 213Notas de utilización . . . . . . . . . . . 214Invocación RPG . . . . . . . . . . . . 215

Capítulo 24. MQBEGIN - Empezar unidad detrabajo . . . . . . . . . . . . . . . 217Sintaxis . . . . . . . . . . . . . . . 217Parámetros . . . . . . . . . . . . . . 217Notas de utilización . . . . . . . . . . . 218Invocación RPG (ILE) . . . . . . . . . . 220

Capítulo 25. MQCLOSE - Cerrar objeto . . . . 221Sintaxis . . . . . . . . . . . . . . . 221Parámetros . . . . . . . . . . . . . . 221Notas de utilización . . . . . . . . . . . 224Invocación RPG . . . . . . . . . . . . 226

Capítulo 26. MQCMIT - Comprometer cambios 227Sintaxis . . . . . . . . . . . . . . . 227Parámetros . . . . . . . . . . . . . . 227Notas de utilización . . . . . . . . . . . 228Invocación RPG . . . . . . . . . . . . 229

Capítulo 27. MQCONN - Conectar gestor decolas . . . . . . . . . . . . . . . . 231Sintaxis . . . . . . . . . . . . . . . 231Parámetros . . . . . . . . . . . . . . 231Notas de utilización . . . . . . . . . . . 234Invocación RPG . . . . . . . . . . . . 235

Capítulo 28. MQCONNX - Conectar gestor decolas (ampliado) . . . . . . . . . . . . 237Sintaxis . . . . . . . . . . . . . . . 237Parámetros . . . . . . . . . . . . . . 237Invocación RPG . . . . . . . . . . . . 238

Capítulo 29. MQDISC - Desconectar gestor decolas . . . . . . . . . . . . . . . . 239Sintaxis . . . . . . . . . . . . . . . 239Parámetros . . . . . . . . . . . . . . 239Notas de utilización . . . . . . . . . . . 240Invocación RPG . . . . . . . . . . . . 240

Capítulo 30. MQGET - Obtener mensaje . . . . 241Sintaxis . . . . . . . . . . . . . . . 241Parámetros . . . . . . . . . . . . . . 241Notas de utilización . . . . . . . . . . . 246Invocación RPG . . . . . . . . . . . . 250

Capítulo 31. MQINQ - Consultar los atributos deobjeto . . . . . . . . . . . . . . . 251Sintaxis . . . . . . . . . . . . . . . 251Parámetros . . . . . . . . . . . . . . 251Notas de utilización . . . . . . . . . . . 259Invocación RPG . . . . . . . . . . . . 260

Capítulo 32. MQOPEN - Abrir objeto . . . . . 261Sintaxis . . . . . . . . . . . . . . . 261Parámetros . . . . . . . . . . . . . . 261Notas de utilización . . . . . . . . . . . 270Invocación RPG . . . . . . . . . . . . 275

Capítulo 33. MQPUT - Poner mensaje . . . . 277Sintaxis . . . . . . . . . . . . . . . 277Parámetros . . . . . . . . . . . . . . 277Notas de utilización . . . . . . . . . . . 282Invocación RPG . . . . . . . . . . . . 286

Capítulo 34. MQPUT1 - Poner un mensaje . . . 287Sintaxis . . . . . . . . . . . . . . . 287Parámetros . . . . . . . . . . . . . . 287Notas de utilización . . . . . . . . . . . 292Invocación RPG . . . . . . . . . . . . 293

Capítulo 35. MQSET - Establecer atributos deobjeto . . . . . . . . . . . . . . . 295Sintaxis . . . . . . . . . . . . . . . 295Parámetros . . . . . . . . . . . . . . 295Notas de utilización . . . . . . . . . . . 298Invocación RPG . . . . . . . . . . . . 299

© Copyright IBM Corp. 1994, 2000 209

Page 224: amqwak00

Llamadas de funciones

210 Consulta de programación de aplicaciones (ILE RPG)

Page 225: amqwak00

Capítulo 22. Descripciones de las llamadas

Este capítulo describe las llamadas MQI:v MQCLOSE – Cerrar objetov MQCONN – Conectar al gestor de colasv MQDISC – Desconectar del gestor de colasv MQGET – Obtener mensajev MQINQ – Consultar los atributos de objetov MQOPEN – Abrir objetov MQPUT – Poner mensajev MQPUT1 – Poner un solo mensajev MQSET – Establecer atributos de objeto

Nota: Las llamadas asociadas a la conversión de datos, MQXCNVC yMQDATACONVEXIT, se encuentran en el “Apéndice F. Conversión dedatos” en la página 485.

Convenios utilizados en las descripciones de las llamadasPara cada llamada, este capítulo facilita una descripción de los parámetros y de lautilización de la llamada. Esto va seguido de las invocaciones normales de lallamada y de las declaraciones normales de sus parámetros en el lenguaje deprogramación RPG.

La descripción de cada llamada consta de las siguientes secciones:

Nombre de la llamadaEl nombre de la llamada seguido de una breve descripción de la finalidadde la llamada.

ParámetrosEn cada parámetro, el nombre va seguido de su tipo de datos entreparéntesis ( ) y su dirección; por ejemplo:

CMPCOD (entero decimal de 9 dígitos) — salida

Encontrará más información sobre los tipos de datos de estructura en el“Capítulo 1. Tipos de datos elementales” en la página 3.

La dirección del parámetro puede ser:

EntradaEl programador debe proporcionar este parámetro.

Salida La llamada devuelve este parámetro.

Entrada/salidaEl programador debe proporcionar este parámetro, pero la llamadalo modifica.

Encontrará también una breve descripción de la finalidad del parámetrojunto con una lista de los valores que puede adoptar.

Los dos últimos parámetros de cada llamada son un código de terminacióny un código de razón. El código de terminación indica si la llamada se ha

© Copyright IBM Corp. 1994, 2000 211

Page 226: amqwak00

realizado satisfactoriamente, parcialmente, o no se ha realizado enabsoluto. El código de razón proporciona más información sobre larealización parcial o la anomalía de la llamada. Encontrará másinformación sobre los códigos de razón y de terminación en el“Apéndice A. Códigos de retorno” en la página 373.

Notas de utilizaciónInformación suplementaria sobre la llamada, que describe la forma deutilizarla y las limitaciones de uso.

Invocación RPGLa invocación normal de la llamada y la declaración de sus parámetros enRPG.

Otros convenios de notación son:

ConstantesLos nombres de las constantes se muestran en mayúsculas; por ejemplo,OOOUT.

MatricesEn algunas llamadas, los parámetros son matrices de series de caracterescuyo tamaño no es fijo. En las descripciones de estos parámetros, una “n”minúscula representa una constante numérica. Cuando codifique ladeclaración de ese parámetro, sustituya la “n” por el valor numérico quenecesite.

Descripciones de las llamadas

212 Consulta de programación de aplicaciones (ILE RPG)

Page 227: amqwak00

Capítulo 23. MQBACK - Restituir cambios

La llamada MQBACK indica al gestor de colas que todas las operaciones deobtener y poner mensaje que se han producido desde el último punto desincronismo tienen que restituirse. Los mensajes transferidos como parte de unaunidad de trabajo se suprimirán; los mensajes recuperados como parte de unaunidad de trabajo se vuelven a incluir en la cola.v En OS/400, esta llamada no está soportada para las aplicaciones en modalidad

de compatibilidad.

Sintaxis

ParámetrosHCONN (entero con signo de 10 dígitos) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

COMCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a COMCOD.

Si COMCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si COMCOD es CCFAIL:RC2219

(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2101(2101, X'835') Objeto dañado.

RC2123(2123, X'84B') El resultado de la operación de comprometer o restituires mixto.

MQBACK (HCONN, COMCOD, REASON)

© Copyright IBM Corp. 1994, 2000 213

Page 228: amqwak00

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

Vea el “Apéndice A. Códigos de retorno” en la página 373 para obtener másdetalles.

Notas de utilización1. Esta llamada puede utilizarse solamente cuando el propio gestor de colas

coordina la unidad de trabajo. Esta es una unidad de trabajo local, donde loscambios afectan solamente a los recursos MQ.En los entornos en los que el gestor de colas no coordina la unidad de trabajo,debe utilizarse la llamada de restituir adecuada en lugar de MQBACK. Elentorno también puede soportar una restitución implícita causada por unaterminación anómala de la aplicación.v En OS/400, esta llamada puede utilizarse para las unidades de trabajo locales

coordinadas por el gestor de colas. Esto significa que no debe existir unadefinición de compromiso a nivel de trabajo, es decir, no debe haberseemitido el mandato STRCMTCTL con el parámetro CMTSCOPE(*JOB) para eltrabajo.

2. Cuando una aplicación pone u obtiene mensajes de grupos o segmentos demensajes lógicos, el gestor de colas retiene información relacionada con elgrupo de mensajes o con el mensaje lógico para las últimas llamadas MQPUT yMQGET satisfactorias. Esta información está asociada al asa de cola e incluyeelementos tales como:v Los valores de los campos MDGID, MDSEQ, MDOFF y MDMFL de MQMD.v Indicación de si el mensaje forma parte de una unidad de trabajo.v Para la llamada MQPUT: indicación de si el mensaje es permanente o no

permanente.

El gestor de colas conserva tres juegos de información de grupo y de segmento,un juego para cada una de las siguientes llamadas:v La última llamada MQPUT satisfactoria (puede formar parte de una unidad

de trabajo).v La última llamada MQGET satisfactoria que eliminó un mensaje de la cola

(puede formar parte de una unidad de trabajo).v La última llamada MQGET satisfactoria que examinó un mensaje de la cola

(esta no puede formar parte de una unidad de trabajo).

Si la aplicación pone u obtiene los mensajes como parte de una unidad detrabajo, y la aplicación decide entonces restituir la unidad de trabajo, lainformación de grupo y de segmento se restaura al valor que teníaanteriormente:v La información asociada a la llamada MQPUT se restaura al valor que tenía

antes de la primera llamada MQPUT satisfactoria para esa asa de cola en launidad de trabajo actual.

214 Consulta de programación de aplicaciones (ILE RPG)

Page 229: amqwak00

v La información asociada a la llamada MQGET se restaura al valor que teníaantes de la primera llamada MQGET satisfactoria para esa asa de cola en launidad de trabajo actual.

Las colas que la aplicación actualizó una vez iniciada la unidad de trabajo, perofuera del ámbito de la unidad de trabajo, no conseguirán la restauración de suinformación de grupo y de segmento si se restituye la unidad de trabajo.

Restaurar la información de grupo y de segmento a su valor anterior cuando serestituye una unidad de trabajo, permite a la aplicación repartir un grupo demensajes o un mensaje lógico de gran tamaño que conste de muchos segmentosentre varias unidades de trabajo, así como reiniciar en el punto correcto delgrupo de mensajes o del mensaje lógico si falla una de las unidades de trabajo.Utilizar varias unidades de trabajo tiene sus ventajas si el gestor de colas localtiene un almacenamiento de cola limitado. Sin embargo, la aplicación debeconservar suficiente información para poder reiniciar las operaciones de poneru obtener mensajes en el punto correcto, en el caso de que se produzca unaanomalía del sistema. Para obtener detalles sobre cómo reiniciar en el puntocorrecto tras una anomalía del sistema, vea la opción PMLOGO descrita en el“Capítulo 14. MQPMO - Opciones de poner mensaje” en la página 155 y laopción GMLOGO descrita en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

Las demás notas de utilización solamente son aplicables cuando el gestor de colascoordina las unidades de trabajo:3. Una unidad de trabajo tiene el mismo ámbito que un asa de conexión. Esto

significa que todas las llamadas MQ que afectan a una unidad de trabajoconcreta deben realizarse utilizando la misma asa de conexión. Las llamadasemitidas utilizando otra asa de conexión (por ejemplo, las llamadas emitidaspor otra aplicación) afectan a otra unidad de trabajo. Vea el parámetro HCONNdescrito en el “Capítulo 27. MQCONN - Conectar gestor de colas” en lapágina 231 para obtener información sobre el ámbito de las asas de conexión.

4. Esta llamada solamente afecta a los mensajes que se han transferido orecuperado como parte de la unidad de trabajo actual.

5. Una aplicación de ejecución prolongada que emita llamadas MQGET, MQPUTo MQPUT1 dentro de una unidad de trabajo, pero que nunca emita unallamada de comprometer o restituir, provocará que las colas se llenen demensajes que no están disponibles para otras aplicaciones.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQBACK(HCONN : COMCOD : REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQBACK PR EXTPROC('MQBACK')D* Asa de conexiónD HCONN 10I 0 VALUED* Código de terminaciónD COMCOD 10I 0D* Código de razón que califica a COMCODD REASON 10I 0

Capítulo 23. MQBACK - Restituir cambios 215

Page 230: amqwak00

Invocación RPG

216 Consulta de programación de aplicaciones (ILE RPG)

Page 231: amqwak00

Capítulo 24. MQBEGIN - Empezar unidad de trabajo

La llamada MQBEGIN empieza una unidad de trabajo que está coordinada por elgestor de colas y que puede implicar a gestores de recursos externos.

Esta llamada está soportada en los siguientes entornos: AIX, HP-UX, OS/2,OS/400, Sun Solaris, Windows NT.

Sintaxis

ParámetrosHCONN (entero con signo de 10 dígitos) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

BEGOP (MQBO) – entrada/salidaOpciones que controlan la acción de MQBEGIN.

Consulte el “Capítulo 3. MQBO - Opciones de empezar” en la página 15 paraobtener detalles.

BEGOP es un parámetro reservado. Los programas escritos en C o S/390assembler pueden especificar una dirección de parámetro nula, en lugar deespecificar la dirección de una estructura MQBO.

CMPCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:RC2121

(2121, X'849') No se han registrado gestores de recursos participantes.

MQBEGIN (HCONN, BEGOP, CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 217

|

Page 232: amqwak00

RC2122(2122, X'84A') El gestor de recursos participante no está disponible.

Si CMPCOD es CCFAIL:RC2134

(2134, X'856') La estructura de opciones de empezar no es válida.RC2219

(2219, X'8AB') La llamada MQI ha reentrado antes de que secompletara la llamada anterior.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2012(2012, X'7DC') Llamada no válida en el entorno.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2046(2046, X'7FE') Las opciones no son válidas o no son coherentes.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

RC2128(2128, X'850') La unidad de trabajo ya está iniciada.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. La llamada MQBEGIN puede utilizarse para iniciar una unidad de trabajo que

está coordinada por el gestor de colas y que puede implicar cambios en losrecursos que son propiedad de otros gestores de recursos.El gestor de colas soporta tres tipos de unidades de trabajo:

Unidad de trabajo local coordinada por el gestor de colasEs una unidad de trabajo en la que el gestor de colas es el único gestorde recursos participante, por lo que el gestor de colas hace decoordinador de la unidad de trabajo.v Para iniciar este tipo de unidad de trabajo, deberá especificarse la

opción PMSYP o GMSYP en la primera llamada MQPUT, MQPUT1 oMQGET de la unidad de trabajo.No es necesario que la aplicación emita la llamada MQBEGIN parainiciar la unidad de trabajo. Sin embargo, si se utiliza MQBEGIN, seinicia la unidad de trabajo pero la llamada se completa conCCWARN y el código de razón RC2121.

v Para comprometer o restituir este tipo de unidad de trabajo, debenutilizarse las llamadas MQCMIT y MQBACK. Si la aplicación noemite ninguna de estas dos llamadas, se comprometerá la unidad detrabajo si la aplicación emite la llamada MQDISC, pero se restituirá sila aplicación finaliza sin emitir la llamada MQDISC.

218 Consulta de programación de aplicaciones (ILE RPG)

Page 233: amqwak00

Unidad de trabajo global coordinada por el gestor de colasEs una unidad de trabajo en la que el gestor de colas hace decoordinador de la unidad de trabajo, para los recursos MQ y para losrecursos que pertenecen a otros gestores de recursos. Dichos gestoresde recursos cooperan con el gestor de colas para asegurar que todos loscambios realizados en los recursos de la unidad de trabajo secomprometen o se restituyen juntos.v Para iniciar este tipo de unidad de trabajo, debe utilizarse la llamada

MQBEGIN.v Para comprometer o restituir este tipo de unidad de trabajo, deben

utilizarse las llamadas MQCMIT y MQBACK. Si la aplicación noemite ninguna de estas dos llamadas, se comprometerá la unidad detrabajo si la aplicación emite la llamada MQDISC, pero se restituirá sila aplicación finaliza sin emitir la llamada MQDISC.

Unidad de trabajo global coordinada externamenteEs una unidad de trabajo en la que el gestor de colas es unparticipante, pero no hace de coordinador de la unidad de trabajo. Envez de ello, existe un coordinador de unidad de trabajo externo con elque coopera el gestor de colas.v Para iniciar este tipo de unidad de trabajo, debe utilizarse la llamada

pertinente suministrada por el coordinador externo de la unidad detrabajo.Si se utiliza la llamada MQBEGIN para intentar iniciar la unidad detrabajo, la llamada fallará con el código de razón RC2012.

v Para comprometer o restituir este tipo de unidad de trabajo, debenutilizarse las llamadas de comprometer y restituir suministradas porel coordinador externo de la unidad de trabajo; no pueden utilizarselas llamadas MQCMIT y MQBACK.

2. Una aplicación puede participar solamente en una unidad de trabajo a la vez.La llamada MQBEGIN resulta anómala, con el código de razón RC2128, si yaexiste una unidad de trabajo para la aplicación, sea cual sea el tipo de unidadde trabajo.

3. La llamada MQBEGIN no es válida en un entorno de cliente MQ. El intento deutilizar la llamada resulta anómalo, con el código de razón RC2012.

4. Cuando el gestor de colas hace de coordinador de la unidad de trabajo paraunidades de trabajo globales, los gestores de recursos que pueden participar enla unidad de trabajo se definen en el archivo de configuración del gestor decolas.

5. En OS/400, están soportados los tres tipos de unidad de trabajo, de la siguientemanera:v Las unidades de trabajo locales coordinadas por el gestor de colas pueden

utilizarse solamente cuando no existe una definición de compromiso a nivelde trabajo, es decir, no debe haberse emitido el mandato STRCMTCTL con elparámetro CMTSCOPE(*JOB) para el trabajo.

v Las unidades de trabajo globales coordinadas por el gestor de colas noestán soportadas.

v Las unidades de trabajo globales coordinadas externamente puedenutilizarse solamente cuando existe una definición de compromiso a nivel detrabajo, es decir, debe haberse emitido el mandato STRCMTCTL con elparámetro CMTSCOPE(*JOB) para el trabajo. Si se ha hecho así, las operacionesde OS/400 COMMIT y ROLLBACK son aplicables a los recursos MQ, así como alos recursos que pertenecen a otros gestores de recursos participantes.

Capítulo 24. MQBEGIN - Empezar unidad de trabajo 219

||

||||

||

||||||

Page 234: amqwak00

Invocación RPG (ILE)C*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQBEGIN(HCONN : BEGOP : CMPCOD :C REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQBEGIN PR EXTPROC('MQBEGIN')D* Asa de conexiónD HCONN 10I 0 VALUED* Opciones que controlan la acción de MQBEGIND BEGOP 12AD* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

220 Consulta de programación de aplicaciones (ILE RPG)

|

Page 235: amqwak00

Capítulo 25. MQCLOSE - Cerrar objeto

La llamada MQCLOSE abandona el acceso a un objeto y es lo contrario de lallamada MQOPEN.

Sintaxis

ParámetrosHCONN (entero con signo de 10 dígitos) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

En OS/400 para las aplicaciones que se ejecutan en modalidad decompatibilidad, puede omitirse la llamada MQCONN y especificarse elsiguiente valor HCONN:

HCDEFHAsa de conexión por omisión.

HOBJ (entero con signo de 10 dígitos) – entrada/salidaAsa de objeto.

Esta asa representa el objeto que se está cerrando. El objeto puede ser decualquier tipo. El valor de HOBJ lo devolvió una llamada MQOPEN anterior.

Cuando la llamada se completa satisfactoramente, el gestor de colas estableceeste parámetro en un valor que no es un asa válida para el entorno. El valores:

HOUNUHAsa de objeto no utilizable.

OPTS (entero con signo de 10 dígitos) – entradaOpciones que controlan la acción de MQCLOSE.

El parámetro OPTS controla el modo en que se cierra el objeto. Las colasdinámicas permanentes son las únicas que pueden cerrarse de varias formas,ya sea reteniéndolas o suprimiéndolas; estas colas tienen el atributoDefinitionType definido con el valor QDPERM (vea el atributo DefinitionTypedescrito en el “Capítulo 38. Atributos de colas locales y colas modelo” en lapágina 311). Las opciones de cerrar aparecen resumidas en la Tabla 47 en lapágina 222.

Debe especificarse uno (y solamente uno) de los siguientes valores:

CONONENo es necesario el proceso de cierre opcional.

Esto debe especificarse para:

MQCLOSE (HCONN, HOBJ, OPTS, CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 221

|

Page 236: amqwak00

v Objetos que no sean colasv Colas predefinidasv Colas dinámicas temporales (pero solo en aquellos casos en los que

HOBJ no sea el asa devuelta por la llamada MQOPEN que ha creadola cola).

v Listas de distribución

En los demás casos, el objeto se retiene y no se suprime.

Si se especifica esta opción para una cola dinámica temporal:v Se suprime la cola, si la creó la llamada MQOPEN que había

devuelto HOBJ; los mensajes de la cola se depurarán.v En todos los demás casos se retiene la cola (y los mensajes que

contenga).

Si se especifica esta opción para una cola dinámica permanente, la colase retiene y no se suprime.

CODELSuprimir la cola.

La cola se suprime si se cumple alguna de las condiciones siguientes:v Se trata de una cola dinámica permanente y no hay mensajes en la

cola ni peticiones de transferencia u obtención no comprometidaspendientes para la cola (ya sea para la tarea actual o para cualquierotra).

v Se trata de la cola dinamica temporal que ha creado la llamadaMQOPEN que ha devuelto HOBJ. En ese caso, se eliminarán todos losmensajes de la cola.

En todos los demás casos la llamada resulta anómala, con el código derazón RC2045, y no se suprime el objeto.

COPURGSuprimir la cola, eliminando todos sus mensajes.

La cola se suprime si se cumple alguna de las condiciones siguientes:v Se trata de una cola dinámica permanente y no hay peticiones de

transferencia u obtención no comprometidas pendientes (ya sea parala tarea actual o para cualquier otra).

v Se trata de la cola dinamica temporal que ha creado la llamadaMQOPEN que ha devuelto HOBJ.

En todos los demás casos la llamada resulta anómala, con el código derazón RC2045, y no se suprime el objeto.

Tabla 47. Efectos de las opciones MQCLOSE en distintos tipos de objetos y colas. Esta tabla muestra las opcionesde cerrar válidas y si el objeto se retiene o se suprime.

Tipo de objeto o cola CONONE CODEL COPURG

Objeto que no sea una cola retenido no válido no válido

Cola predefinida retenida no válido no válido

Cola dinámica permanente retenida suprimida, si está vacía y sinactualizaciones pendientes

mensajessuprimidos; la

cola se suprimesi no tiene

actualizacionespendientes

222 Consulta de programación de aplicaciones (ILE RPG)

Page 237: amqwak00

Tabla 47. Efectos de las opciones MQCLOSE en distintos tipos de objetos y colas (continuación). Esta tabla muestralas opciones de cerrar válidas y si el objeto se retiene o se suprime.

Tipo de objeto o cola CONONE CODEL COPURG

Cola dinámica temporal (llamada emitida por elcreador de la cola)

suprimida suprimida suprimida

Cola dinámica temporal (llamada no emitida porel creador de la cola)

retenida no válido no válido

Lista de distribución retenida no válido no válido

CMPCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:RC2241

(2241, X'8C1') El grupo de mensajes no está completo.RC2242

(2242, X'8C2') El mensaje lógico no está completo.

Si CMPCOD es CCFAIL:RC2219

(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2019(2019, X'7E3') El asa de objeto no es válida.

RC2035(2035, X'7F3') No posee autorización para acceder.

RC2101(2101, X'835') Objeto dañado.

RC2045(2045, X'7FD') La opción no es válida para este tipo de objeto.

RC2046(2046, X'7FE') Las opciones no son válidas o no son coherentes.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

Capítulo 25. MQCLOSE - Cerrar objeto 223

Page 238: amqwak00

RC2055(2055, X'807') La cola contiene uno o más mensajes o peticiones deponer o de obtener no comprometidas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2063(2063, X'80F') Se ha producido un error de seguridad.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

Vea el “Apéndice A. Códigos de retorno” en la página 373 para obtener másdetalles.

Notas de utilización1. Cuando una aplicación emite la llamada MQDISC o termina normal o

anómalamente, todos los objetos abiertos por la aplicación que permanezcanabiertos, se cerrarán automáticamente con la opción CONONE.

2. Los siguientes puntos se aplican si el objeto que va a cerrarse es una cola:v Si las operaciones de la cola se realizaron como parte de una unidad de

trabajo, la cola podrá cerrarse antes o después de que se produzca el puntode sincronismo, sin que ello afecte al resultado del mismo.

v Si la cola se abrió con la opción OOBRW, el cursor para examinar sedestruirá. Si la cola vuelve a abrirse posteriormente con la opción OOBRW,se crea un nuevo cursor para examinar (vea la opción OOBRW descrita enMQOPEN).

v Si actualmente hay un mensaje bloqueado para esta asa en el momento de lallamada MQCLOSE, el bloqueo se liberará (vea la opción GMLK descrita enel “Capítulo 8. MQGMO - Opciones de obtener mensaje” en la página 51).

3. Los siguientes puntos se aplican si el objeto que va a cerrarse es una coladinámica (permanente o temporal):v Si la cola es dinámica, pueden especificarse las opciones CODEL o COPURG,

independientemente de las opciones que se hayan especificado la llamadaMQOPEN correspondiente.

v Cuando se suprime una cola dinámica, todas las llamadas MQGET con laopción GMWT que están pendientes en la cola se cancelan y se devuelve elcódigo de razón RC2052. Vea la opción GMWT descrita en el “Capítulo 8.MQGMO - Opciones de obtener mensaje” en la página 51.Después de suprimir una cola dinámica, cualquier llamada (distinta deMQCLOSE) que intente hacer referencia a la cola utilizando otra asa HOBJadquirida previamente falla con el código de razón RC2052.Tenga en cuenta que, aunque las aplicaciones no pueden acceder a una colasuprimida, la cola no se elimina del sistema y no se liberan los recursosasociados hasta el momento en que se hayan cerrado todas las asas quehacen referencia a la cola y se hayan comprometido o restituido todas lasunidades de trabajo que afectan a la cola.

v Cuando se suprime una cola dinámica permanente, si el asa HOBJespecificada en la llamada MQCLOSE no es la devuelta por la llamadaMQOPEN que creó la cola, se comprueba que el identificador de usuario quese utilizó para validar la llamada MQOPEN tiene autorización para suprimirla cola. Si se especificó la opción OOALTU en la llamada MQOPEN, elidentificador de usuario comprobado es ODAU.

224 Consulta de programación de aplicaciones (ILE RPG)

Page 239: amqwak00

Esta comprobación no se lleva a cabo si:– El asa especificada es la devuelta por la llamada MQOPEN que creó la

cola.– La cola que se va a suprimir es una cola dinámica temporal.

v Cuando se cierra una cola dinámica temporal, si el asa HOBJ especificada enla llamada MQCLOSE es la devuelta por la llamada MQOPEN que creó lacola, se suprime la cola. Esto ocurre sin tener en cuenta las opciones decerrar especificadas en la llamada MQCLOSE. Si hay mensajes en la cola, sedescartan; no se generan mensajes de informe.Si hay unidades de trabajo no comprometidas que afectan a la cola, sesuprime la cola y sus mensajes igualmente, pero ello no provoca anomalíasen las unidades de trabajo. No obstante, como se describe más arriba, losrecursos asociados con las unidades de trabajo no se liberan hasta que cadauna de las unidades de trabajo esté comprometida o restituida.

4. Los siguientes puntos se aplican si el objeto que va a cerrarse es una lista dedistribución:v La única opción de cierre válida para una lista de distribución es CONONE;

la llamada resulta anómala, con el código de razón RC2046 o RC2045 si hayotras opciones especificadas.

v Cuando se cierra una lista de distribución, no se devuelven códigos determinación ni códigos de razón individuales para las colas de la lista;solamente están disponibles los parámetros CMPCOD y REASON de la llamadapara diagnóstico.Si se produce una anomalía al cerrar una de las colas, el gestor de colascontinúa el proceso e intenta cerrar las colas restantes de la lista dedistribución. Los parámetros CMPCOD y REASON de la llamada se definenentonces con la información de retorno que describe la anomalía. Así esposible que el código de terminación sea CCFAIL, aunque la mayoría decolas se cerraron satisfactoriamente. La cola que ha encontrado el error noestá identificada.Si hay una anomalía en más de una cola, no se define de qué anomalía seinforma en los parámetros CMPCOD y REASON.

5. En OS/400, si la aplicación se ha conectado implícitamente cuando se haemitido la primera llamada MQOPEN, se producirá una MQDISC implícita alemitirse la última MQCLOSE.Solamente las aplicaciones que se ejecutan en modalidad de compatibilidadpueden conectarse de forma implícita; las demás aplicaciones deben emitir lallamada MQCONN o MQCONNX para conectar con el gestor de colas deforma explícita.

Capítulo 25. MQCLOSE - Cerrar objeto 225

Page 240: amqwak00

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQCLOSE(HCONN : HOBJ : OPTS :C CMPCOD : REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQCLOSE PR EXTPROC('MQCLOSE')D* Asa de conexiónD HCONN 10I 0 VALUED* Asa de objetoD HOBJ 10I 0D* Opciones que controlan la acción de MQCLOSED OPTS 10I 0 VALUED* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

226 Consulta de programación de aplicaciones (ILE RPG)

Page 241: amqwak00

Capítulo 26. MQCMIT - Comprometer cambios

La llamada MQCMIT indica al gestor de colas que la aplicación ha llegado a unpunto de sincronismo y que todas las operaciones de obtener y poner mensajesque se han producido desde el último punto de sincronismo serán permanentes.Los mensajes transferidos como parte de una unidad de trabajo se ponen adisposición de otras aplicaciones; los mensajes recuperados como parte de unaunidad de trabajo se suprimen.v En OS/400, esta llamada no está soportada para las aplicaciones en modalidad

de compatibilidad.

Sintaxis

ParámetrosHCONN (entero con signo de 10 dígitos) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

COMCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a COMCOD.

Si COMCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si COMCOD es CCWARN:RC2003

(2003, X'7D3') La unidad de trabajo ha encontrado un error muy graveo se ha restituido.

RC2124(2124, X'84C') El resultado de la operación de compromiso estápendiente.

Si COMCOD es CCFAIL:

MQCMIT (HCONN, COMCOD, REASON)

© Copyright IBM Corp. 1994, 2000 227

Page 242: amqwak00

RC2219(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2101(2101, X'835') Objeto dañado.

RC2123(2123, X'84B') El resultado de la operación de comprometer o restituires mixto.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

Vea el “Apéndice A. Códigos de retorno” en la página 373 para obtener másdetalles.

Notas de utilización1. Esta llamada puede utilizarse solamente cuando el propio gestor de colas

coordina la unidad de trabajo. Esta es una unidad de trabajo local, donde loscambios afectan solamente a los recursos MQ.En los entornos en los que el gestor de colas no coordina la unidad de trabajo,debe utilizarse la llamada de comprometer adecuada en lugar de MQCMIT. Elentorno también puede soportar una operación de comprometer implícitacausada por una terminación anómala de la aplicación.v En OS/400, esta llamada puede utilizarse para las unidades de trabajo locales

coordinadas por el gestor de colas. Esto significa que no debe existir unadefinición de compromiso a nivel de trabajo, es decir, no debe haberseemitido el mandato STRCMTCTL con el parámetro CMTSCOPE(*JOB) para eltrabajo.

2. Cuando una aplicación transfiere u obtiene mensajes en grupos o segmentos demensajes lógicos, el gestor de colas retiene información relacionada con elgrupo de mensajes y el mensaje lógico para las últimas llamadas MQPUT yMQGET satisfactorias. Esta información está asociada al asa de cola e incluyeelementos tales como:v Los valores de los campos MDGID, MDSEQ, MDOFF y MDMFL de MQMD.v Indicación de si el mensaje forma parte de una unidad de trabajo.v Para la llamada MQPUT: indicación de si el mensaje es permanente o no

permanente.

Cuando se compromete una unidad de trabajo, el gestor de colas retiene lainformación de grupos y segmentos, y la aplicación puede continuartransfiriendo u obteniendo mensajes del grupo de mensajes o mensaje lógicoactuales.

Retener la información de grupos y segmentos cuando se compromete unaunidad de trabajo, permite a la aplicación repartir un grupo de mensajes o un

228 Consulta de programación de aplicaciones (ILE RPG)

Page 243: amqwak00

mensaje lógico de gran tamaño que conste de muchos segmentos entre variasunidades de trabajo. Utilizar varias unidades de trabajo tiene sus ventajas si elgestor de colas local tiene un almacenamiento de cola limitado. Sin embargo, laaplicación debe conservar suficiente información para poder reiniciar lasoperaciones de poner u obtener mensajes en el punto correcto, en el caso deque se produzca una anomalía del sistema. Para obtener detalles sobre cómoreiniciar en el punto correcto tras una anomalía del sistema, vea la opciónPMLOGO descrita en el “Capítulo 14. MQPMO - Opciones de poner mensaje”en la página 155 y la opción GMLOGO descrita en el “Capítulo 8. MQGMO -

Opciones de obtener mensaje” en la página 51.

Las demás notas de utilización solamente son aplicables cuando el gestor de colascoordina las unidades de trabajo:3. Una unidad de trabajo tiene el mismo ámbito que un asa de conexión. Esto

significa que todas las llamadas MQ que afectan a una unidad de trabajoconcreta deben realizarse utilizando la misma asa de conexión. Las llamadasemitidas utilizando otra asa de conexión (por ejemplo, las llamadas emitidaspor otra aplicación) afectan a otra unidad de trabajo. Vea el parámetro HCONNdescrito en MQCONN para obtener información sobre el ámbito de las asas deconexión.

4. Esta llamada solamente afecta a los mensajes que han transferido o recuperadocomo parte de la unidad de trabajo actual.

5. Si una aplicación finaliza sin emitir la llamada MQCMIT o MQBACK cuandohay cambios no comprometidos dentro de una unidad de trabajo, la disposiciónde esos cambios dependerá de cómo finalice la aplicación:v Si la aplicación emite la llamada MQDISC antes de finalizar, esa llamada

provocará que se comprometa la unidad de trabajo.v Si la aplicación no emite la llamada MQDISC pero finaliza normalmente de

todos modos, se restituye la unidad de trabajo.v Si la aplicación finaliza de forma anómala, se restituye la unidad de trabajo,

lo que tiene el mismo efecto que el que la aplicación emita la llamadaMQBACK.

6. Una aplicación de ejecución prolongada que emita llamadas MQGET, MQPUTo MQPUT1 dentro de una unidad de trabajo, pero que nunca emita unallamada de comprometer o restituir, provocará que las colas se llenen demensajes que no están disponibles para otras aplicaciones.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQCMIT(HCONN : COMCOD : REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQCMIT PR EXTPROC('MQCMIT')D* Asa de conexiónD HCONN 10I 0 VALUED* Código de terminaciónD COMCOD 10I 0D* Código de razón que califica a COMCODD REASON 10I 0

Capítulo 26. MQCMIT - Comprometer cambios 229

Page 244: amqwak00

Invocación RPG

230 Consulta de programación de aplicaciones (ILE RPG)

Page 245: amqwak00

Capítulo 27. MQCONN - Conectar gestor de colas

La llamada MQCONN conecta un programa de aplicación a un gestor de colas.Facilita un asa de conexión de gestor de colas que la aplicación utiliza enposteriores llamadas de gestión de colas de mensajes.v En OS/400®, las aplicaciones que se ejecutan en modalidad de compatibilidad

no tienen que emitir esta llamada. Estas aplicaciones se conectanautomáticamente al gestor de colas cuando emiten la primera llamadaMQOPEN. Sin embargo, siguen aceptándose las llamadas MQCONN y MQDISCdesde aplicaciones OS/400.Las demás aplicaciones (es decir, las que no se ejecutan en modalidad decompatibilidad) deben utilizar la llamada MQCONN o MQCONNX paraconectarse al gestor de colas y la llamada MQDISC para desconectarse de él.Este es el estilo de programación recomendado.

Sintaxis

ParámetrosQMNAME (serie de caracteres de 48 bytes) – entrada

Nombre del gestor de colas.

Es el nombre del gestor de colas al que la aplicación desea conectarse. Elnombre puede contener los siguientes caracteres:v Caracteres alfabéticos en mayúsculas (de A a Z)v Caracteres alfabéticos en minúsculas (de ″a″ a ″z″)v Dígitos numéricos (de 0 a 9)v Punto (.), barra inclinada (/), subrayado (_), signo de porcentaje (%)

El nombre no debe contener blancos iniciales ni intercalados, pero puedecontener blancos finales. Puede utilizarse un carácter nulo para indicar el finalde los datos significativos del nombre; el carácter nulo y los caracteres que lesigan se tratarán como blancos.

Se aplican las siguientes restricciones en los entornos indicados:v En OS/400, los nombres que contienen caracteres en minúsculas, barras

inclinadas o signos de porcentaje, deben ir entre comillas cuando seespecifican en mandatos. No deben especificarse dichas comillas en elparámetro QMNAME.

Si el nombre consta solo de blancos, se utilizará el nombre del gestor de colaspor omisión.

El nombre especificado para QMNAME debe ser el nombre de un gestor de colasal que se pueda conectar.

Aplicaciones de cliente MQ: Para las aplicaciones de cliente MQ, se intentauna conexión para cada definición de canal de conexión de cliente con elnombre de gestor de colas especificado, hasta que una se realiza

MQCONN (QMNAME, HCONN, CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 231

Page 246: amqwak00

satisfactoriamente. El gestor de colas, no obstante, debe tener el mismo nombreque el nombre especificado. Si se especifica un nombre que sea todo en blanco,se intentará cada canal de conexión de cliente con un nombre de gestor decolas que sea todo en blanco hasta que uno resulte satisfactorio. En este casono se realiza la comprobación del nombre del gestor de colas.

Grupos de gestores de colas: Si el nombre especificado empieza por unasterisco (*), el gestor de colas real con el que se establece la conexión podríatener un nombre distinto del especificado por la aplicación. El nombreespecificado (sin el asterisco) define un grupo de gestores de colas que sonelegibles para conexión. La implementación selecciona uno del grupoprobándolos de uno en uno (sin orden definido) hasta que se encuentra unocon el que puede establecerse la conexión. Si ninguno de los gestores de colasdel grupo está disponible para conexión, la llamada falla. Solo se realiza unintento con cada gestor de colas. Si se especifica un asterisco solo para elnombre, se utiliza un grupo de gestores de colas por omisión definidos por laimplementación.

Los grupos de gestores de colas solamente están soportados para lasaplicaciones que se ejecutan en un entorno de cliente; la llamada resultaanómala si una aplicación no de cliente especifica un nombre de gestor decolas que empiece por un asterisco. Un grupo se define suministrando variasdefiniciones de canal de conexión de cliente con el mismo nombre de gestor decolas (el nombre especificado sin el asterisco), para comunicarse con cada unode los gestores de colas del grupo. El grupo por omisión se definesuministrando una o varias definiciones de canal de conexión de cliente, cadauna con un nombre de gestor de colas en blanco (especificar un nombre contodo blancos tiene, por consiguiente, el mismo efecto que especificar un soloasterisco para el nombre para una aplicación de cliente).

Tras conectarse a un gestor de colas de un grupo, una aplicación puedeespecificar blancos de la forma habitual en los campos de nombre de gestor decolas que hay en los descriptores de mensaje y de objeto, para indicar elnombre del gestor de colas al que la aplicación se ha conectado realmente (elgestor de colas local). Si la aplicación necesita conocer este nombre, puedeemitirse la llamada MQINQ para consultar el atributo de gestor de colasQMgrName.

Poner un asterisco como prefijo del nombre de conexión de esta forma implicaque la aplicación no es sensible a qué gestor de colas del grupo está conectadala aplicación. Esto no será adecuado para determinados tipos de aplicación, porejemplo las que necesiten obtener mensajes de una cola concreta de un gestorde colas concreto; tales aplicaciones no deben poner un asterisco como prefijodel nombre. El uso de grupos de gestores de colas es apropiado para lasaplicaciones que transfieren mensajes y/u obtienen mensajes de colasdinámicas temporales que ellas mismas han creado.

Observe que si se especifica un asterisco, la longitud máxima del resto delnombre es de 47 caracteres.

La longitud de este parámetro la indica LNQMN.

HCONN (entero con signo de 10 dígitos) – salidaAsa de conexión.

232 Consulta de programación de aplicaciones (ILE RPG)

Page 247: amqwak00

Esta asa representa la conexión con el gestor de colas. Debe especificarse entodas las llamadas de gestión de colas de mensajes ulteriores emitidas por laaplicación. Esto deja de ser válido cuando se emite la llamada MQDISC ocuando termina la unidad de proceso que define el ámbito del asa.

El ámbito del asa está restringido a la unidad de proceso en paralelo máspequeña soportada por la plataforma en la que se ejecuta la aplicación; el asadeja de ser válida fuera de la unidad del proceso en paralelo desde la que seha emitido la llamada MQCONN.v En OS/400, el ámbito del asa es el trabajo que emite la llamada.

En OS/400 para las aplicaciones que se ejecutan en modalidad decompatibilidad, el valor devuelto es:

HCDEFHAsa de conexión por omisión.

CMPCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:RC2002

(2002, X'7D2') Aplicación ya conectada.

Si CMPCOD es CCFAIL:RC2219

(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2267(2267, X'8DB') No se ha podido cargar la rutina de salida de carga detrabajo de clúster.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2273(2273, X'8E1') Error al procesar la llamada MQCONN.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2035(2035, X'7F3') No posee autorización para acceder.

RC2137(2137, X'859') El objeto no se ha abierto satisfactoriamente.

Capítulo 27. MQCONN - Conectar gestor de colas 233

|||

||

||

Page 248: amqwak00

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2161(2161, X'871') El gestor de colas está en reposo.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2063(2063, X'80F') Se ha producido un error de seguridad.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. El gestor de colas con el que se establece la conexión mediante la llamada

MQCONN recibe el nombre de gestor de colas local.2. Las colas que pertenecen al gestor de colas local aparecen ante la aplicación

como colas locales. Es posible transferir y obtener mensajes de colas locales.Las colas que pertenecen a gestores de colas remotos aparecen como colasremotas. Es posible transferir mensajes a colas remotas, pero no obtenerlos.

3. Si el gestor de colas falla mientras se está ejecutando una aplicación, esta debevolver a emitir la llamada MQCONN para poder obtener una nueva asa deconexión para utilizarla en las llamadas MQ subsiguientes. La aplicación puedeemitir la llamada MQCONN periódicamente hasta que resulte satisfactoria.Si una aplicación no está segura de si está conectada al gestor de colas, laaplicación puede emitir sin exponerse a ningún riesgo una llamada MQCONNpara obtener un asa de conexión. Si la aplicación ya está conectada, el asadevuelta es la misma que la que devolvió la llamada MQCONN anterior, perocon el código de terminación CCWARN y el código de razón RC2002.

4. La aplicación, cuando haya terminado de utilizar las llamadas MQ, debeutilizar la llamada MQDISC para desconectarse del gestor de colas.

5. En OS/400, las aplicaciones escritas para releases anteriores del gestor de colaspueden ejecutarse sin necesidad de recompilarse. Esto se denomina modalidad decompatibilidad. Esta modalidad de operación proporciona un entorno deejecución compatible para las aplicaciones. Comprende lo siguiente:v El programa de servicio AMQZSTUB que reside en la biblioteca QMQM.

AMQZSTUB proporciona la misma interfaz pública que los releasesanteriores y tiene la misma signatura. Este programa de servicio puedeutilizarse para acceder a MQI a través de llamadas de procedimientoenlazadas.

v El programa QMQM que reside en la biblioteca QMQM.QMQM proporciona un medio para acceder a MQI a través de llamadas deprograma dinámicas.

234 Consulta de programación de aplicaciones (ILE RPG)

Page 249: amqwak00

v Los programas MQCLOSE, MQCONN, MQDISC, MQGET, MQINQ,MQOPEN, MQPUT, MQPUT1 y MQSET que residen en la biblioteca QMQM.Estos programas también proporcionan un medio de acceder a MQI a travésde llamadas de programa dinámicas, pero con una lista de parámetros quecorresponde con las descripciones estándar de las llamadas MQ.

Estas tres interfaces no incluyen las posibilidades que se introdujeron en laversión 5.1. Por ejemplo, las llamadas MQBACK, MQCMIT y MQCONNX noestán soportadas. Estas interfaces solo soportan aplicaciones monohebra.

El programa de servicio LIBMQM proporciona soporte para las nuevasllamadas MQ en aplicaciones monohebra y el programa de servicio LIBMQM_Rproporciona soporte para todas las llamadas MQ en aplicaciones multihebra.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQCONN(QMNAME : HCONN : CMPCOD :C REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQCONN PR EXTPROC('MQCONN')D* Nombre del gestor de colasD QMNAME 48AD* Asa de conexiónD HCONN 10I 0D* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

Capítulo 27. MQCONN - Conectar gestor de colas 235

Page 250: amqwak00

236 Consulta de programación de aplicaciones (ILE RPG)

Page 251: amqwak00

Capítulo 28. MQCONNX - Conectar gestor de colas (ampliado)

La llamada MQCONNX conecta un programa de aplicación a un gestor de colas.Proporciona un asa de conexión de gestor de colas que la aplicación utiliza en lasllamadas MQ subsiguientes.

La llamada MQCONNX es similar a la llamada MQCONN, excepto en queMQCONNX permite que se especifiquen opciones para controlar la forma en quefunciona la llamada.v En OS/400, esta llamada no está soportada para las aplicaciones en modalidad

de compatibilidad.

Sintaxis

ParámetrosQMNAME (serie de caracteres de 48 bytes) – entrada

Nombre del gestor de colas.

Vea el parámetro QMNAME descrito en el “Capítulo 27. MQCONN - Conectargestor de colas” en la página 231 para obtener detalles.

CNOPT (MQCNO) – entrada/salidaOpciones que controlan la acción de MQCONNX.

Vea el “Capítulo 5. MQCNO - Opciones de conectar” en la página 31 paraobtener detalles.

HCONN (entero con signo de 10 dígitos) – salidaAsa de conexión.

Vea el parámetro HCONN descrito en el “Capítulo 27. MQCONN - Conectargestor de colas” en la página 231 para obtener detalles.

CMPCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Vea el parámetro CMPCOD descrito en el “Capítulo 27. MQCONN - Conectargestor de colas” en la página 231 para obtener detalles.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a CMPCOD.

Vea el parámetro REASON descrito en el “Capítulo 27. MQCONN - Conectargestor de colas” en la página 231 para obtener detalles sobre los posiblescódigos de razón.

Los siguientes códigos de razón adicionales pueden ser devueltos por lallamada MQCONNX:

Si CMPCOD es CCFAIL:

MQCONNX (QMNAME, CNOPT, HCONN, CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 237

Page 252: amqwak00

RC2278(2278, X'8E6') Los campos de conexión de cliente no son válidos.

RC2139(2139, X'85B') La estructura de opciones de conectar no es válida.

RC2046(2046, X'7FE') Las opciones no son válidas o no son coherentes.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQCONNX(QMNAME : CNOPT : HCONN :C CMPCOD : REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQCONNX PR EXTPROC('MQCONNX')D* Nombre del gestor de colasD QMNAME 48AD* Opciones que controlan la acción de MQCONNXD CNOPT 32AD* Asa de conexiónD HCONN 10I 0D* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

238 Consulta de programación de aplicaciones (ILE RPG)

Page 253: amqwak00

Capítulo 29. MQDISC - Desconectar gestor de colas

La llamada MQDISC interrumpe la conexión entre el gestor de colas y el programade aplicación y es lo contrario de la llamada MQCONN o MQCONNX.

En OS/400 para las aplicaciones que se ejecutan en modalidad de compatibilidad,esta llamada no es necesaria. Vea el “Capítulo 27. MQCONN - Conectar gestor decolas” en la página 231 para obtener más información.

Sintaxis

ParámetrosHCONN (entero con signo de 10 dígitos) – entrada/salida

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

En OS/400 para las aplicaciones que se ejecutan en modalidad decompatibilidad, puede omitirse la llamada MQCONN y especificarse elsiguiente valor HCONN:

HCDEFHAsa de conexión por omisión.

Cuando la llamada se completa satisfactoriamente, el gestor de colas estableceHCONN en un valor que no es un asa válida para el entorno. El valor es:

HCUNUHAsa de conexión no utilizable.

CMPCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCFAIL:

MQDISC (HCONN, CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 239

|

Page 254: amqwak00

RC2219(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. Si se emite una llamada MQDISC mientras la aplicación sigue teniendo objetos

abiertos, dichos objetos se cerrarán implícitamente y las opciones de cerrar seestablecen en CONONE.

2. En OS/400 para las aplicaciones que se ejecutan en modalidad decompatibilidad, no es necesario utilizar esta llamada; vea la llamada MQCONNpara conocer más detalles.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQDISC(HCONN : CMPCOD : REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQDISC PR EXTPROC('MQDISC')D* Asa de conexiónD HCONN 10I 0D* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

240 Consulta de programación de aplicaciones (ILE RPG)

Page 255: amqwak00

Capítulo 30. MQGET - Obtener mensaje

La llamada MQGET recupera un mensaje de una cola local que se ha abiertoutilizando la llamada MQOPEN.

Sintaxis

ParámetrosHCONN (entero con signo de 10 dígitos) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

En OS/400 para las aplicaciones que se ejecutan en modalidad decompatibilidad, puede omitirse la llamada MQCONN y especificarse elsiguiente valor HCONN:

HCDEFHAsa de conexión por omisión.

HOBJ (entero con signo de 10 dígitos) – entradaAsa de objeto.

Esta asa representa la cola de la que debe recuperarse el mensaje. El valor deHOBJ lo devolvió una llamada MQOPEN anterior. La cola debe haberse abiertocon una o más de las opciones siguientes (vea el “Capítulo 32. MQOPEN -Abrir objeto” en la página 261 para más detalles):

OOINPSOOINPXOOINPQOOBRW

MSGDSC (MQMD) – entrada/salidaDescriptor de mensaje.

Esta estructura describe los atributos del mensaje necesario y los del mensajerecuperado. Vea el “Capítulo 10. MQMD - Descriptor de mensaje” en lapágina 85 para obtener detalles.

Si BUFLEN es inferior a la longitud del mensaje, el gestor de colas rellena MSGDSCigualmente, independientemente de si se ha especificado GMATM en elparámetro GMO (vea el campo GMOPT descrito en el “Capítulo 8. MQGMO -Opciones de obtener mensaje” en la página 51).

Si la aplicación proporciona un MQMD de la versión 1, el mensaje devueltotiene un MQMDE como prefijo de los datos del mensaje de aplicación, perosolamente si uno o varios de los campos del MQMDE tiene un valor no por

MQGET (HCONN, HOBJ, MSGDSC, GMO, BUFLEN, BUFFER, DATLEN,CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 241

|

Page 256: amqwak00

omisión. Si todos los campos del MQMDE tienen valores por omisión, se omiteel MQMDE. El nombre de formato FMMDE en el campo MDFMT de MQMDindica que ha un MQMDE presente.

GMO (MQGMO) – entrada/salidaOpciones que controlan la acción de MQGET.

Vea el “Capítulo 8. MQGMO - Opciones de obtener mensaje” en la página 51para obtener detalles.

BUFLEN (entero con signo de 10 dígitos) – entradaLongitud en bytes del área BUFFER.

Puede especificarse cero para los mensajes que no tienen datos, o si tiene queeliminarse el mensaje de la cola y descartarse los datos (en este caso debeespecificarse GMATM).

Nota: La longitud del mensaje más largo que puede leerse desde la cola seindica en el atributo de cola local MaxMsgLength; vea el “Capítulo 38.Atributos de colas locales y colas modelo” en la página 311.

BUFFER (serie de bits de 1 byte×BUFLEN) – salidaÁrea que contendrá los datos del mensaje.

Si BUFLEN es inferior a la longitud del mensaje, se trasladará a BUFFER todo eltrozo del mensaje que pueda contener; esto sucede independientemente de sise ha especificado GMATM en el parámetro GMO (vea el campo GMOPT descritoen el “Capítulo 8. MQGMO - Opciones de obtener mensaje” en la página 51para obtener más información).

El juego de caracteres y la codificación de datos en el BUFFER se indican,respectivamente, en los campos MDCSI y MDENC devueltos en el parámetroMSGDSC. Si tienen valores distintos de los que necesita el receptor, este deberáconvertir los datos del mensaje de la aplicación para que tengan el juego decaracteres y la codificación necesarios. Puede utilizarse la opción GMCONVcon una rutina de salida escrita por usuario para realizar la conversión de losdatos del mensaje (vea el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51 para obtener detalles sobre esta opción).

Nota: Los demás parámetros de la llamada MQGET deben tener el juego decaracteres y la codificación del gestor de colas local (facilitados,respectivamente, por el atributo CodedCharSetId del gestor de colas yENNAT).

Si la llamada falla, el contenido del almacenamiento intermedio aún puedehaber cambiado.

DATLEN (entero con signo de 10 dígitos) – salidaLongitud del mensaje.

Indica la longitud en bytes de los datos de la aplicación en el mensaje. Si esmayor que BUFLEN, solo se devolverán los bytes de BUFLEN en el parámetroBUFFER (es decir, que el mensaje se truncará). Si el valor es cero, significa que elmensaje no contiene datos de la aplicación.

Si BUFLEN es inferior a la longitud del mensaje, el gestor de colas rellena DATLENigualmente, independientemente de si se ha especificado GMATM en elparámetro GMO (vea el campo GMOPT descrito en el “Capítulo 8. MQGMO -

242 Consulta de programación de aplicaciones (ILE RPG)

Page 257: amqwak00

Opciones de obtener mensaje” en la página 51 para obtener más información).Esto permite a la aplicación determinar el tamaño del almacenamientointermedio necesario para introducir los datos del mensaje y después reemitirla llamada con un almacenamiento intermedio que tenga el tamaño adecuado.

No obstante, si se especifica la opción GMCONV y los datos del mensajeconvertidos no caben en el BUFFER, el valor que se devuelve para DATLEN es:v La longitud de los datos no convertidos, para formatos definidos por el gestor

de colas.En este caso, si la naturaleza de los datos hace que aumenten durante laconversión, la aplicación debe asignar un almacenamiento intermedio algomayor que el valor devuelto por el gestor de colas para DATLEN.

v El valor devuelto por la rutina de salida de conversión de datos, paraformatos definidos por la aplicación.

CMPCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a CMPCOD.

Los códigos de razón listados más abajo son los que el gestor de colas puededevolver para el parámetro REASON. Si la aplicación especifica la opciónGMCONV y se llama a una rutina de salida escrita por usuario para convertirparte de los datos del mensaje o todos ellos, será la rutina de salida la quedecida qué valor se devuelve para el parámetro REASON. Como resultado, sonposibles valores distintos a los indicados a continuación.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:RC2120

(2120, X'848') Los datos convertidos son demasiado grandes para elalmacenamiento intermedio.

RC2190(2190, X'88E') La serie convertida es demasiado grande para el campo.

RC2150(2150, X'866') La serie DBCS no es válida.

RC2110(2110, X'83E') Formato de mensaje no válido.

RC2243(2243, X'8C3') Los segmentos del mensaje tienen CCSID distintos.

RC2244(2244, X'8C4') Los segmentos del mensaje tienen codificacionesdistintas.

Capítulo 30. MQGET - Obtener mensaje 243

||||

Page 258: amqwak00

RC2209(2209, X'8A1') No hay ningún mensaje bloqueado.

RC2119(2119, X'847') Los datos del mensaje no se han convertido.

RC2145(2145, X'861') Parámetro almacenamiento intermedio origen no válido.

RC2111(2111, X'83F') El identificador de juego de caracteres codificado origenno es válido.

RC2113(2113, X'841') Codificación de decimal empaquetado del mensaje noreconocida.

RC2114(2114, X'842') Codificación de coma flotante del mensaje no reconocida.

RC2112(2112, X'840') Codificación de entero origen no reconocida.

RC2143(2143, X'85F') Parámetro longitud origen no válido.

RC2146(2146, X'862') Parámetro almacenamiento intermedio destino no válido.

RC2115(2115, X'843') El identificador de juego de caracteres codificado destinono es válido.

RC2117(2117, X'845') Codificación de decimal empaquetado especificada porreceptor no reconocida.

RC2118(2118, X'846') Codificación de coma flotante especificada por receptorno reconocida.

RC2116(2116, X'844') Codificación de entero destino no reconocida.

RC2079(2079, X'81F') Se ha devuelto un mensaje truncado (el proceso se hacompletado).

RC2080(2080, X'820') Se ha devuelto un mensaje truncado (el proceso no se hacompletado).

Si CMPCOD es CCFAIL:RC2004

(2004, X'7D4') El parámetro almacenamiento intermedio no es válido.RC2005

(2005, X'7D5') El parámetro longitud de almacenamiento intermedio noes válido.

RC2219(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2010(2010, X'7DA') El parámetro longitud de datos no es válido.

RC2016(2016, X'7E0') Se han inhibido las obtenciones para la cola.

RC2186(2186, X'88A') Estructura no válida de las opciones de obtener mensaje.

244 Consulta de programación de aplicaciones (ILE RPG)

||

||||

Page 259: amqwak00

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2019(2019, X'7E3') El asa de objeto no es válida.

RC2241(2241, X'8C1') El grupo de mensajes no está completo.

RC2242(2242, X'8C2') El mensaje lógico no está completo.

RC2259(2259, X'8D3') Especificación de examinar incoherente.

RC2245(2245, X'8C5') Especificación de unidad de trabajo incoherente.

RC2246(2246, X'8C6') El mensaje bajo el cursor no es válido para recuperación.

RC2247(2247, X'8C7') Las opciones de emparejar no son válidas.

RC2026(2026, X'7EA') El descriptor de mensaje no es válido.

RC2250(2250, X'8CA') El número de secuencia del mensaje no es válido.

RC2033(2033, X'7F1') No hay ningún mensaje disponible.

RC2034(2034, X'7F2') El cursor para examinar no está colocado en el mensaje.

RC2036(2036, X'7F4') La cola no se ha abierto para examinar.

RC2037(2037, X'7F5') La cola no se ha abierto para entrada.

RC2041(2041, X'7F9') La definición de un objeto ha cambiado desde suapertura.

RC2101(2101, X'835') Objeto dañado.

RC2046(2046, X'7FE') Las opciones no son válidas o no son coherentes.

RC2052(2052, X'804') La cola se ha suprimido.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2161(2161, X'871') El gestor de colas está en reposo.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2024(2024, X'7E8') No pueden manejarse más mensajes dentro de la unidadde trabajo actual.

RC2072(2072, X'818') El soporte de punto de sincronismo no está disponible.

Capítulo 30. MQGET - Obtener mensaje 245

Page 260: amqwak00

RC2195(2195, X'893') Se ha producido un error inesperado.

RC2255(2255, X'8CF') La unidad de trabajo no está disponible para que lautilice el gestor de colas.

RC2090(2090, X'82A') El intervalo de espera de MQGMO no es válido.

RC2256(2256, X'8D0') Se ha suministrado una versión errónea de MQGMO.

RC2257(2257, X'8D1') Se ha suministrado una versión erónea de MQMD.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. Normalmente, el mensaje recuperado se suprime de la cola. Esta supresión

puede producirse como parte de la llamada MQGET propiamente dicha o comoparte de un punto de sincronismo. La supresión del mensaje no se produce sise especifica una opción GMBRWF o GMBRWN en el parámetro GMO (vea elcampo GMOPT descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51).Si se especifica la opción GMLK con una de las opciones para examinar, sebloqueará el mensaje examinado para que solo pueda verlo esta asa.Si se especifica la opción GMUNLK, se desbloqueará el mensaje bloqueadopreviamente. En este caso no se recupera ningún mensaje, ni se comprueban nialteran los parámetros MSGDSC, BUFLEN, BUFFER y DATLEN.

2. Si la aplicación que emite la llamada MQGET está ejecutándose como un clientede MQ, es posible que el mensaje recuperado se pierda si, durante el procesode la llamada MQGET, el cliente de MQ se termina de forma anormal o seinterrumple la conexión del cliente. Esto puede darse debido a que el sustitutoque se ejecuta en la plataforma del gestor de colas y que emite la llamadaMQGET en nombre del cliente, no puede detectar la pérdida del cliente hastaque el sustituto está a punto de devolver el mensaje al cliente; esto sucededespués de haber eliminado el mensaje de la cola. Esto puede producirse en losmensajes persistentes y en los no persistentes.El riesgo de perder mensajes de esta forma puede eliminarse recuperandosiempre los mensajes dentro de unidades de trabajo (es decir, especificando laopción GMSYP en la llamada MQGET y utilizando las llamadas MQCMIT oMQBACK para comprometer o restituir la unidad de trabajo al completarse elproceso del mensaje). Si se especifica GMSYP y el cliente termina de formaanómala o se interrumpe la conexión, el sustituto restituye la unidad de trabajoen el gestor de colas y el mensaje se reincorpora a la cola.En principio, puede darse la misma situación con las aplicaciones que seejecutan en la plataforma del gestor de colas, pero en este caso el período detiempo durante el que puede perderse un mensaje es muy reducido. Sinembargo, al igual que en los clientes MQ, el riesgo puede eliminarserecuperando el mensaje dentro de una unidad de trabajo.

3. Si una aplicación coloca una secuencia de mensajes en la misma cola sinutilizar grupos de mensajes, el orden de esos mensajes se conserva siempre quese cumplan ciertas condiciones. Consulte las notas de utilización en ladescripción de la llamada MQPUT para obtener detalles. Si se satisfacen estascondiciones, los mensajes se presentarán en la aplicación receptora en el ordenen el que se enviaron, siempre y cuando:

246 Consulta de programación de aplicaciones (ILE RPG)

Page 261: amqwak00

v Solo un receptor obtiene mensajes de la cola.Si dos o más aplicaciones obtienen mensajes de la cola, deben estar deacuerdo con el emisor en el mecanismo que va a utilizarse para identificarlos mensajes que formen parte de una secuencia. Por ejemplo, el emisorpuede dar un valor exclusivo (en la secuencia de mensajes) a todos loscampos MDCID de los mensajes de una secuencia.

v El emisor no haya cambiando deliberadamente el orden de recuperaciónespecificando, por ejemplo, un MDMID o MCCID específico.

Si la aplicación emisora transfiere los mensajes como grupo de mensajes, losmensajes se presentarán en la aplicación emisora en el orden correcto, siempreque la aplicación emisora especifique la opción GMLOGO en la llamadaMQGET. Para obtener más información sobre los grupos de mensajes, vea:v El campo MDMFL en MQMDv La opción PMLOGO en MQPMOv La opción GMLOGO en MQGMO

4. Las aplicaciones deben buscar el código de información de retorno FBQUIT enel campo MDFB del parámetro MSGDSC. Si se encuentra dicho valor, la aplicacióndebería finalizar. Vea el campo MDFB descrito en el “Capítulo 10. MQMD -Descriptor de mensaje” en la página 85 para obtener más información.

5. Si la cola identificada por HOBJ se abrió con la opción OOSAVA y el código determinación de la llamada MQGET es CCOK o CCWARN, el contexto asociadoal asa de la cola HOBJ tomará el valor del contexto del mensaje que se hayarecuperado (a menos que se haya establecido la opción GMBRWF o GMBRWN,en cuyo caso se marcará como no disponible). Este contexto puede utilizarse enuna llamada MQPUT o MQPUT1 posterior (por ejemplo, cuando se reenvíe unmensaje a otra cola). Para más información sobre el contexto de mensaje,consulte el manual MQSeries Application Programming Guide.

6. Si se incluye la opción GMCONV en el parámetro GMO, los datos del mensaje deaplicación se convierten a la representación solicitada por la aplicaciónreceptora, antes de que los datos se coloquen en el parámetro BUFFER:v El campo MDFMT de la información de control del mensaje identifica la

estructura de los datos de la aplicación, y los campos MDCSI y MDENC de lainformación de control del mensaje especifican su identificador de juego decaracteres y la codificación.

v La aplicación que emite la llamada MQGET especifica en los campos MDCSI yMDENC del parámetro MSGDSC el identificador del juego de caracteres y lacodificación a los que los datos del mensaje de la aplicación deberíanconvertirse.

v Si los valores de MDCSI y MDENC de la información de control del mensajecoinciden con los del parámetro MSGDSC, no es preciso realizar conversiónalguna.

Cuando se necesita la conversión de los datos, esta la realiza el propio gestorde colas o una rutina de salida escrita por usuario, según sea el valor delcampo MDFMT de la información de control del mensaje:v Los siguientes nombres de formato son formatos que el gestor de colas

convierte automáticamente y que reciben el nombre de formatos“incorporados”:

FMADMNFMCICSFMCMD1FMCMD2FMDLH

Capítulo 30. MQGET - Obtener mensaje 247

|

Page 262: amqwak00

FMDHFMEVNTFMIMSFMIMVSFMMDEFMPCFFMRMHFMSTRFMTMFMXQH

v El nombre de formato FMNONE es un valor especial que indica que lanaturaleza de los datos del mensaje es indefinida. Como consecuencia, elgestor de colas no intenta la conversión cuando se recupera el mensaje de lacola.

Nota: Si se especifica GMCONV en la llamada MQGET para un mensaje quetiene el nombre de formato FMNONE, y el juego de caracteres o lacodificación del mensaje difieren de los especificados en el parámetroMSGDSC, el mensaje se devuelve igualmente en el parámetro BUFFER(suponiendo que no haya otros errores), pero la llamada se completacon el código de terminación CCWARN y el código de razón RC2110.

FMNONE puede utilizarse cuando la naturaleza de los datos del mensajeindique que no se precisa conversión alguna, o bien cuando la aplicaciónemisora y la receptora hayan llegado a un acuerdo respecto a la forma enque deben enviarse los datos del mensaje.

v Todos los demás nombres de formatos hacen que el mensaje pase a unarutina de salida escrita por usuario para la conversión. La rutina de salidatiene el mismo nombre que el formato, además de otros datos específicos delentorno. Los nombres de formato especificados por el usuario no debenempezar por las letras “MQ”, ya que dichos nombres pueden entrar enconflicto con los nombres de formato a los que se dé soporte en un futuro.Vea el “Apéndice F. Conversión de datos” en la página 485 para obtenerdetalles sobre la rutina de salida de conversión de datos.

Los datos de usuario del mensaje pueden convertirse a cualquier juego decaracteres y codificación soportados. Sin embargo, tenga en cuenta que si elmensaje contiene una o varias estructuras de cabecera MQ, el mensaje no podráconvertirse de o a un juego de caracteres que tenga caracteres de doble byte ode múltiples bytes para ninguno de los caracteres válidos en los nombres decola. Si se intenta esto, se obtiene el código de razón RC2111 o RC2115 y sedevuelve el mensaje sin convertir. El juego de caracteres Unicode UCS-2 es unejemplo de ese tipo de juegos de caracteres.

Al devolverse de MQGET, el siguiente código de razón indica que el mensajese ha convertido satisfactoriamente:

RCNONE

El siguiente código de razón indica que el mensaje puede haberse convertidosatisfactoriamente; la aplicación debe comprobar los campos MDCSI y MDENC delparámetro MSGDSC para descubrir:

RC2079

Todos los demás códigos de razón indican que el mensaje no se ha convertido.

248 Consulta de programación de aplicaciones (ILE RPG)

||||||||

Page 263: amqwak00

Nota: La interpretación del código de razón descrito anteriormente se cumpliráen el caso de las conversiones realizadas por rutinas de salida escritaspor usuario solo si las rutinas se ajustan a las directrices de procesodescritos en el “Apéndice F. Conversión de datos” en la página 485.

7. Para los formatos incorporados listados más arriba, el gestor de colas puedellevar a cabo la conversión por omisión de series de caracteres del mensajecuando se especifica la opción GMCONV. La conversión por omisión permite algestor de colas utilizar un juego de caracteres por omisión especificado por lainstalación que se aproxima al juego de caracteres real, al convertir datos decadena de caracteres. Como resultado, la llamada MQGET puede sersatisfactoria, con el código de terminación CCOK, en vea de completarse conCCWARN y el código de razón RC2111 o RC2115.

Nota: El resultado de utilizar un juego de caracteres aproximado para convertirlos datos de cadena de caracteres es que algunos caracteres puedenconvertirse incorrectamente. Esto puede evitarse utilizando en la cadenasolamente caracteres que sean comunes al juego de caracteres real y aljuego de caracteres por omisión.

La conversión por omisión es aplicable tanto a los datos del mensaje deaplicación como a los campos de caracteres de las estructuras MQMD yMQMDE:v La conversión por omisión de los datos del mensaje de la aplicación se

produce solamente cuando se cumplen todas las condiciones siguientes:– La aplicación especifica GMCONV.– El mensaje contiene datos que deben convertirse desde un juego de

caracteres o a un juego de caracteres no soportado.– Se ha habilitado la conversión por omisión al instalarse o reiniciarse el

gestor de colas.v La conversión por omisión de los campos de caracteres en las estructuras

MQMD y MQMDE se produce cuando es necesaria, siempre que estéhabilitada la conversión por omisión para el gestor de colas. La conversión serealiza incluso si la aplicación no especifica la opción GMCONV en lallamada MQGET.

8. El parámetro BUFFER mostrado en el ejemplo de programación RPG se declaracomo una serie, lo cual limita la longitud máxima del parámetro a 256 bytes. Sise necesita un almacenamiento intermedio más grande, debe declararse elparámetro en lugar de hacerlo como una estructura, o como un campo de unarchivo físico.Al declarar el parámetro como estructura, la longitud máxima posible aumentahasta 9999 bytes, mientras que al declararlo como campo de un archivo físico,esta aumenta hasta unos 32 Kbytes.

Capítulo 30. MQGET - Obtener mensaje 249

Page 264: amqwak00

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQGET(HCONN : HOBJ : MSGDSC : GMO :C BUFLEN : BUFFER : DATLEN :C CMPCOD : REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQGET PR EXTPROC('MQGET')D* Asa de conexiónD HCONN 10I 0 VALUED* Asa de objetoD HOBJ 10I 0 VALUED* Descriptor de mensajeD MSGDSC 364AD* Opciones que controlan la acción de MQGETD GMO 100AD* Longitud en bytes del área BUFFERD BUFLEN 10I 0 VALUED* Área que contendrá los datos del mensajeD BUFFER * VALUED* Longitud del mensajeD DATLEN 10I 0D* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

250 Consulta de programación de aplicaciones (ILE RPG)

Page 265: amqwak00

Capítulo 31. MQINQ - Consultar los atributos de objeto

La llamada MQINQ devuelve una matriz de enteros y un grupo de series decaracteres que contiene los atributos de un objeto. Son válidos los siguientes tiposde objetos:v Colav Lista de nombresv Definición de procesov Gestor de colas

Sintaxis

ParámetrosHCONN (entero con signo de 10 dígitos) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

En OS/400 para las aplicaciones que se ejecutan en modalidad decompatibilidad, puede omitirse la llamada MQCONN y especificarse elsiguiente valor HCONN:

HCDEFHAsa de conexión por omisión.

HOBJ (entero con signo de 10 dígitos) – entradaAsa de objeto.

Esta asa represenra el objeto (sea cual sea el tipo) cuyos atributos se requieren.El asa la debe haber devuelto una llamada MQOPEN anterior que especificabala opción OOINQ.

SELCNT (entero con signo de 10 dígitos) – entradaCuenta de selectores.

Esta es la cuenta de selectores suministrados en la matriz SELS. Es el númerode atributos que deben devolverse. Cero es un valor válido. El númeromáximo permitido es 256.

SELS (entero con signo de 10 dígitos×SELCNT) – entradaMatriz de selectores de atributos.

Es una matriz de selectores de atributos SELCNT; cada selector identifica unatributo (entero o carácter) cuyo valor se requiere.

Cada selector debe ser válido para el tipo de objeto que HOBJ representa, de locontrario la llamada resulta anómala, con el código de terminación CCFAIL yel código de razón RC2067.

MQINQ (HCONN, HOBJ, SELCNT, SELS, IACNT, INTATR, CALEN,CHRATR, CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 251

|

|

Page 266: amqwak00

En el caso especial de colas:v Si el selector no es válido para colas de ningún tipo, la llamada dará error

con el código de terminación CCFAIL y el código de razón RC2067.v Si el selector solo es aplicable a colas de tipo o tipos distintos de los del

objeto, la llamada finalizará con éxito con el código de terminaciónCCWARN y el código de razón RC2068.

Los selectores pueden especificarse en cualquier orden. Los valores deatributos que correspondan a selectores de atributos de enteros (selectores IA*)se devuelven en INTATR en el mismo orden en que dichos selectores aparecenen SELS. Los valores de atributos que correspondan a selectores de atributos decaracteres (selectores CA*) se devuelven en CHRATR en el mismo orden en quedichos selectores se producen. Los selectores IA* pueden estar intercalados conselectores CA*; solo es importante el orden relativo dentro de cada tipo.

Notas:

1. Los selectores de enteros y caracteres se asignan dentro de dos rangosdistintos; los selectores IA* están dentro del rango IAFRST a IALAST y losselectores CA* dentro del rango CAFRST a CALAST.De cada rango, las constantes IALSTU y CALSTU definen el valor más altoque puede aceptar el gestor de colas.

2. Si todos los selectores IA* se producen primero, podrán utilizarse losmismos números de elementos para direccionar los elementoscorrespondientes de las matrices SELS y INTATR.

Para cada selector CA* de las siguientes descripciones, la constante que definela longitud en bytes de la serie resultante de CHRATR se da entre paréntesis.

Selectores para el gestor de colasCAALTD

Fecha de la alteración más reciente (LNDATE).CAALTT

Hora de la alteración más reciente (LNTIME).CACADX

Nombre de la rutina de salida de definición de canalautomática (LNEXN).

CACLWDDatos pasados a la rutina de salida de carga de trabajo declúster (LNEXDA).

CACLWXNombre de la rutina de salida de carga de trabajo de clúster(LNEXN).

CACMDQNombre de la cola de entrada de mandatos del sistema(LNQN).

CADLQNombre de la cola de mensajes no entregados (LNQN).

CADXQNNombre de la cola de transmisión por omisión (LNQN).

CAQMDDescripción del gestor de colas (LNQMD).

CAQMIDIdentificador del gestor de colas (LNQMID).

CAQMNNombre del gestor de colas local (LNQMN).

252 Consulta de programación de aplicaciones (ILE RPG)

||||

||||||

||

Page 267: amqwak00

CARPNNombre del clúster para el que el gestor de colas proporcionaservicios de depósito (LNQMN).

CARPNLNombre del objeto lista de nombres que contiene los nombresde los clústeres para los que el gestor de colas proporcionaservicios de depósito (LNNLN).

IAAUTEAtributo de control para sucesos de autorización.

IACADAtributo de control para la definición de canal automática.

IACADEAtributo de control para sucesos de definición de canalautomática.

IACLWLLongitud de carga de trabajo de clúster.

IACCSIIdentificador de juego de caracteres codificado.

IACMDLNivel de mandatos soportado por el gestor de colas.

IADISTSoporte de lista de distribución.

IAINHEAtributo de control para sucesos de inhibir.

IALCLEAtributo de control para sucesos locales.

IAMHNDNúmero máximo de asas.

IAMLENLongitud máxima del mensaje.

IAMPRIPrioridad máxima.

IAMUNCNúmero máximo de mensajes no comprometidos dentro deuna unidad de trabajo.

IAPFMEAtributo de control para sucesos de rendimiento.

IAPLATPlataforma en la que reside el gestor de colas.

IARMTEAtributo de control para sucesos remotos.

IASSE Atributo de control para sucesos de inicio y de detención.IASYNC

Disponibilidad del punto de sincronismo.IATRGI

Intervalo desencadenante.

Selectores para listas de nombresCAALTD

Fecha de la alteración más reciente (LNDATE).CAALTT

Hora de la alteración más reciente (LNTIME).CALSTD

Descripción de la lista de nombres (LNNLD).CALSTN

Nombre del objeto de lista de nombres (LNNLN).

Capítulo 31. MQINQ - Consultar los atributos de objeto 253

|||||||

||

||||

Page 268: amqwak00

CANAMSNombre de la lista de nombres (LNQN × Número de nombresen la lista).

IANAMCNúmero de nombres en la lista de nombres.

Selectores para todos los tipos de colaSi la cola que se consulta es de un clúster, los selectores válidosdependerán de cómo se resuelva la cola; vea la nota de utilización 4para conocer más detalles.CAALTD

Fecha de la alteración más reciente (LNDATE).CAALTT

Hora de la alteración más reciente (LNTIME).CAQD

Descripción de la cola (LNQD).CAQN

Nombre de la cola (LNQN).IADPER

Permanencia del mensaje por omisión.IADPRI

Prioridad del mensaje por omisión.IAIPUT

Indica si están permitidas operaciones de poner.IAQTYP

Tipo de cola.

Selectores para colas localesSi la cola que se consulta es de un clúster, los selectores válidosdependerán de cómo se resuelva la cola; vea la nota de utilización 4para conocer más detalles.CABRQN

Nombre de recolocación en cola de restitución excesiva(LNQN).

CACLNNombre de clúster (LNCLUN).

CACLNLLista de nombres de clúster (LNNLN).

CACRTDFecha de creación de la cola (LNCRTD).

CACRTTHora de creación de la cola (LNCRTT).

CAINIQNombre de la cola de inicio (LNQN).

CAPRONNombre de la definición de proceso (LNPRON).

CATRGDDatos desencadenantes (LNTRGD).

IABTHRUmbral de restitución.

IACDEPNúmero de mensajes de la cola.

IADBNDEnlace por omisión.

IADINPOpción de abrir para entrada por omisión.

254 Consulta de programación de aplicaciones (ILE RPG)

|||||||

|||

||||

||

Page 269: amqwak00

IADEFTTipo de definición de cola.

IADISTSoporte de lista de distribución.

IAHGBIndica si se memoriza la cuenta de restitución.

IAIGETIndica si están permitidas operaciones de obtener.

IAMLENLongitud máxima de mensaje.

IAMDEPNúmero máximo de mensajes permitidos en la cola.

IAMDSImportancia de la prioridad del mensaje.

IAOICNúmero de llamadas MQOPEN que tienen la cola abierta paraentrada.

IAOOCNúmero de llamadas MQOPEN que tienen la cola abierta parasalida.

IAQDHEAtributo de control para sucesos de límite máximo deprofundidad de cola.

IAQDHLLímite máximo de profundidad de cola.

IAQDLEAtributo de control para sucesos de límite mínimo deprofundidad de cola.

IAQDLLLímite mínimo de profundidad de cola.

IAQDMEAtributo de control para el número máximo de sucesos deprofundidad de cola.

IAQSI Límite del intervalo de servicio de la cola.IAQSIE

Atributo de control para los sucesos de intervalo de servicio dela cola.

IARINTIntervalo de retención de la cola.

IASCOPÁmbito de definición de la cola.

IASHARIndica si la cola puede compartirse.

IATRGCControl de desencadenamiento.

IATRGDProfundidad desencadenante.

IATRGPPrioridad de mensaje umbral para desencadenantes.

IATRGTTipo de desencadenante.

IAUSAGUtilización.

Selectores para definiciones locales de colas remotas

Capítulo 31. MQINQ - Consultar los atributos de objeto 255

Page 270: amqwak00

CACLNNombre de clúster (LNCLUN).

CACLNLLista de nombres de clúster (LNNLN).

CARQMNNombre del gestor de colas remoto (LNQMN).

CARQNNombre de la cola remota tal como se la conoce en el gestor decolas remoto (LNQN).

CAXQNNombre de la cola de transmisión (LNQN).

IADBNDEnlace por omisión.

IASCOPÁmbito de definición de la cola.

Selectores para colas aliasCABASQ

Nombre de cola en el que se resuelve el alias (LNQN).CACLN

Nombre de clúster (LNCLUN).CACLNL

Lista de nombres de clúster (LNNLN).IADBND

Enlace por omisión.IAIGET

Indica si están permitidas operaciones de obtener.IASCOP

Ámbito de definición de la cola.

Selectores para definiciones de procesoCAALTD

Fecha de la alteración más reciente (LNDATE).CAALTT

Hora de la alteración más reciente (LNTIME).CAAPPI

Identificador de aplicación (LNPROA).CAENVD

Datos de entorno (LNPROE).CAPROD

Descripción de la definición de proceso (LNPROD).CAPRON

Nombre de la definición de proceso (LNPRON).CAUSRD

Datos de usuario (LNPROU).IAAPPT

Tipo de aplicación.

IACNT (entero con signo de 10 dígitos) – entradaCuenta de atributos de tipo entero.

Es el número de elementos de la matriz INTATR. Cero es un valor válido.

Si tiene como mínimo el número de selectores IA* del parámetro SELS, sedevolverán todos los atributos de tipo entero solicitados.

INTATR (entero con signo de 10 dígitos×IACNT) – salidaMatriz de atributos de tipo entero.

256 Consulta de programación de aplicaciones (ILE RPG)

||||

||

||||||

||||

Page 271: amqwak00

Es una matriz de valores de atributos de tipo entero IACNT.

Los valores de atributos de tipo entero se devuelven en el mismo orden quelos selectores IA* del parámetro SELS. Si la matriz contiene más elementos queel número de selectores de IA*, los elementos sobrantes no varían.

Si HOBJ representa una cola, pero no puede aplicarse un atributo selector a esetipo de cola, se devolverá el valor específico IAVNA para el elementocorrespondiente de la matriz INTATR.

CALEN (entero con signo de 10 dígitos) – entradaLongitud del almacenamiento intermedio de atributos de tipo carácter.

Es la longitud en bytes del parámetro CHRATR.

Debe ser como mínimo la suma de las longitudes de los atributos de tipocarácter solicitados (vea SELS). Cero es un valor válido.

CHRATR (serie de caracteres de 1 byte×CALEN) – salidaAtributos de tipo carácter.

Es el almacenamiento intermedio al que se devuelven los atributos de tipocarácter concatenados juntos. La longitud del almacenamiento intermedio laindica el parámetro CALEN.

Los atributos de tipo carácter se devuelven en el mismo orden que losselectores CA* del parámetro SELS. La longitud de cada serie de atributos sedetermina para cada atributo y (vea SELS), y su valor se rellena con blancos ala derecha si es necesario. Si el almacenamiento intermedio tiene más espaciodel necesario para contener todos los atributos de tipo carácter solicitados(incluyendo los caracteres de relleno), los bytes sobrantes después del últimoatributo devuelto no cambiarán.

Si HOBJ representa una cola, pero no puede aplicarse un selector de atributo aese tipo de cola, se devolverá una serie de caracteres compuestacompletamente por asteriscos (*) como valor de dicho atributo en CHRATR.

CMPCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:

Capítulo 31. MQINQ - Consultar los atributos de objeto 257

Page 272: amqwak00

RC2008(2008, X'7D8') No se ha dado suficiente espacio para los atributos detipo carácter.

RC2022(2022, X'7E6') No se ha dado suficiente espacio para los atributos detipo entero.

RC2068(2068, X'814') Selector no aplicable a este tipo de cola.

Si CMPCOD es CCFAIL:RC2219

(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2006(2006, X'7D6') La longitud de los atributos de tipo carácter no es válida.

RC2007(2007, X'7D7') La serie de atributos de tipo carácter no es válida.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2019(2019, X'7E3') El asa de objeto no es válida.

RC2021(2021, X'7E5') La cuenta de atributos de tipo entero no es válida.

RC2023(2023, X'7E7') La matriz de atributos de tipo entero no es válida.

RC2038(2038, X'7F6') La cola no se ha abierto para consulta.

RC2041(2041, X'7F9') La definición de un objeto ha cambiado desde suapertura.

RC2101(2101, X'835') Objeto dañado.

RC2052(2052, X'804') La cola se ha suprimido.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2065(2065, X'811') La cuenta de selectores no es válida.

RC2067(2067, X'813') El selector de atributo no es válido.

RC2066(2066, X'812') La cuenta de selectores es demasiado grande.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

258 Consulta de programación de aplicaciones (ILE RPG)

Page 273: amqwak00

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. Los valores devueltos son una instantánea de los atributos seleccionados. No

puede garantizarse que los atributos no vayan a cambiar antes de que laaplicación pueda actuar sobre los valores devueltos.

2. Cuando se abre una cola modelo, incluso para consultar sus atributos, se creauna cola dinámica. Los atributos de la cola dinámica (salvo CreationDate,CreationTime y DefinitionType) son los mismos que los de la cola modelo enel momento en que se cra la cola dinámica. Si posteriormente utiliza la llamadaMQINQ con la misma asa de objeto, el gestor de colas devolverá los atributosde la cola dinámica y no los de la cola modelo.

3. Si el objeto que se consulta es una cola alias, los valores de atributo devueltospor la llamada MQINQ serán los atributos de la cola alias, no los atributos dela cola base en la que se resuelve el alias.

4. Si el objeto que se consulta es una cola de clúster, los atributos que puedanconsultarse dependerán de cómo se abra la cola:v Si la cola de clúster se abre para consulta más una o varias operaciones de

entrada, de examinar o de establecer, debe haber una instancia local de lacola de clúster para que la operación de abrir resulte satisfactoria. En estecaso, los atributos que pueden consultarse son los válidos para las colaslocales.

v Si la cola de clúster se abre solo para consulta o para consulta y salida,solamente pueden consultarse los atributos listados más abajo; el atributoQType tiene el valor QTCLUS en este caso:

CAQDCAQNIADBNDIADPERIADPRIIAIPUTIAQTYP

Si la cola de clúster se abre sin un enlace fijo (es decir, se ha especificadoOOBNDN en la llamada MQOPEN o se ha especificado OOBNDQ cuando elatributo DefBind tiene el valor BNDNOT), las llamadas MQINQ sucesivaspara la cola podrían consultar instancias distintas de la cola de clúster,aunque normalmente todas las instancias tienen los mismos valores deatributo.

Para obtene más información sobre las colas de clúster, consulte la publicaciónMQSeries Queue Manager Clusters.

5. Si deben consultarse varios atributos y a continuación algunos de ellos van adefinirse utilizando la llamada MQSET, puede resultar conveniente situar alprincipio de las matrices de selectores los atributos que tienen que definirse, deforma que las mismas matrices (con cuentas reducidas) puedan utilizarse paraMQSET.

6. Si se produce más de una situación de aviso (vea el parámetro CMPCOD), elcódigo de razón devuelto es el primero que se aplicable de los de la siguientelista:a. RC2068b. RC2022

Capítulo 31. MQINQ - Consultar los atributos de objeto 259

||

|||||

||||||||||

||||||

||

Page 274: amqwak00

c. RC20087. Para más información sobre los atributos de objetos, consulte el Capítulo 36.

Atributos de los objetos de MQSeries.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQINQ(HCONN : HOBJ : SELCNT :C SELS(1) : IACNT : INTATR(1) :C CALEN : CHRATR : CMPCOD :C REASON)

El prototipo de definición para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQINQ PR EXTPROC('MQINQ')D* Asa de conexiónD HCONN 10I 0 VALUED* Asa de objetoD HOBJ 10I 0 VALUED* Cuenta de selectores.D SELCNT 10I 0 VALUED* Matriz de selectores de atributosD SELS 10I 0D* Cuenta de atributos de enterosD IACNT 10I 0 VALUED* Matriz de atributos de enterosD INTATR 10I 0D* Longitud del almacenamiento intermedio de atributos de caracteresD CALEN 10I 0 VALUED* Atributos de caracteresD CHRATR * VALUED* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

260 Consulta de programación de aplicaciones (ILE RPG)

Page 275: amqwak00

Capítulo 32. MQOPEN - Abrir objeto

La llamada MQOPEN establece acceso a un objeto. Son válidos los siguientes tiposde objetos:v Cola (incluidas las listas de distribución)v Lista de nombresv Definición de procesov Gestor de colas

Sintaxis

ParámetrosHCONN (entero de 10 dígitos con signo) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

En OS/400 para aplicaciones que se ejecuten en modalidad de compatibilidad,la llamada MQCONN puede omitirse, así como el siguiente valor especificadopara HCONN:

HCDEFHAsa de conexión por omisión.

OBJDSC (MQOD) – entrada/salidaDescriptor de objeto.

Esta estructura identifica el objeto que se va a abrir; vea el “Capítulo 12.MQOD - Descriptor de objeto” en la página 143 para obtener más detalles.

Si el campo ODON del parámetro OBJDSC es el nombre de una cola modelo, secreará una cola local dinámica con los atributos de la cola modelo,independientemente de las opciones de abrir especificadas por el parámetroOPTS. Las operaciones posteriores que utilicen el HOBJ devuelto por la llamadaMQOPEN se realizarán en la nueva cola dinámica, no en la cola modelo. Estoocurre siempre, incluso para las llamadas MQINQ y MQSET. El nombre de lacola modelo del parámetro OBJDSC se sustituye por el nombre de la coladinámica creada. El tipo de cola dinámica viene determinado por el valor delatributo DefinitionType de la cola modelo (vea el “Capítulo 38. Atributos decolas locales y colas modelo” en la página 311). Para obtener información sobrelas opciones de cerrar aplicables a colas dinámicas, vea la descripción de lallamada MQCLOSE.

OPTS (entero de 10 dígitos con signo) – entradaOpciones que controlan la acción de MQOPEN.

Debe especificarse como mínimo una de las opciones siguientes:OOBRW

MQOPEN (HCONN, OBJDSC, OPTS, HOBJ, CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 261

|

|

Page 276: amqwak00

OOINP* (solo una de estas)OOINQOOOUTOOSET

A continuación encontrará más detalles sobre estas opciones; aunque tambiénpueden especificarse otras si es preciso. Si se necesita más de una opción, losvalores pueden añadirse al mismo tiempo (no añada la misma constante másde una vez). Se indican las combinaciones no válidas; las demás combinacionesson válidas. Solo se permiten las opciones que son aplicables al tipo de objetoespecificado por OBJDSC (vea la Tabla 48 en la página 267).

Opciones de acceso: Las opciones siguientes controlan los tipos de operacionesque pueden realizarse con el objeto:

OOINPQAbrir la cola para obtener mensajes utilizando el valor por omisióndefinido por la cola.

La cola se abre para utilizarse con las llamadas MQGET posteriores. Eltipo de acceso puede ser compartido o exclusivo, según sea el valor delatributo de cola DefInputOpenOption; encontrará más información en el“Capítulo 38. Atributos de colas locales y colas modelo” en lapágina 311.

Esta opción solo es válida para colas locales, modelos y alias; no esválida para colas remotas, listas de distribución u objetos que no seancolas.

OOINPSAbrir la cola para obtener mensajes con acceso compartido.

La cola se abre para poder utilizarla con llamadas MQGET posteriores.La llamada puede realizarse satisfactoriamente si la cola ya la haabierto esta u otra aplicación con OOINPS, pero falla con el código derazón RC2042 si la cola se ha abierto actualmente con OOINPX.

Esta opción solo es válida para colas locales, modelos y alias; no esválida para colas remotas, listas de distribución u objetos que no seancolas.

OOINPXAbrir la cola para obtener mensajes con acceso exclusivo.

La cola se abre para poder utilizarla con llamadas MQGET posteriores.La llamada falla con el código de razón RC2042 si esta u otraaplicación ya ha abierto actualmente la cola para entrada de cualquiertipo (OOINPS o OOINPX).

Esta opción solo es válida para colas locales, modelos y alias; no esválida para colas remotas, listas de distribución u objetos que no seancolas.

Las notas siguientes se aplican a estas opciones:v Solo puede especificarse una de estas opciones.v Una llamada MQOPEN con una de estas opciones puede realizarse

satisfactoriamente incluso si el atributo de cola InhibitGet tiene el valorQAGETI (aunque las llamadas MQGET posteriores fallarán mientras elatributo esté establecido en este valor).

262 Consulta de programación de aplicaciones (ILE RPG)

Page 277: amqwak00

v Si la cola se define para no ser compartida (es decir, el atributo Shareabilityde la cola local tiene el valor QANSHR), los intentos de abrir la cola paraacceso compartido se considerarán intentos de abrir la cola con accesoexclusivo.

v Si una cola alias se abre con una de estas opciones, la prueba de usoexclusivo (o la prueba de si otra aplicación tiene el uso exclusivo) serealizará para la cola base en la que se resuelve el alias.

v Estas opciones no son válidas si ODMN es el nombre de un alias de gestor decolas, incluso si el valor del atributo RemoteQMgrName de la definición local deuna cola remota utilizado para el alias del gestor de colas coincide con elnombre del gestor de colas local.

OOBRWAbrir la cola para examinar mensajes.

La cola se abre para poder utilizarla con llamadas MQGET posteriores,con una de las siguientes opciones:

GMBRWFGMBRWNGMBRWC

Esto está permitido incluso si la cola está abierta actualmente paraOOINPX. Una llamada MQOPEN con la opción OOBRW establece uncursor para examinar, y lo coloca lógicamente antes del primer mensajede la cola; vea lo referente al campo GMOPT que se describe en el“Capítulo 8. MQGMO - Opciones de obtener mensaje” en la página 51para obtener más información.

Esta opción solo es válida para colas locales, modelos y alias; no esválida para colas remotas, listas de distribución u objetos que no seancolas. No es válida tampoco si ODMN es el nombre de un alias de gestorde colas, incluso si el valor del atributo RemoteQMgrName de ladefinición local de una cola remota utilizado para el alias del gestor decolas coincide con el nombre del gestor de colas local.

OOOUTAbrir la cola para transferir mensajes.

La cola se abre para poder utilizarla con llamadas MQPUT posteriores.

Una llamada MQOPEN con esta opción puede ser satisfactoria inclusosi el atributo de cola InhibitPut tiene el valor QAPUTI (aunque lasllamadas MQPUT posteriores fallarán mientras el atributo estéestablecido en este valor).

Esta opción es válida para todos los tipos de colas, incluidas las listasde distribución.

OOINQAbrir el objeto para consultar atributos.

La cola, la lista de nombres, la definición de proceso o el gestor decolas se abren para utilizarse con las llamadas MQINQ posteriores.

Esta opción es válida para todos los tipos de objetos, excepto para laslistas de distribución. No es válida si ODMN es el nombre de un alias degestor de colas, incluso si el valor del atributo RemoteQMgrName de ladefinición local de una cola remota utilizado para el alias del gestor decolas coincide con el nombre del gestor de colas local.

Capítulo 32. MQOPEN - Abrir objeto 263

Page 278: amqwak00

OOSETAbrir la cola para establecer atributos.

La cola se abre para utilizarse con las llamadas MQSET posteriores.

Esta opción es válida para todos los tipos de colas, excepto para laslistas de distribución. No es válida si ODMN es el nombre de unadefinición local de una cola remota, incluso si el valor del atributoRemoteQMgrName de la definición local de una cola remota utilizado parael alias del gestor de colas coincide con el nombre del gestor de colaslocal.

Opciones de enlace: Las siguientes opciones se aplican cuando el objeto que seva a abrir es una cola de clúster; estas opciones controlan el enlace del asa decola con una instancia determinada de la cola de clúster:

OOBNDOEnlazar el asa con un destino cuando se abre la cola.

Esta opción permite al gestor de colas local enlazar el asa de cola conuna instancia determinada de la cola destino cuando se abre la cola.Como resultado, todos los mensajes transferidos mediante esta asa seenvían a la misma instancia de la cola destino y siguiendo la mismaruta.

Esta opción solo es válida para colas y afecta solamente a colas declúster. Si se especifica para una cola que no sea de clúster, la opción seignorará.

OOBNDNNo enlazar con un destino específico.

Esta opción hace que el gestor de colas local deje de enlazar el asa decola con una instancia determinada de la cola destino. Como resultado,las llamadas MQPUT posteriores que utilizan esta asa pueden hacerque los mensajes se envíen a otras instancias de la cola destino o a lamisma instancia pero siguiendo otras rutas. Esta opción permitetambién que el gestor de colas local, el gestor de colas remotos o elagente de canal de mensajes (MCA) cambie posteriormente la instanciaseleccionada, según sean las condiciones de la red.

Nota: Las aplicaciones de cliente y servidor que necesiten intercambiaruna serie de mensajes para completar una transacción no debenutilizar OOBNDN (o OOBNDQ cuando DefBind tenga el valorBNDNOT), ya que podría ocurrir que los mensajes posterioresde la serie se enviaran a otras instancias de la aplicación delservidor.

Si se especifica OOBRW o una de las opciones OOINP* para una colade clúster, el gestor de colas está obligado a seleccionar la instancialocal de la cola de clúster. Como resultado, se fija el enlace del asa decola, incluso si se especifica la opción OOBNDN.

Si la opción OOINQ está especificada con OOBNDN, las llamadasMQINQ posteriores con esta asa pueden consultar instancias distintasde la cola de clúster, aunque normalmente todas las instancias tienenlos mismos valores de atributo.

264 Consulta de programación de aplicaciones (ILE RPG)

|

|

||

|||||

|||

||

||||||||

||||||

||||

||||

Page 279: amqwak00

La opción OOBNDN solo es válida para colas y afecta solamente a lascolas de clúster. Si se especifica para una cola que no sea de clúster, laopción se ignorará.

OOBNDQUtilizar el enlace por omisión para la cola.

Esta opción permite al gestor de colas local enlazar el asa de colasegún se define en el atributo de cola DefBind. El valor de este atributoes BNDOPN o BNDNOT.

OOBNDQ es el valor por omisión si no se especifica OOBNDO niOOBNDN.

OOBNDQ se ha definido para ayudar en la documentación delprograma. No se pretende que esta opción se utilice con ninguna de lasotras dos opciones de enlace, pero ya que su valor es cero, esautilización no se puede detectar.

Opciones de contexto: Las opciones siguientes controlan el proceso delcontexto del mensaje:

OOSAVASalvar el contexto al recuperar el mensaje.

La información de contexto se asocia al asa de cola. Esta informaciónse establece a partir del contexto de cualquier mensaje recuperadoutilizando esta asa. Para más información sobre el contexto de mensaje,vea MQSeries Application Programming Guide.

Esta información de contexto puede pasarse a un mensaje que seponga posteriormente en una cola mediante las llamadas MQPUT oMQPUT1. Vea las opciones PMPASI y PMPASA que se describen en el“Capítulo 14. MQPMO - Opciones de poner mensaje” en la página 155.

Hasta que un mensaje se ha recuperado correctamente, el contexto nopuede pasarse a un mensaje que esté transfiriéndose a una cola.

La información de contexto de un mensaje recuperado utilizando unade las opciones de examinar GMBRW* no se salva (aunque los camposde contexto del parámetro MSGDSC se establecen después de examinar).

Esta opción solo es válida para colas locales, modelos y alias; no esválida para colas remotas, listas de distribución u objetos que no seancolas. Debe especificarse una de las opciones OOINP*.

OOPASIPermite pasar contexto de identidad.

Esta opción permite especificar la opción PMPASI en el parámetro PMOcuando se pone un mensaje en una cola, para que la información decontexto de identidad de una cola de entrada abierta con la opciónOOSAVA se asocie al mensaje. Para más información sobre el contextode mensajes, vea MQSeries Application Programming Guide.

Debe especificarse la opción OOOUT.

Esta opción es válida para todos los tipos de colas, incluidas las listasde distribución.

OOPASAPermite pasar todo el contexto.

Capítulo 32. MQOPEN - Abrir objeto 265

|||

||

|||

||

||||

Page 280: amqwak00

Permite especificar la opción PMPASA en el parámetro PMO cuando sepone un mensaje en una cola, para que la información de contexto deidentidad y de origen de una cola de entrada abierta con la opciónOSAVA se asocie al mensaje. Para más información sobre el contexto demensajes, vea MQSeries Application Programming Guide.

Esta opción implica OOPASI, por lo que no es preciso especificar estaúltima. Debe especificarse la opción OOOUT.

Esta opción es válida para todos los tipos de colas, incluidas las listasde distribución.

OOSETIPermite establecer contexto de identidad.

Permite especificar la opción PMSETI en el parámetro PMO cuando sepone un mensaje en una cola, para que la información de contexto deidentidad que contiene el parámetro MSGDSC especificado en lasllamadas MQPUT o MQPUT1 se asocie al mensaje. Para másinformación sobre el contexto de mensaje, vea MQSeries ApplicationProgramming Guide.

Esta opción implica OOPASI, por lo que no es preciso especificar estaúltima. Debe especificarse la opción OOOUT.

Esta opción es válida para todos los tipos de colas, incluidas las listasde distribución.

OOSETAPermite establecer todo el contexto.

Permite especificar la opción PMSETI en el parámetro PMO cuando sepone un mensaje en una cola, para que la información de contexto deidentidad y de origen que contiene el parámetro MSGDSC especificado enlas llamadas MQPUT o MQPUT1 se asocie al mensaje. Para másinformación sobre el contexto de mensaje, vea MQSeries ApplicationProgramming Guide.

Esta opción implica las opciones siguientes, por lo que no es precisoespecificarlas:

OOPASIOOPASAOOSETI

Debe especificarse la opción OOOUT.

Esta opción es válida para todos los tipos de colas, incluidas las listasde distribución.

Otras opciones: Las opciones siguientes controlan la comprobación deautorización y lo que ocurre cuando no hay actividad en el gestor de colas:

OOALTUValidar con el identificador de usuario especificado.

Indica que el campo ODAU del parámetro OBJDSC contiene unidentificador de usuario que debe utilizarse para validar esta llamadaMQOPEN. La llamada solo será satisfactoria si este ODAU tieneautorización para abrir el objeto con las opciones especificadas,independientemente de si el identificador del usuario bajo el que estáejecutándose la aplicación tiene autorización para ello. (Sin embargo,esto no se aplica a ninguna de las opciones de contexto especificadas,

266 Consulta de programación de aplicaciones (ILE RPG)

Page 281: amqwak00

ya que se comprueban siempre con el identificador de usuario bajo elque está ejecutándose la aplicación).

Esta opción es válida para todos los tipos de objetos.

OOFIQFalla si el gestor de colas está en reposo.

Esta opción fuerza que falle la llamada MQOPEN si el estado delgestor de colas es en reposo.

Esta opción es válida para todos los tipos de objetos.

Tabla 48. Opciones MQOPEN válidas para cada tipo de cola

Opción Alias(vea la

nota1)

Localy

Modelo

Remota Clústerno

local

Listade

distri-bución

OOINPQ U U — — —

OOINPS U U — — —

OOINPX U U — — —

OOBRW U U — — —

OOOUT U U U U U

OOINQ U U vea lanota 2

U —

OOSET U U vea lanota 2

— —

OOBNDO (vea la nota 3) U U U U U

OOBNDN (vea la nota 3) U U U U U

OOBNDQ (vea la nota 3) U U U U U

OOSAVA U U — — —

OOPASI U U U U U

OOPASA U U U U U

OOSETI U U U U U

OOSETA U U U U U

OOALTU U U U U U

OOFIQ U U U U U

Notas:

1. La validez de las opciones para los alias depende de la validez de la opción para la cola a la que apunta el alias.

2. Esta opción solo es válida para la definición local de una cola remota.

3. Esta opción se puede especificar para cualquier tipo de cola, aunque si la cola no es de un clúster, la opción se ignorará.

HOBJ (entero de 10 dígitos con signo) – salidaAsa de objeto.

Esta asa representa el acceso que se ha establecido para el objeto. Debeespecificarse en todas las llamadas de gestión de colas ulteriores que operen enel objeto. Esto deja de ser válido cuando se emite la llamada MQCLOSE ocuando termina la unidad de proceso que define el ámbito del asa.

El ámbito del asa está restringido a la unidad de proceso en paralelo máspequeña soportada por la plataforma en la que se ejecuta la aplicación; el asano es válida fuera de la unidad de proceso en paralelo desde la que se haemitido la llamada MQOPEN:v En OS/400, el ámbito del asa es el trabajo que emite la llamada.

Capítulo 32. MQOPEN - Abrir objeto 267

||||||

||||||

||||||

||||||

||||||

|||||||

|||||||

||||||

||||||

||||||

||||||

||||||

||||||

||||||

||||||

||||||

|

Page 282: amqwak00

CMPCOD (entero de 10 dígitos con signo) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero de 10 dígitos con signo) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:RC2136

(2136, X'858') Se han devuelto varios códigos de razón.

Si CMPCOD es CCFAIL:RC2001

(2001, X'7D1') El tipo de cola alias base no es válido.RC2219

(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2266(2266, X'8DA') La rutina de salida de carga de trabajo de clúster hafallado.

RC2268(2268, X'8DC') Las llamadas de poner están inhibidas para todas lascolas del clúster.

RC2189(2189, X'88D') La resolución de nombre de clúster ha fallado.

RC2269(2269, X'8DD') Error de recurso de clúster.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2198(2198, X'896') La cola de transmisión por omisión no es local.

RC2199(2199, X'897') Error de utilización de la cola de transmisión poromisión.

RC2011(2011, X'7DB') El nombre de la cola dinámica no es válido.

RC2017(2017, X'7E1') No hay más asas disponibles.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2019(2019, X'7E3') El asa de objeto no es válida.

RC2194(2194, X'892') El nombre de objeto no es válido para este tipo de objeto.

268 Consulta de programación de aplicaciones (ILE RPG)

||||||||

Page 283: amqwak00

RC2035(2035, X'7F3') No posee autorización para acceder.

RC2100(2100, X'834') El objeto ya existe.

RC2101(2101, X'835') Objeto dañado.

RC2042(2042, X'7FA') Objeto ya abierto con opciones en conflicto.

RC2043(2043, X'7FB') Tipo de objeto no válido.

RC2044(2044, X'7FC') La estructura de descriptor de objeto no es válida.

RC2045(2045, X'7FD') La opción no es válida para este tipo de objeto.

RC2046(2046, X'7FE') Las opciones no son válidas o no son coherentes.

RC2052(2052, X'804') La cola se ha suprimido.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2161(2161, X'871') El gestor de colas está en reposo.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2057(2057, X'809') Tipo de cola no válido.

RC2184(2184, X'888') El nombre de la cola remota no es válido.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2063(2063, X'80F') Se ha producido un error de seguridad.

RC2188(2188, X'88C') La llamada ha sido rechazada por la rutina de salida decarga de trabajo de clúster.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

RC2082(2082, X'822') Cola alias base desconocida.

RC2197(2197, X'895') Cola de transmisión por omisión desconocida.

RC2085(2085, X'825') Nombre de objeto desconocido.

RC2086(2086, X'826') Gestor de colas de objeto desconocido.

RC2087(2087, X'827') Gestor de colas remoto desconocido.

RC2196(2196, X'894') Cola de transmisión desconocida.

RC2091(2091, X'82B') La cola de transmisión no es local.

Capítulo 32. MQOPEN - Abrir objeto 269

|||

Page 284: amqwak00

RC2092(2092, X'82C') Utilización incorrecta de la cola de transmisión.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. El objeto abierto es uno de los siguientes:v Una cola, para:

– Obtener o examinar mensajes (utilizando la llamada MQGET)– Poner mensajes (utilizando la llamada MQPUT).– Consultar los atributos de la cola (utilizando la llamada MQINQ)– Establecer los atributos de la cola (utilizando la llamada MQSET)

Si la cola indicada es una cola modelo, se creará una cola local dinámica.Vea el parámetro OBJDSC que se describe en el “Capítulo 32. MQOPEN -Abrir objeto” en la página 261.

Una lista de distribución es un tipo especial de objeto cola que contiene unalista de colas. Se puede abrir para poner mensajes, pero no para obtener oexaminar mensajes, ni para consultar o establecer atributos.

v Una lista de nombres, para:– Consultar los nombres de las colas que hay en la lista (utilizando la

llamada MQINQ).v Una definición de proceso, para:

– Consultar los atributos de proceso (utilizando la llamada MQINQ).v El gestor de colas, para:

– Consultar los atributos del gestor de colas local (utilizando la llamadaMQINQ).

2. Esto es válido para que una aplicación abra el mismo objeto más de una vez.Se devuelve un asa de objeto distinta para cada apertura. Cada asa devueltase puede utilizar para las funciones para las que se realizó la aperturacorrespondiente.

3. Si el objeto que se va a abrir es una cola, pero no una cola de clúster, todas lasresoluciones de nombre realizadas dentro del gestor de colas local seefectuarán en el momento de la llamada MQOPEN. Esto puede incluir una omás de las siguientes operaciones para una determinada llamada MQOPEN:v Resolución de alias en el nombre de una cola basev Resolución del nombre de una definición local de una cola remota en el

nombre del gestor de colas remoto y en el nombre mediante el cual seconoce a la cola en el gestor de colas remoto

v Resolución del nombre del gestor de colas remoto en el nombre de una colade transmisión.

No obstante, tenga en cuenta que las llamadas MQINQ o MQSET ulteriores enrelación al asa solo se están relacionadas con el nombre que se haya abierto yno con el objeto resultante tras la resolución de nombre. Por ejemplo, si elobjeto abierto es un alias, los atributos devueltos por la llamada MQINQ seránlos atributos del alias, no los atributos de la cola base en la que se resuelve elalias. No obstante, la comprobación de la resolución de nombre siguellevándose a cabo, independientemente de lo especificado en el parámetroOPTS de la MQOPEN correspondiente.

270 Consulta de programación de aplicaciones (ILE RPG)

|||

|

|

Page 285: amqwak00

Si el objeto que se va a abrir es una cola de clúster, se puede efectuar unaresolución de nombre en el momento de la llamada MQOPEN, o se puedeposponer hasta más tarde. El momento en el que se efectúa la resolución estácontrolado por las opciones * especificadas en la llamada MQOPEN:

OOBNDOOOBNDNOOBNDQ

Vea el manual MQSeries Queue Manager Clusters si desea obtener másinformación sobre la resolución de nombre en el caso de las colas de clúster.

4. Los atributos de un objeto pueden cambiar mientras una aplicación tiene elobjeto abierto. En muchos casos, la aplicación no informa de esto, pero endeterminados atributos el gestor de colas marca el asa como no válida. Son lossiguientes:v Cualquier atributo que afecte a la resolución de nombre del objeto. Esto se

aplica independientemente de las opciones de abrir que se utilicen eincluye:– Un cambio en el atributo BaseQName de una cola alias que está abierta.– Un cambio en los atributos de cola remota RemoteQName o

RemoteQMgrName, para cualquier asa que esté abierta para esta cola, o parauna cola que efectúe la resolución mediante esta definición como alias degestor de colas.

– Cualquier cambio que haga que un asa abierta actualmente para una colaremota se resuelva en una cola de transmisión distinta, o no logreresolverse en ninguna. Por ejemplo, un cambio en el atributo XmitQNamede la definición local de una cola remota, si la definición estáutilizándose para una cola o para un alias de gestor de colas.Hay una excepción a esta regla: la creación de una nueva cola detransmisión. Un asa que se habría resuelto para esta cola si hubieraestado presente al abrir el asa, pero que en cambio se ha resuelto en lacola de transmisión por omisión, no será incorrecto.

– Un cambio en el atributo DefXmitQName del gestor de colas. En este caso,todas las asas abiertas que se han resuelto en la cola indicadaanteriormente (solo porque era la cola de transmisión por omisión) semarcan como incorrectos. Las asas que se hayan resuelto en esta cola porcualquier otra razón no se verán afectadas.

v El atributo de cola local Shareability, si hay dos o más asas queproporcionan actualmente acceso OOINPS para esta cola o para una colaque se resuelva en esta cola. Si es así, todas las asas que se abran para estacola o para la cola que se resuelve en esta cola se marcarán como no válidasindependientemente de las opciones de abrir.

v El atributo de cola local Usage, para todas las asas que se abran para estacola o para una cola que se resuelva en esta cola, independientemente delas opciones de abrir.

Cuando un asa se marca como no válida, todas las llamadas siguientes(distintas de MQCLOSE) que utilicen esa asa fallarán con el código de razónRC2041; la aplicación deberá emitir una llamada MQCLOSE (utilizando el asaoriginal) y abrir de nuevo la cola. Las actualizaciones no comprometidas conrespecto al asa antigua procedentes de las llamadas satisfactorias anteriorespodrán seguir comprometiéndose o restituyéndose, según lo que requiera lalógica de la aplicación.

Capítulo 32. MQOPEN - Abrir objeto 271

|||||||

||

Page 286: amqwak00

Si debido al cambio de un atributo sucede lo anterior, deberá utilizarse unaversión especial de “forzar” del mandato.

5. El gestor de colas efectúa comprobaciones de seguridad cuando se emite unallamada MQOPEN para verificar que el identificador de usuario con el que seestá ejecutando la aplicación tiene el nivel de autorización adecuado antes depermitir el acceso. La comprobación de autorización se realiza en el nombredel objeto que está abriéndose y no en el nombre o nombres resultantes de laresolución de un nombre.

6. Si el objeto que se está abriendo es una cola modelo, el gestor de colas efectúauna comprobación de seguridad completa del nombre de la cola modelo y delnombre de la cola dinámica que se crea. Si la cola dinámica resultante se abreposteriormente de forma explícita, se efectuará una comprobación deseguridad de recursos adicional del nombre de la cola dinámica.

7. Una cola remota puede especificarse de una de estas dos maneras en elparámetro OBJDSC de esta llamada (vea lo referente a los campos ODON y ODMNque se describen en el “Capítulo 12. MQOD - Descriptor de objeto” en lapágina 143):v Especificando para ODON el nombre de una definición local de una cola

remota. En este caso, ODMN se refiere al gestor de colas local y puedeespecificarse como blancos.La validación de seguridad realizada por el gestor de colas local compruebasi la aplicación tiene autorización para abrir la definición local de la colaremota.

v Especificando para ODON el nombre de la cola remota tal como la conoce elgestor de colas remoto. En ese caso, ODMN sería el nombre del gestor de colasremoto.La validación de seguridad realizada por el gestor de colas local compruebasi la aplicación tiene autorización para enviar mensajes a la cola detransmisión resultante del proceso de resolución de nombre.

En ambos casos:v El gestor de colas local no envía mensajes al gestor de colas remoto para

comprobar si la aplicación está autorizada a colocar mensajes en la cola.v Cuando llega un mensaje al gestor de colas remoto, este puede rechazarlo si

el usuario que lo ha originado no tiene autorización.8. Las notas siguientes son para la utilización de listas de distribución.

a. Los campos de la estructura MQOD se deben establecer como se indica acontinuación cuando se abra una lista de distribución:v ODVER debe tener el valor ODVER2 o superior.v ODOT debe tener el valor OTQ.v ODON debe estar en blanco o con la serie nula.v ODMN debe estar en blanco o con la serie nula.v ODREC debe ser mayor que cero.v Uno de los campos ODORO y ODORP debe ser cero y el otro distinto de

cero.v No puede haber más de un campo ODRRO y ODRRP distinto de cero.v Debe haber registros de objeto ODREC, direccionados por ODORO o ODORP.

Los registros de objeto deben establecerse en los nombres de las colasdestino que se van a abrir.

v Si uno de los campos ODRRO y ODRRP es distinto de cero, debe haberpresentes registros de respuesta ODREC. Si la llamada se completa con elcódigo de razón RC2136, el gestor de colas establece los registros.

272 Consulta de programación de aplicaciones (ILE RPG)

Page 287: amqwak00

También se puede utilizar MQOD versión 2 para abrir una sola cola queno esté en una lista de distribución, si se asegura que ODREC sea igual acero.

b. Las siguientes opciones de abrir son las únicas válidas en el parámetroOPTS:

OOOUTOOPAS*OOSET*OOALTUOOFIQ

c. Las colas destino de las listas de distribución pueden ser locales, remotas oalias, pero no pueden ser colas modelo. Si se especifica una cola modelo, lacola no se podrá abrir, con el código de razón RC2057. No obstante, estono impide que se puedan abrir satisfactoriamente otras colas de la lista.

d. El código de terminación y el código de razón se establecen como sigue:v Si las operaciones de abrir para las colas de la lista de distribución

terminan todas de la misma forma, con error o satisfactoriamente, losparámetros código de terminación y código de razón se establecen paradescribir el resultado común a todas. Los registros de respuesta MQRR(si son proporcionados por la aplicación) no se establecen en este caso.Por ejemplo, si todas las aperturas se realizan satisfactoriamente, elcódigo de terminación y el código de razón se establecen en CCOK yRCNONE, respectivamente; si todas las aperturas fallan debido a queninguna de las colas existe, los parámetros se establecen en CCFAIL yRC2085.

v Si no todas las operaciones de abrir para las colas de la lista dedistribución fallan o son satisfactorias de la misma forma:– El parámetro código de terminación se establece en CCWARN, si al

menos una de las aperturas se realiza satisfactoriamente, y enCCFAIL si fallan todas.

– El parámetro código de razón se establece en RC2136.– Los registros de respuesta (si son proporcionados por la aplicación) se

establecen en los códigos de terminación y en los códigos de razónindividuales de las colas de la lista de distribución.

e. Cuando se ha abierto satisfactoriamente una lista de distribución, el asaHOBJ devuelta por la llamada se puede utilizar en las siguientes llamadasMQPUT para poner mensajes en las colas de la lista de distribución, y enuna llamada MQCLOSE para restringir el acceso a la lista de distribución.La única opción de cerrar válida para una lista de distribución esCONONE.La llamada MQPUT1 también se puede utilizar para poner un mensaje enuna lista de distribución; la estructura MQOD que define las colas de lalista se especifica como parámetro en esa llamada.

f. Cada destino abierto satisfactoriamente de la lista de distribución se cuentacomo asa aparte cuando se comprueba si la aplicación ha superado elnúmero máximo de asas permitidas (vea el atributo de gestor de colasMaxHandles). Esto ocurre siempre, incluso si dos o más de los destinos de lalista de distribución se resuelven en la misma cola física. Si las llamadasMQOPEN o MQPUT1 para poner en una lista de distribución hacen que elnúmero de asas utilizadas por la aplicación sobrepase el atributoMaxHandles, la llamada falla con el código de razón RC2017.

g. Cada destino que se abra satisfactoriamente tiene el valor de su atributoOpenOutputCount más uno. Si dos o más de los destinos de la lista de

Capítulo 32. MQOPEN - Abrir objeto 273

||||

Page 288: amqwak00

distribución se resuelven realmente en una misma cola física, la cola tieneel valor de su atributo OpenOutputCount más el número de destinos de lalista de distribución que se resuelvan en esta cola.

h. Cualquier cambio realizado en las definiciones de cola que hubiera hechoque un asa se volviera no válida, en el caso de que las colas se hubieranabierto individualmente (por ejemplo, un cambio en la vía de resolución),no implica que el asa de la lista de distribución se vuelva no válida. Noobstante, esto hará que se produzca un error en la cola cuando se utilice elasa de la lista de distribución en una llamada MQPUT posterior.

i. Una lista de distribución puede contener un solo destino.9. Una llamada MQOPEN con la opción OOBRW establece un cursor para

examinar para utilizarlo con las llamadas MQGET que especifiquen el asa deobjeto y una de las opciones de examinar. Esto permite explorar la cola sinalterar su contenido. A continuación, un mensaje que se haya encontradoexaminando podrá eliminarse de la cola utilizando la opción GMMUC.Puede haber varios cursores para examinar activos para una sola aplicación;para ello se emiten varias peticiones MQOPEN para abrir una misma cola.

10. Las notas siguientes se aplican a la utilización de colas de clúster.a. Cuando se abre una cola de clúster por primera vez y el gestor de colas

local no es un gestor de colas de depósito completo, el gestor de colaslocal obtiene la información acerca de la cola de clúster de un gestor decolas de depósito completo. Si la red está ocupada, puede que el gestor decolas local tarde algunos segundos en recibir la información necesaria delgestor de colas de depósito. Como resultado, la aplicación que emite lallamada MQOPEN deberá esperar un máximo de 10 segundos hasta quevuelva el control de la llamada MQOPEN. Si el gestor de colas local norecibe la información necesaria acerca de la cola de clúster en este tiempo,la llamada falla con el código de razón RC2189.

b. Si se abre una cola de clúster y hay varias instancias de la cola en elclúster, la instancia que realmente se abre depende de las opciones que sehayan especificado en la llamada MQOPEN:v Si las opciones especificadas son algunas de las siguientes:

OOBRWOOINPQOOINPXOOINPSOOSET

la instancia de la cola de clúster que se abre debe ser la instancia local.Si no hay ninguna instancia local de la cola, la llamada MQOPEN falla.

v Si las opciones especificadas no son ninguna de las anteriores, peroincluyen alguna de las siguientes:

OOINQOOOUT

la instancia que se abre es la instancia local, si es que existe, o unainstancia remota, en caso contrario. No obstante, la instancia elegida porel gestor de colas la puede modificar una rutina de salida de carga detrabajo de clúster (si existe).

Si desea obtener más información acerca de las colas de clúster, vea el manualMQSeries Queue Manager Clusters.

11. Las aplicaciones iniciadas por un supervisor de desencadenamiento reciben elnombre de la cola asociado a la aplicación cuando esta se inicia. Este nombre

274 Consulta de programación de aplicaciones (ILE RPG)

|

||||||||||

|||

||||||

||

||||

||||

||

Page 289: amqwak00

de cola se puede especificar en el parámetro OBJDSC para abrir la cola. Vea ladescripción de la estructura MQTMC para obtener más detalles.

12. En OS/400, las aplicaciones que se ejecuten en modalidad de compatibilidadse conectan automáticamente al gestor de colas mediante la primera llamadaMQOPEN emitida por la aplicación (si la aplicación no se ha conectado ya conel gestor de colas utilizando la llamada MQCONN).Las aplicaciones que no se ejecuten en moddalidad de compatibilidad debenemitir las llamadas MQCONN o MQCONNX para conectarse al gestor decolas de manera explícita, antes de utilizar la llamada MQOPEN para abrir unobjeto.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQOPEN(HCONN : OBJDSC : OPTS :C HOBJ : CMPCOD : REASON)

La definición prototipo para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQOPEN PR EXTPROC('MQOPEN')D* Asa de conexiónD HCONN 10I 0 VALUED* Descriptor de objetoD OBJDSC 360AD* Opciones que controlan la acción de MQOPEND OPTS 10I 0 VALUED* Asa de objetoD HOBJ 10I 0D* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

Capítulo 32. MQOPEN - Abrir objeto 275

Page 290: amqwak00

276 Consulta de programación de aplicaciones (ILE RPG)

Page 291: amqwak00

Capítulo 33. MQPUT - Poner mensaje

La llamada MQPUT pone un mensaje en una cola o en una lista de distribución.La cola o la lista de distribución deben estar ya abiertas.

Sintaxis

ParámetrosHCONN (entero de 10 dígitos con signo) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

En OS/400 para aplicaciones que se ejecutan en modalidad de compatibilidad,la llamada MQCONN puede omitirse, así como el siguiente valor especificadopara HCONN:

HCDEFHAsa de conexión por omisión.

HOBJ (entero de 10 dígitos con signo) – entradaAsa de objeto.

Esta asa representa la cola a la que debe añadirse el mensaje. El valor de HOBJlo devolvió una llamada MQOPEN anterior que especificaba la opciónOOOUT.

MSGDSC (MQMD) – entrada/salidaDescriptor de mensaje.

Esta estructura describe los atributos del mensaje enviado y recibe informaciónsobre el mensaje un vez completada la petición de poner. Vea el “Capítulo 10.MQMD - Descriptor de mensaje” en la página 85 para obtener más detalles.

Si la aplicación proporciona un MQMD versión 1, los datos del mensaje sepueden prefijar con una estructura MQMDE para especificar los valores de loscampos que existen en MQMD versión 2, pero no en la versión 1. El campoMDFMT en MQMD debe estar definido como FMMDE para indicar que haypresente un MQMDE. Vea el “Capítulo 11. MQMDE - Extensión de descriptorde mensaje” en la página 137 para obtener más detalles.

PMO (MQPMO) – entrada/salidaOpciones que controlan la acción de MQPUT.

Vea el “Capítulo 14. MQPMO - Opciones de poner mensaje” en la página 155para obtener más detalles.

BUFLEN (entero de 10 dígitos con signo) – entradaLongitud del mensaje en BUFFER.

MQPUT (HCONN, HOBJ, MSGDSC, PMO, BUFLEN, BUFFER, CMPCOD,REASON)

© Copyright IBM Corp. 1994, 2000 277

|

Page 292: amqwak00

Cero es válido e indica que el mensaje no contiene datos de la aplicación.

Si el destino es una cola local, o se resuelve en una cola local, el límite superiorde BUFLEN dependerá de si:v El gestor de colas local da soporte a la segmentación.v La aplicación emisora especifica el distintivo que permite al gestor de colas

segmentar el mensaje. Este distintivo es MFSEGA, y se puede especificar enMQMD versión 2, o en MQMDE utilizado con un MQMD versión 1.

Si se cumplen estas dos condiciones, BUFLEN no podrá sobrepasar 999 999 999menos el valor del campo MDOFF en MQMD. El mensaje lógico más largo quese puede transferir es por lo tanto de 999 999 999 bytes (cuando MDOFF es iguala cero). No obstante, las restricciones de recurso impuestas por el sistemaoperativo o por el entorno de ejecución de la aplicación pueden hacer que ellímite sea inferior.

Si no se cumplen una o las dos condiciones anteriores, BUFLEN no puedesobrepasar el menor de los atributos MaxMsgLength de cola o MaxMsgLength degestor de colas.

Si el destino es una cola remota, o se resuelve en una cola remota, se aplicanlas mismas condiciones, pero para cada uno de los gestores de colas por los que elmensaje debe pasar para alcanzar la cola destino; en concreto:1. La cola de transmisión local utilizada para almacenar temporalmente el

mensaje en el gestor de colas local2. Las colas de transmisión intermedias (caso de existir) utilizadas para

almacenar el mensaje en gestores de colas de la ruta entre los gestores de lacola local y destino.

3. La cola destino situada en el gestor de colas destino

El mensaje más largo que se puede transferir dependerá, por lo tanto, de cuálsea la restricción mayor impuesta por estas colas y gestores de colas.

Cuando un mensaje está en una cola de transmisión, la información adicionalreside junto con los datos del mensaje y esto reduce la cantidad de datos deaplicación que pueden transferirse. En esta situación es aconsejable restar losbytes de LNMHD a los valores de MaxMsgLength de las colas de transmisióncuando se determina el límite de BUFLEN.

Nota: Solo el incumplimiento de la condición 1 puede diagnosticarsesincrónicamente (con el código de razón RC2030 o RC2031) cuando setransfiere el mensaje. Si no se satisfacen las condiciones 2 ó 3, el mensajese redirecciona a una cola de mensajes no entregados (de un gestor decolas intermedias o del gestor de colas destino); si sucede lo anterior, segenerará un mensaje de informe si así lo había solicitado el emisor. Siesto ocurriera, se generará un mensaje de informe en caso de que losolicitara el emisor.

BUFFER (serie de bits de 1 byte×BUFLEN) – entradaDatos del mensaje.

Es un almacenamiento intermedio que contiene los datos de la aplicación aenviar.

Si BUFFER contiene datos de tipo carácter y/o numéricos, deberá darse a loscampos MDCSI y MDENC del parámetro MSGDSC los valores adecuados para los

278 Consulta de programación de aplicaciones (ILE RPG)

||||||

Page 293: amqwak00

datos; esto permitirá al receptor del mensaje convertir los datos (si esnecesario) para que estén en el juego de caracteres y en la codificaciónutilizados por el receptor.

Nota: El resto de parámetros de la llamada MQPUT debe estar en el juego decaracteres y la codificación del gestor de colas local (facilitados,respectivamente, por el atributo CodedCharSetId del gestor de colas yENNAT).

CMPCOD (entero de 10 dígitos con signo) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero de 10 dígitos con signo) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:RC2136

(2136, X'858') Se han devuelto varios códigos de razón.RC2049

(2049, X'801') La prioridad del mensaje supera el valor máximosoportado.

RC2104(2104, X'838') Las opciones de informe del descriptor de mensaje no sereconocen.

Si CMPCOD es CCFAIL:RC2004

(2004, X'7D4') El parámetro almacenamiento intermedio no es válido.RC2005

(2005, X'7D5') El parámetro longitud de almacenamiento intermedio noes válido.

RC2219(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2266(2266, X'8DA') Ha fallado la rutina de salida de carga de trabajo declúster.

RC2189(2189, X'88D') Ha fallado la resolución del nombre de clúster.

RC2269(2269, X'8DD') Error de recurso de clúster.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

Capítulo 33. MQPUT - Poner mensaje 279

|||||

Page 294: amqwak00

RC2097(2097, X'831') El asa de cola a la que se hace referencia no salva elcontexto.

RC2098(2098, X'832') Contexto no disponible para el asa de cola a la que sehace referencia.

RC2135(2135, X'857') La estructura de cabecera de distribución no es válida.

RC2013(2013, X'7DD') La fecha de caducidad no es válida.

RC2014(2014, X'7DE') El código de información de retorno no es válido.

RC2258(2258, X'8D2') El identificador de grupo no es válido.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2019(2019, X'7E3') El asa de objeto no es válida.

RC2241(2241, X'8C1') El grupo de mensajes no está completo.

RC2242(2242, X'8C2') El mensaje lógico no está completo.

RC2185(2185, X'889') Especificación de permanencia incoherente.

RC2245(2245, X'8C5') Especificación de unidad de trabajo incoherente.

RC2026(2026, X'7EA') El descriptor de mensaje no es válido.

RC2248(2248, X'8C8') La extensión de descriptor de mensaje no es válida.

RC2027(2027, X'7EB') Falta la cola de respuestas.

RC2249(2249, X'8C9') Los distintivos del mensaje no son válidos.

RC2250(2250, X'8CA') El número de secuencia del mensaje no es válido.

RC2030(2030, X'7EE') La longitud del mensaje es superior al máximo de lacola.

RC2031(2031, X'7EF') La longitud del mensaje es superior al máximo del gestorde colas.

RC2029(2029, X'7ED') El tipo de mensaje del descriptor de mensaje no esválido.

RC2136(2136, X'858') Se han devuelto múltiples códigos de razón.

RC2270(2270, X'8DE') No hay disponible ninguna cola destino.

RC2039(2039, X'7F7') La cola no se ha abierto para salida.

RC2093(2093, X'82D') Cola no abierta para pasar todo el contexto.

RC2094(2094, X'82E') Cola no abierta para pasar el contexto de identidad.

280 Consulta de programación de aplicaciones (ILE RPG)

||

Page 295: amqwak00

RC2095(2095, X'82F') Cola no abierta para establecer todo el contexto.

RC2096(2096, X'830') Cola no abierta para establecer el contexto de identidad.

RC2041(2041, X'7F9') La definición de un objeto ha cambiado desde suapertura.

RC2101(2101, X'835') Objeto dañado.

RC2251(2251, X'8CB') El desplazamiento del segmento de mensaje no esválido.

RC2137(2137, X'859') El objeto no se ha abierto satisfactoriamente.

RC2046(2046, X'7FE') Las opciones no son válidas o no son coherentes.

RC2252(2252, X'8CC') La longitud original no es válida.

RC2149(2149, X'865') Las estructuras PCF no son válidas.

RC2047(2047, X'7FF') La permanencia no es válida.

RC2048(2048, X'800') Un mensaje en una cola dinámica temporal no puede serpermanente.

RC2173(2173, X'87D') La estructura de las opciones de poner mensaje no esválida.

RC2158(2158, X'86E') Los distintivos de registro de poner mensaje no sonválidos.

RC2050(2050, X'802') La prioridad del mensaje no es válida.

RC2051(2051, X'803') Llamadas de poner están inhibidas en la cola.

RC2159(2159, X'86F') Los registros de poner mensaje no son válidos.

RC2052(2052, X'804') La cola se ha suprimido.

RC2053(2053, X'805') La cola ya contiene el número máximo de mensajes.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2161(2161, X'871') El gestor de colas está en reposo.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2056(2056, X'808') No hay espacio disponible para la cola en el disco.

RC2154(2154, X'86A') El número de registros presente no es válido.

Capítulo 33. MQPUT - Poner mensaje 281

||

Page 296: amqwak00

RC2061(2061, X'80D') Las opciones de informe del descriptor de mensaje noson válidas.

RC2156(2156, X'86C') Los registros de respuesta no son válidos.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2253(2253, X'8CD') La longitud de los datos que hay en el segmento demensaje es igual a cero.

RC2188(2188, X'88C') Llamada rechazada por la rutina de salida de carga detrabajo de clúster.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2024(2024, X'7E8') No pueden manejarse más mensajes dentro de la unidadde trabajo actual.

RC2072(2072, X'818') El soporte de punto de sincronismo no está disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

RC2255(2255, X'8CF') La unidad de trabajo no está disponible para serutilizada por el gestor de colas.

RC2257(2257, X'8D1') La versión del MQMD suministrado es incorrecta.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. Las llamadas MQPUT y MQPUT1 pueden utilizarse para colocar mensajes en

una cola; el uso de una u otra dependerá de las circunstancias:v La llamada MQPUT debe utilizarse cuando deben colocarse varios mensajes

en la misma cola.Se emite primero una llamada MQOPEN especificando la opción OOOUT,seguida de una o más peticiones MQPUT para añadir mensajes a la cola;finalmente, la cola se cierra con una llamada MQCLOSE. De este modo elrendimiento es mejor que utilizando repetidamente la llamada MQPUT1.

v La llamada MQPUT1 debe utilizarse cuando solo debe colocarse un mensajeen la cola.Esta llamada encapsula las llamadas MQOPEN, MQPUT y MQCLOSE enuna sola llamada, minimizando por lo tanto el número de llamadas quedeben emitirse.

2. Si una aplicación coloca una secuencia de mensajes en la misma cola, sinutilizar grupos de mensajes, el orden de los mismos se conservará siempre ycuando se cumplan las condiciones que se describen a continuación. Algunasde las condiciones se aplican a colas destino locales y remotas; otrascondiciones se aplican a colas destino remotas.Condiciones para las colas destino remotas

v Todas las llamadas MQPUT están dentro de la misma unidad de trabajo oninguna de ellas está dentro de una unidad de trabajo.

282 Consulta de programación de aplicaciones (ILE RPG)

|||

Page 297: amqwak00

Tenga en cuenta que cuando se transfieren mensajes a una cola determinadadentro de una sola unidad de trabajo, los mensajes de otras aplicacionespueden entremezclarse con la secuencia de mensajes de la cola.

v Todas las llamadas MQPUT se efectúan utilizando la misma asa de objetoHOBJ.En algunos entornos, la secuencia de mensajes también se conserva cuandose utilizan distintas asas, siempre y cuando las llamadas se efectúen desdeuna misma aplicación. El significado de “misma aplicación” lo determina elentorno:– En OS/400, la aplicación es el trabajo.

v Todos los mensajes tienen la misma prioridad.

Condiciones adicionales para las colas destino remotas

v Solo hay una vía desde el gestor de colas emisor al gestor de colas destino.Si existe la posibilidad de que algunos de los mensajes de la secuenciapuedan ir por una vía distinta (por ejemplo, debido a una reconfiguración, ala regulación del tráfico o a que se haya seleccionado otra vía debido altamaño del mensaje), el orden de los mensaje en el gestor de colas destino nopodrá garantizarse.

v Los mensajes no se colocan temporalmente en las colas de mensajes noentregados situadas en los gestores de colas emisores, intermedios o destino.Si uno o más de los mensajes se ponen temporalmente en una cola demensajes no entregados (por ejemplo, porque la cola de transmisión o la coladestino estén temporalmente llenas), los mensajes pueden llegar a la coladestino fuera de secuencia.

v Los mensajes son todos permanentes o todos no permanentes.Si un canal existente en la ruta entre los gestores de colas emisor y destinotiene su atributo CDNPM establecido en NPFAST, los mensajes no permanentespueden pasar delante de los mensajes permanentes, de manera que no seconserva el orden de los mensajes permanentes respecto al de los nopermanentes. No obstante, sí que se conserva el orden de los mensajespermanentes entre ellos, y el de los mensajes no permanentes entre ellos.

Si no se cumplen estas condiciones, se pueden utilizar los grupos de mensajespara conservar el orden de los mensajes, pero esto requiere que tanto laaplicación emisora como la receptora utilicen el soporte de grupos de mensajes.Si desea obtener más información acerca de los grupos de mensajes, vea:v Campo MDMFL en MQMDv Opción PMLOGO en MQPMOv Opción GMLOGO en MQGMO

3. Las notas siguientes se aplican a la utilización de listas de distribución.a. Los mensajes se pueden poner en una lista de distribución utilizando

MQPMO versión 1 o versión 2. Si se utiliza MQPMO versión 1 (o MQPMOversión 2 con PMREC igual a cero), la aplicación no puede proporcionarregistros de poner mensaje ni de respuesta. Esto significa que no seráposible identificar las colas en las que se ha producido algún error, si seenvía el mensaje satisfactoriamente a algunas colas de la lista dedistribución y no a otras.Para que la aplicación pueda proporcionar registros de poner mensaje oregistros de respuesta, el campo PMVER debe establecerse en PMVER2.También se puede utilizar MQPMO versión 2 para enviar mensajes a unasola cola que no esté en una lista de distribución, si se asegura que PMREC esigual a cero.

Capítulo 33. MQPUT - Poner mensaje 283

Page 298: amqwak00

b. El código de terminación y el código de razón se establecen como sigue:v Si las transferencias a las colas de la lista de distribución terminan todas

de la misma forma, con error o satisfactoriamente, los parámetros códigode terminación y código de razón se establecen para describir el resultadocomún a todas. Los registros de respuesta MQRR (si son proporcionadospor la aplicación) no se establecen en este caso.Por ejemplo, si todas las transferencias se realizan satisfactoriamente, elcódigo de terminación y el código de razón se establecen en CCOK yRCNONE, respectivamente; si todas las transferencias fallan debido a quetodas las colas están inhibidas para las transferencias, los parámetros seestablecen en CCFAIL y RC2051.

v Si las transferencias a las colas de la lista de distribución no terminantodas de la misma forma, con error o satisfactoriamente:– El parámetro código de terminación se establece en CCWARN, si al

menos una de las transferencias se realiza satisfactoriamente, y enCCFAIL si todas fallan.

– El parámetro código de razón se establece en RC2136.– Los registros de respuesta (si son proporcionados por la aplicación) se

establecen en los códigos de terminación y en los códigos de razónindividuales de las colas de la lista de distribución.

Si la transferencia a un destino falla debido a que ha fallado la aperturapara ese mismo destino, los campos del registro de respuesta seestablecen en CCFAIL y RC2137; este destino se incluye en PMIDC.

c. Si el destino de la lista de distribución se resuelve en una cola local, elmensaje se coloca en esta cola en su forma normal (esto es, no como unmensaje de lista de distribución). Si se resuelve más de un destino en lamisma cola local, se coloca un mensaje en la cola para cada uno de estosdestinos.Si el destino de la lista de distribución se resuelve en una cola remota, secoloca un mensaje en la cola de transmisión correspondiente. Si se resuelvenvarios destinos en una misma cola de transmisión, se debe colocar en estacola un único mensaje de lista de distribución que contenga estos destinos,incluso si estos destinos no eran contiguos en la lista de destinosproporcionada por la aplicación. No obstante, esto solo se puede hacer si lacola de transmisión da soporte a los mensajes de lista de distribución (vea elatributo de cola DistLists que se describe en el “Capítulo 38. Atributos decolas locales y colas modelo” en la página 311).Si la cola de transmisión no da soporte a listas de distribución, se colocauna copia del mensaje en su forma normal en la cola de trasmisión de cadadestino que utilice esa cola de transmisión.Si la lista de distribución con los datos del mensaje de aplicación esdemasiado grande para una cola transmisión, el mensaje de lista dedistribución se divide en mensajes de lista de distribución más pequeños,cada uno de los cuales contiene menos destinos. Si los datos del mensaje deaplicación solo cabe justo en la cola, los mensajes de lista de distribución nose pueden usar, y el gestor de colas genera una copia del mensaje en suforma normal para cada destino que utilice esa cola de transmisión.Si distintos destinos tienen diferentes prioridades de mensaje opermanencias de mensaje (esto puede ocurrir cuando la aplicación especificaPRQDEF o PEQDEF), los mensajes no se guardan en el mismo mensaje delista de distribución. En su lugar, el gestor de colas genera tantos mensajesde lista de distribución como sean necesarios para albergar los diferentesvalores de prioridad y permanencia.

284 Consulta de programación de aplicaciones (ILE RPG)

Page 299: amqwak00

d. Una transferencia en en una lista de distribución puede dar resultado a:v Un mensaje único de lista de distribución, ov Varios mensajes de lista de distribución más pequeños, ov Una combinación de mensajes de lista de distribución y mensajes

normales, ov Mensajes normales solamente.

El resultado dependerá dependerá de si:v Los destinos en la lista son locales, remotos, o una combinación de

ambos.v Los destinos tienen la misma prioridad de mensaje y la misma

permanencia de mensaje.v Las colas de transmisión pueden contener mensajes de lista de

distribución.v Las longitudes máximas de mensaje de las colas de transmisión son

suficientes para albergar el mensaje en forma de lista de distribución.

No obstante, independientemente de cuál de estos casos se dé, cada mensajefísico que se produzca como resultado (esto es, cada mensaje normal o cadamensaje de lista de distribución que produzca la transferencia) contarácomo un solo mensaje cuando:v Se compruebe si la aplicación ha sobrepasado el número máximo

permitido de mensajes en una unidad de trabajo (vea el atributo degestor de colas MaxUncommittedMsgs).

v Se compruebe si se han cumplido las condiciones desencadenantes.v Se aumente la profundidad de cola y se compruebe si se va a sobrepasar

la profundidad de cola máxima de las colas.e. Cualquier cambio realizado en las definiciones de cola que hubiera hecho

que un asa se volviera no válida, en el caso de que las colas se hubieranabierto individualmente (por ejemplo, un cambio en la vía de resolución),no implica que el asa de la lista de distribución se vuelva no válida. Noobstante, esto hará que se produzca un error en la cola cuando se utilice elasa de la lista de distribución en una llamada MQPUT posterior.

4. Si se transfiere un mensaje con una o más estructuras de cabecera MQ alprincipio de los datos del mensaje de aplicación, el gestor de colas lleva a caboalgunas comprobaciones en las estructuras de cabecera para verificar que sonválidas. Si el gestor de colas detecta un error, la llamada falla con elcorrespondiente código de razón. Las comprobaciones realizadas varían segúnlas estructuras concretas que están presentes. Además, las comprobaciones serealizan solo si se utiliza un MQMD versión 2 o posterior en la llamadaMQPUT o MQPUT1; las comprobaciones no se realizan si se utiliza un MQMDversión 1, incluso en el caso de haya presente un MQMDE al principio de losdatos del mensaje de la aplicación.Las siguientes estructuras de cabecera MQ están validadas completamente porel gestor de colas: MQDH, MQMDE.Para otras estructuras de MQ, el gestor de colas realiza algunas validaciones,pero no comprueba todos los campos. Las estructuras no soportadas por elgestor de colas local y las estructuras que siguen a la primera MQDLH delmensaje no están validadas.Además de las comprobaciones generales en los campos de las estructuras MQ,se deben cumplir las siguientes condiciones:v Una estructura MQ no debe estar dividida en dos o más segmentos – la

estructura debe estar completamente contenida dentro de un segmento.

Capítulo 33. MQPUT - Poner mensaje 285

Page 300: amqwak00

v La suma de las longitudes de las estructuras en un mensaje PCF debe serigual a la longitud que especifica el parámetro BUFLEN en las llamadasMQPUT o MQPUT1. Un mensaje PCF es un mensaje que tiene uno de lossiguientes nombres de formato:

FMADMNFMEVNTFMPCF

v Las estructuras MQ no deben estar trucadas, excepto en las siguientessituaciones en las que se permiten estructuras truncadas:– Mensajes que sean mensajes de informe.– Mensajes PCF.– Mensajes que contienen una estructura MQDLH. (Las estructuras que

siguen a la primera MQDLH pueden estar truncadas; no así las quepreceden a la MQDLH).

5. El parámetro BUFFER mostrado en el ejemplo de programación RPG se declaracomo serie, lo cual limita la longitud máxima del parámetro a 256 bytes. Si senecesita un almacenamiento intermedio más grande, debe declararse elparámetro en lugar de hacerlo como estructura, o como campo de un archivofísico. Esto aumentará la longitud máxima posible hasta aproximadamente 32KB.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQPUT(HCONN : HOBJ : MSGDSC : PMO :C BUFLEN : BUFFER : CMPCOD :C REASON)

La definición prototipo para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQPUT PR EXTPROC('MQPUT')D* Asa de conexiónD HCONN 10I 0 VALUED* Asa de objetoD HOBJ 10I 0 VALUED* Descriptor de mensajeD MSGDSC 364AD* Opciones que controlan la acción de MQPUTD PMO 176AD* Longitud del mensaje en BUFFERD BUFLEN 10I 0 VALUED* Datos del mensajeD BUFFER * VALUED* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

286 Consulta de programación de aplicaciones (ILE RPG)

Page 301: amqwak00

Capítulo 34. MQPUT1 - Poner un mensaje

La llamada MQPUT1 pone un solo mensaje en una cola. No es necesario que lacola esté abierta.

Sintaxis

ParámetrosHCONN (entero de 10 dígitos con signo) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

En OS/400 para aplicaciones que se ejecutan en modalidad de compatibilidad,la llamada MQCONN puede omitirse, así como el siguiente valor especificadopara HCONN:

HCDEFHAsa de conexión por omisión.

OBJDSC (MQOD) – entrada/salidaDescriptor de objeto.

Es una estructura que identifica la cola a la que se añade el mensaje. Vea el“Capítulo 12. MQOD - Descriptor de objeto” en la página 143 para obtener másdetalles.

La aplicación debe tener autorización para abrir la cola para salida. La cola nodebe ser una cola modelo.

MSGDSC (MQMD) – entrada/salidaDescriptor de mensaje.

Esta estructura describe los atributos del mensaje enviado y recibe informaciónde retorno cuando la petición de poner se completa. Vea el “Capítulo 10.MQMD - Descriptor de mensaje” en la página 85 para obtener más detalles.

Si la aplicación proporciona un MQMD versión 1, los datos del mensaje sepueden prefijar con una estructura MQMDE para especificar los valores de loscampos que existen en el MQMD versión 2, pero no en la versión 1. El campoMDFMT en MQMD debe estar definido como FMMDE para indicar que haypresente un MQMDE. Vea el “Capítulo 11. MQMDE - Extensión de descriptorde mensaje” en la página 137 para obtener más detalles.

PMO (MQPMO) – entrada/salidaOpciones que controlan la acción de MQPUT1.

Vea el “Capítulo 14. MQPMO - Opciones de poner mensaje” en la página 155para obtener más detalles.

MQPUT1 (HCONN, OBJDSC, MSGDSC, PMO, BUFLEN, BUFFER, CMPCOD,REASON)

© Copyright IBM Corp. 1994, 2000 287

|

Page 302: amqwak00

BUFLEN (entero de 10 dígitos con signo) – entradaLongitud del mensaje en BUFFER.

Cero es válido e indica que el mensaje no contiene datos de la aplicación. Ellímite superior depende de varios factores; vea la descripción del parámetroBUFLEN de la llamada MQPUT para obtener más detalles.

BUFFER (serie de bits de 1 byte×BUFLEN) – entradaDatos del mensaje.

Es un almacenamiento que contiene los datos de la aplicación a enviar.

Si BUFFER contiene datos de tipo carácter y/o numéricos, deberá darse a loscampos MDCSI y MDENC del parámetro MSGDSC los valores adecuados para losdatos; esto permitirá al receptor del mensaje convertir los datos (si esnecesario) para que estén en el juego de caracteres y en la codificaciónutilizados por el receptor.

Nota: El resto de parámetros de la llamada MQPUT1 debe estar en el juego decaracteres y la codificación del gestor de colas local (facilitados,respectivamente, por el atributo CodedCharSetId del gestor de colas yENNAT).

CMPCOD (entero de 10 dígitos con signo) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCWARN

Aviso (la llamada se ha completado parcialmente).CCFAIL

La llamada ha fallado.

REASON (entero de 10 dígitos con signo) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:RC2136

(2136, X'858') Se han devuelto varios códigos de razón.RC2241

(2241, X'8C1') El grupo de mensajes no está completo.RC2242

(2242, X'8C2') El mensaje lógico no está completo.RC2049

(2049, X'801') La prioridad del mensaje supera el valor máximosoportado.

RC2104(2104, X'838') Las opciones de informe del descriptor de mensaje no sereconocen.

Si CMPCOD es CCFAIL:

288 Consulta de programación de aplicaciones (ILE RPG)

Page 303: amqwak00

RC2001(2001, X'7D1') El tipo de cola alias base no es válido.

RC2004(2004, X'7D4') El parámetro almacenamiento intermedio no es válido.

RC2005(2005, X'7D5') El parámetro longitud de almacenamiento intermedio noes válido.

RC2219(2219, X'8AB') La llamada MQI ha reentrado antes de que secompletara la llamada anterior.

RC2266(2266, X'8DA') Ha fallado la rutina de salida de carga de trabajo declúster.

RC2189(2189, X'88D') Ha fallado la resolución del nombre de clúster.

RC2269(2269, X'8DD') Error de recurso de clúster.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2097(2097, X'831') El asa de cola a la que se hace referencia no salva elcontexto.

RC2098(2098, X'832') Contexto no disponible para el asa de cola a la que sehace referencia.

RC2198(2198, X'896') La cola de transmisión por omisión no es local.

RC2199(2199, X'897') Error de utilización de la cola de transmisión poromisión.

RC2135(2135, X'857') La estructura de la cabecera de distribución no es válida.

RC2013(2013, X'7DD') Fecha de caducidad no válida.

RC2014(2014, X'7DE') El código de información de retorno no es válido.

RC2258(2258, X'8D2') El identificador de grupo no es válido.

RC2017(2017, X'7E1') No hay más asas disponibles.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2026(2026, X'7EA') El descriptor de mensaje no es válido.

RC2248(2248, X'8C8') La extensión de descriptor de mensaje no es válida.

RC2027(2027, X'7EB') Falta la cola de respuestas.

RC2249(2249, X'8C9') Los distintivos del mensaje no son válidos.

RC2250(2250, X'8CA') El número de secuencia del mensaje no es válido.

RC2030(2030, X'7EE') La longitud del mensaje es superior al máximo de lacola.

Capítulo 34. MQPUT1 - Poner un mensaje 289

|||||

Page 304: amqwak00

RC2031(2031, X'7EF') La longitud del mensaje es superior al máximo para elgestor de colas.

RC2029(2029, X'7ED') El tipo de mensaje del descriptor de mensaje no esválido.

RC2136(2136, X'858') Se han devuelto múltiples códigos de razón.

RC2270(2270, X'8DE') No hay ninguna cola destino que esté disponible.

RC2035(2035, X'7F3') No posee autorización para acceder.

RC2101(2101, X'835') Objeto dañado.

RC2042(2042, X'7FA') El objeto ya está abierto con opciones en conflicto.

RC2155(2155, X'86B') Los registros de objeto no son válidos.

RC2043(2043, X'7FB') Tipo de objeto no válido.

RC2044(2044, X'7FC') La estructura del descriptor de objeto no es válida.

RC2251(2251, X'8CB') El desplazamiento del segmento del mensaje no esválido.

RC2046(2046, X'7FE') Las opciones no son válidas o no son coherentes.

RC2252(2252, X'8CC') La longitud original no es válida.

RC2149(2149, X'865') Las estructuras PCF no son válidas.

RC2047(2047, X'7FF') La permanencia no es válida.

RC2048(2048, X'800') Un mensaje en una cola dinámica temporal no puede serpermanente.

RC2173(2173, X'87D') La estructura de las opciones de poner mensaje no esválida.

RC2158(2158, X'86E') No son válidos los distintivos de los registros para ponermensaje.

RC2050(2050, X'802') La prioridad del mensaje no es válida.

RC2051(2051, X'803') Las llamadas de poner están inhibidas en la cola.

RC2159(2159, X'86F') Los registros de poner mensaje no son válidos.

RC2052(2052, X'804') La cola se ha suprimido.

RC2053(2053, X'805') La cola ya contiene el número máximo de mensajes.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

290 Consulta de programación de aplicaciones (ILE RPG)

||

||

Page 305: amqwak00

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2161(2161, X'871') El gestor de colas está en reposo.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2056(2056, X'808') No hay espacio disponible para la cola en el disco.

RC2057(2057, X'809') Tipo de cola no válido.

RC2154(2154, X'86A') El número de registros presentes no es válido.

RC2184(2184, X'888') El nombre de la cola remota no es válido.

RC2061(2061, X'80D') Las opciones de informe del descriptor de mensaje noson válidas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2156(2156, X'86C') Los registros de respuesta no son válidos.

RC2063(2063, X'80F') Se ha producido un error de seguridad.

RC2253(2253, X'8CD') La longitud de los datos del segmento de mensaje escero.

RC2188(2188, X'88C') Llamada rechazada por la rutina de salida de carga detrabajo de clúster.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2024(2024, X'7E8') No pueden manejarse más mensajes dentro de la unidadde trabajo actual.

RC2072(2072, X'818') El soporte de punto de sincronismo no está disponible.

RC2195(2195, X'893') Se ha producido un error inesperado.

RC2082(2082, X'822') Cola alias base desconocida.

RC2197(2197, X'895') Cola de transmisión por omisión desconocida.

RC2085(2085, X'825') Nombre de objeto desconocido.

RC2086(2086, X'826') Gestor de colas de objeto desconocido.

RC2087(2087, X'827') Gestor de colas remoto desconocido.

RC2196(2196, X'894') Cola de transmisión desconocida.

RC2255(2255, X'8CF') La unidad de trabajo no está disponible para que elgestor de colas la utilice.

RC2257(2257, X'8D1') La versión de MQMD suministrada es incorrecta.

Capítulo 34. MQPUT1 - Poner un mensaje 291

|||

Page 306: amqwak00

RC2091(2091, X'82B') La cola de transmisión no es local.

RC2092(2092, X'82C') Utilización incorrecta de la cola de transmisión.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. Las llamadas MQPUT y MQPUT1 pueden utilizarse para colocar mensajes en

una cola; la llamada que se ha de utilizar depende de las circunstancias:v La llamada MQPUT debe utilizarse cuando deben colocarse varios mensajes

en la misma cola.Se emite primero una llamada MQOPEN especificando la opción OOOUT,seguida de una o más peticiones MQPUT para añadir mensajes a la cola;finalmente, la cola se cierra con una llamada MQCLOSE. De este modo elrendimiento es mejor que utilizando repetidamente la llamada MQPUT1.

v La llamada MQPUT1 debe utilizarse cuando solo debe colocarse un mensajeen la cola.Esta llamada encapsula las llamadas MQOPEN, MQPUT y MQCLOSE enuna sola llamada, minimizando por lo tanto el número de llamadas quedeben emitirse.

2. Si una aplicación coloca una secuencia de mensajes en la misma cola, sinutilizar grupos de mensajes, el orden de los mismos se conservará siempre ycuando se cumplan algunas condiciones. No obstante, en la mayoría deentornos, la llamada MQPUT1 no cumple estas condiciones, por lo que no seconserva el orden de los mensajes. En estos entornos, debe utilizarse en sulugar la llamada MQPUT. Vea la descripción de la llamada MQPUT en lasnotas de utilización si desea obtener más detalles.

3. La llamada MQPUT1 se puede utilizar para poner mensajes en listas dedistribución. Si desea información general al respecto, vea la nota de utilización8 en la página 272 para la llamada MQOPEN, y la nota de utilización 3 en lapágina 283 para la llamada MQPUT.Hay algunas diferencias cuando se utiliza la llamada MQPUT1:a. Si la aplicación proporciona los registros de respuesta MQRR, debe

utilizarse para ello la estructura MQOD; no se pueden proporcionar con laestructura MQPMO.

b. El código de razón RC2137 no lo devuelve nunca la llamada MQPUT1 enlos registros de respuesta; si una cola no se abre satisfactoriamente, elregistro de respuesta para esta cola contendrá en este caso el código derazón de la operación de abrir.Si una operación de abrir una cola es satisfactoria con un código determinación CCWARN, el código de terminación y el código de razón delregistro de respuesta para esa cola se sustituyen por los códigos determinación y de razón de la operación de poner.Al igual que ocurre con las llamadas MQOPEN y MQPUT, el gestor decolas establece los registros de respuesta (si existen) solo cuando elresultado de la llamada no es el mismo para todas las colas de la lista dedistribución; esto viene indicado por la llamada que se completa con elcódigo de razón RC2136.

292 Consulta de programación de aplicaciones (ILE RPG)

Page 307: amqwak00

4. Si se utiliza la llamada MQPUT1 para poner un mensaje en una cola de clúster,la llamada se comporta como si se hubiera especificado OOBNDN en lallamada MQOPEN.

5. Si se transfiere un mensaje con una o más estructuras de cabecera MQ alprincipio de los datos del mensaje de aplicación, el gestor de colas lleva a caboalgunas comprobaciones en las estructuras de cabecera para verificar que sonválidas. Si desea obtener más información al respecto, vea la nota de utilización4 en la página 285 para la llamada MQPUT.

6. Si se produce más de una situación de aviso (vea el parámetro CMPCOD), sedevolverá el primero de los siguientes códigos de razón que sea aplicable:a. RC2136b. RC2242c. RC2241d. RC2049 o RC2104

7. El parámetro BUFFER mostrado en el ejemplo de programación RPG se declaracomo una serie, lo cual limita la longitud máxima del parámetro a 256 bytes. Sise necesita un almacenamiento intermedio más grande, debe declararse elparámetro en lugar de hacerlo como una estructura, o como un campo de unarchivo físico. Esto aumentará la longitud máxima posible hastaaproximadamente 32 KB.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQPUT1(HCONN : OBJDSC : MSGDSC :C PMO : BUFLEN : BUFFER :C CMPCOD : REASON)

La definición prototipo para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQPUT1 PR EXTPROC('MQPUT1')D* Asa de conexiónD HCONN 10I 0 VALUED* Descriptor de objetoD OBJDSC 360AD* Descriptor de mensajeD MSGDSC 364AD* Opciones que controlan la acción de MQPUT1D PMO 176AD* Longitud del mensaje en BUFFERD BUFLEN 10I 0 VALUED* Datos del mensajeD BUFFER * VALUED* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

Capítulo 34. MQPUT1 - Poner un mensaje 293

|||

Page 308: amqwak00

294 Consulta de programación de aplicaciones (ILE RPG)

Page 309: amqwak00

Capítulo 35. MQSET - Establecer atributos de objeto

La llamada MQSET se utiliza para cambiar los atributos de un objeto representadopor un asa. El objeto debe ser una cola.

Sintaxis

ParámetrosHCONN (entero de 10 dígitos con signo) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. El valor de HCONN lodevolvió una llamada MQCONN o MQCONNX anterior.

En OS/400 para aplicaciones que se ejecutan en modalidad de compatibilidad,la llamada MQCONN puede omitirse, así como el siguiente valor especificadopara HCONN:

HCDEFHAsa de conexión por omisión.

HOBJ (entero de 10 dígitos con signo) – entradaAsa de objeto.

Esta asa representa el objeto cola cuyos atributos se han de establecer. El asa ladevolvió una llamada MQOPEN anterior que especificaba la opción OOSET.

SELCNT (entero de 10 dígitos con signo) – entradaCuenta de selectores.

Esta es la cuenta de selectores suministrados en la matriz SELS. Es el númerode atributos que deben establecerse. Cero es un valor válido. El númeromáximo permitido es 256.

SELS (entero de 10 dígitos con signo×SELCNT) – entradaMatriz de selectores de atributos.

Es una matriz de selectores de atributos SELCNT; cada selector identifica unatributo (de tipo entero o carácter) cuyo valor debe establecerse.

Cada selector debe ser válido para el tipo de cola representado por HOBJ. Solose permiten determinados valores IA* y CA*; estos valores se indican acontinuación.

Los selectores pueden especificarse en cualquier orden. Los valores deatributos que correspondan a selectores de atributos de tipo entero (selectoresIA*) deben especificarse en INTATR en el mismo orden en que dichos selectoresaparecen en SELS. Los valores de atributos que correspondan a selectores deatributos de tipo carácter (selectores CA*) deben especificarse en CHRATR en el

MQSET (HCONN, HOBJ, SELCNT, SELS, IACNT, INTATR, CALEN,CHRATR, CMPCOD, REASON)

© Copyright IBM Corp. 1994, 2000 295

|

Page 310: amqwak00

mismo orden en que aparecen dichos selectores. Los selectores IA* puedenestar intercalados con selectores CA*; solo es importante el orden relativodentro de cada tipo.

Se puede especificar el mismo selector más de una vez; si lo hace, el últimovalor especificado para un selector determinado será el que surta efecto.

Notas:

1. Los selectores de atributos de tipo entero y de tipo carácter se asignandentro de dos rangos distintos; los selectores IA* están comprendidos entreIAFRST y IALAST, y los selectores CA* están comprendidos entre CAFRSTy CALAST.Para cada rango, las constantes IALSTU y CALSTU definen el valor másalto que puede aceptar el gestor de colas.

2. Si todos los selectores IA* aparecen en primer lugar, podrán utilizarse losmismos números de elementos para direccionar los elementoscorrespondientes de las matrices SELS y INTATR.

Para cada selector CA* de las siguientes descripciones, la constante que definela longitud en bytes de la serie que se necesita en CHRATR se da entreparéntesis.

Selectores para todos los tipos de colaIAIPUT

Indica si están permitidas operaciones de poner.

Selectores para colas localesCATRGD

Datos desencadenantes (LNTRGD).IADIST

Soporte de lista de distribución.IAIGET

Indica si están permitidas operaciones de obtener.IATRGC

Control de desencadenamiento.IATRGD

Profundidad desencadenante.IATRGP

Prioridad de mensaje umbral para desencadenantes.IATRGT

Tipo de desencadenante.

Selectores para colas aliasIAIGET

Indica si están permitidas las operaciones de obtener.

Con esta llamada no puede establecerse ningún otro atributo.

IACNT (entero de 10 dígitos con signo) – entradaCuenta de atributos de tipo entero.

Es el número de elementos de la matriz INTATR y debe tener, como mínimo, elnúmero de selectores IA* del parámetro SELS. Cero es un valor válido si nohay ninguno.

INTATR (entero de 10 dígitos con signo×IACNT) – entradaMatriz de atributos de tipo entero.

296 Consulta de programación de aplicaciones (ILE RPG)

Page 311: amqwak00

Es una matriz de valores de atributos de tipo entero IACNT. Estos valores deatributos deben estar en el mismo orden que los selectores IA* en la matrizSELS.

CALEN (entero de 10 dígitos con signo) – entradaLongitud del almacenamiento intermedio de atributos de tipo carácter.

Es la longitud en bytes del parámetro CHRATR y debe ser como mínimo la sumade las longitudes de los atributos de tipo carácter especificados en la matrizSELS. Cero es un valor válido si no hay selectores CA* en SELS.

CHRATR (serie de caracteres de 1 byte×CALEN) – entradaAtributos de tipo carácter.

Es el almacenamiento intermedio que contiene los valores de los atributos detipo carácter concatenados. La longitud del almacenamiento intermedio laindica el parámetro CALEN.

Los atributos de tipo carácter deben especificarse en el mismo orden que losselectores CA* de la matriz SELS. La longitud de cada atributo de tipo carácteres fija (vea SELS). Si el valor que se ha de establecer para un atributo contienemenos caracteres que no sean blancos que la longitud del atributo, el valor deCHRATR deberá rellenarse con blancos a la derecha para que el valor del atributocoincida con la longitud definida del atributo.

CMPCOD (entero de 10 dígitos con signo) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

La llamada se ha completado satisfactoriamente.CCFAIL

La llamada ha fallado.

REASON (entero de 10 dígitos con signo) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCFAIL:RC2219

(2219, X'8AB') La llamada MQI reentró antes de que se completase lallamada anterior.

RC2006(2006, X'7D6') La longitud de los atributos de tipo carácter no es válida.

RC2007(2007, X'7D7') La serie de atributos de tipo carácter no es válida.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

RC2018(2018, X'7E2') El asa de conexión no es válida.

RC2019(2019, X'7E3') El asa de objeto no es válida.

RC2020(2020, X'7E4') El valor del atributo de cola para inhibir obtener o parainhibir poner no es válido.

Capítulo 35. MQSET - Establecer atributos de objeto 297

Page 312: amqwak00

RC2021(2021, X'7E5') La cuenta de atributos de tipo entero no es válida.

RC2023(2023, X'7E7') La matriz de atributos de tipo entero no es válida.

RC2040(2040, X'7F8') La cola no se ha abierto para establecer.

RC2041(2041, X'7F9') La definición de objeto ha cambiado desde su apertura.

RC2101(2101, X'835') Objeto dañado.

RC2052(2052, X'804') La cola se ha suprimido.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o esdesconocido.

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

RC2065(2065, X'811') La cuenta de selectores no es válida.

RC2067(2067, X'813') El selector de atributo no es válido.

RC2066(2066, X'812') La cuenta de selectores es demasiado grande.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2075(2075, X'81B') El valor del atributo de control de desencadenamiento noes válido.

RC2076(2076, X'81C') El valor del atributo de profundidad desencadenante noes válido.

RC2077(2077, X'81D') El valor del atributo de prioridad de mensajedesencadenante no es válido.

RC2078(2078, X'81E') El valor del atributo de tipo de desencadenante no esválido.

RC2195(2195, X'893') Se ha producido un error inesperado.

Para más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Notas de utilización1. Utilizando esta llamada, la aplicación puede especificar una matriz de atributos

de tipo entero o una colección de series de atributo de tipo carácter o ambascosas. Todos los atributos especificados se establecen simultáneamente si no seproducen errores. Si se produce un error (por ejemplo, si un selector no esválido o se intenta estableber un atributo en un valor que no es válido), lallamada falla y no se establece ningún atributo.

298 Consulta de programación de aplicaciones (ILE RPG)

Page 313: amqwak00

2. Los valores de los atributos pueden determinarse utilizando la llamadaMQINQ; vea el “Capítulo 31. MQINQ - Consultar los atributos de objeto” en lapágina 251 si desea obtener más detalles.

Nota: No todos los atributos cuyos valores pueden consultarse con la llamadaMQINQ pueden cambiar sus valores utilizando la llamada MQSET. Porejemplo, con esta llamada no pueden establecerse atributos de objetoproceso o de gestor de colas.

3. Los cambios de atributos se conservan con los sucesivos rearranques del gestorde colas (a diferencia de las alteraciones en las colas dinámicas temporales, lascuales no permanecen tras los sucesivos rearranques del gestor de colas).

4. No es posible cambiar los atributos de una cola modelo utilizando la llamadaMQSET. No obstante, si abre una cola modelo utilizando la llamada MQOPENcon la opción OOSET, puede utilizar la llamada MQSET para establacer losatributos de la cola dinámica creada por la llamada MQOPEN.

5. Si el objeto que se está estableciendo es una cola de clúster, debe haber unainstancia local de la cola de clúster para que la apertura sea satisfactoria.

6. Para más información sobre los atributos de objeto, consulte el Capítulo 36.Atributos de los objetos de MQSeries.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQSET(HCONN : HOBJ : SELCNT :C SELS(1) : IACNT : INTATR(1) :C CALEN : CHRATR : CMPCOD :C REASON)

La definición prototipo para la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQSET PR EXTPROC('MQSET')D* Asa de conexiónD HCONN 10I 0 VALUED* Asa de objetoD HOBJ 10I 0 VALUED* Cuenta de selectoresD SELCNT 10I 0 VALUED* Matriz de selectores de atributosD SELS 10I 0D* Cuenta de atributos de tipo enteroD IACNT 10I 0 VALUED* Matriz de atributos de tipo enteroD INTATR 10I 0D* Longitud de almacenamiento intermedio de atributos de tipo carácterD CALEN 10I 0 VALUED* Atributos de tipo carácterD CHRATR * VALUED* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

Capítulo 35. MQSET - Establecer atributos de objeto 299

||

Page 314: amqwak00

Invocación RPG

300 Consulta de programación de aplicaciones (ILE RPG)

Page 315: amqwak00

Parte 3. Atributos de objeto

Capítulo 36. Atributos de los objetos deMQSeries . . . . . . . . . . . . . . 303

Capítulo 37. Atributos de todas las colas . . . 305

Capítulo 38. Atributos de colas locales y colasmodelo . . . . . . . . . . . . . . . 311

Capítulo 39. Atributos de definiciones localesde colas remotas . . . . . . . . . . . 327

Capítulo 40. Atributos de colas alias . . . . . 329

Capítulo 41. Atributos de las listas de nombres 331

Capítulo 42. Atributos de las definiciones deproceso . . . . . . . . . . . . . . . 333

Capítulo 43. Atributos del gestor de colas . . . 337

© Copyright IBM Corp. 1994, 2000 301

Page 316: amqwak00

Atributos de objeto

302 Consulta de programación de aplicaciones (ILE RPG)

Page 317: amqwak00

Capítulo 36. Atributos de los objetos de MQSeries

Los objetos de MQSeries pueden ser:v Canalesv Colasv Gestores de colasv Listas de nombresv Procesos

Esta parte del manual describe los atributos (o propiedades) de los objetos deMQSeries a los que se puede acceder mediante la API, que son las colas, losgestores de colas, las listas de nombres y los procesos.

Las listas de nombres están soportadas en los siguientes entornos: AIX, clienteDOS, HP-UX, OS/390, OS/2, OS/400, Sun Solaris, cliente Windows y WindowsNT.

Las definiciones de proceso no están soportadas en los siguientes entornos:Windows de 16 bits, Windows de 32 bits y VSE/ESA.

Los atributos se agrupan según el tipo de objeto al que se aplican; vea :v “Capítulo 37. Atributos de todas las colas” en la página 305v “Capítulo 38. Atributos de colas locales y colas modelo” en la página 311v “Capítulo 39. Atributos de definiciones locales de colas remotas” en la página 327v “Capítulo 40. Atributos de colas alias” en la página 329v “Capítulo 41. Atributos de las listas de nombres” en la página 331v “Capítulo 42. Atributos de las definiciones de proceso” en la página 333v “Capítulo 43. Atributos del gestor de colas” en la página 337

En cada sección, los atributos se indican en orden alfabético.

Nota: Los nombres de los atributos de los objetos aparecen en el manual con elformato con que se utilizan en las llamadas MQINQ y MQSET. Al utilizarlos mandatos de MQSeries para definir, alterar o visualizar los atributos, seemplean las palabras clave que aparecen en las descripciones de losmandatos, en el manual MQSeries Consulta de mandatos.

© Copyright IBM Corp. 1994, 2000 303

|

Page 318: amqwak00

Atributos

304 Consulta de programación de aplicaciones (ILE RPG)

Page 319: amqwak00

Capítulo 37. Atributos de todas las colas

La siguiente tabla resume los atributos que son comunes a todos los tipos de cola(excepto cuando se indique lo contrario). Los atributos se describen en ordenalfabético.

Tabla 49. Atributos de todas las colas

Atributo Descripción Página

AlterationDate Fecha en la que se cambió la definición por últimavez

305

AlterationTime Hora a la que se cambió la definición por últimavez

305

ClusterName Nombre del clúster al que pertenece la cola 305

ClusterNamelist Nombre del objeto lista de nombres que contienelos nombres de los clústeres a los que pertenece lacola

306

DefBind Enlace por omisión 306

DefPersistence Permanencia del mensaje por omisión 306

DefPriority Prioridad del mensaje por omisión 307

InhibitGet Controla si están permitidas las operaciones deobtener en la cola

308

InhibitPut Controla si están permitidas las operaciones deponer en la cola

308

QDesc Descripción de la cola 308

QName Nombre de la cola 309

QType Tipo de cola 309

Scope Controla si también existe la entrada para la colaen un directorio de celdas

309

AlterationDate (serie de caracteres de 12 bytes)Fecha en la que se cambió la definición por última vez.

Es la fecha en la que se cambió la definición por última vez. El formato de lafecha es AAAA-MM-DD, rellenado con dos blancos finales para que la longitud seaigual a 12 bytes.

Para determinar el valor de este atributo, utilice el selector CAALTD con lallamada MQINQ. La longitud de este atributo la indica LNDATE.

AlterationTime (serie de caracteres de 8 bytes)Hora a la que se cambió la definición por última vez.

Es la hora a la que se cambió la definición por última vez. El formato de lahora es HH.MM.SS.

Para determinar el valor de este atributo, utilice el selector CAALTT con lallamada MQINQ. La longitud de este atributo la indica LNTIME.

ClusterName (serie de caracteres de 48 bytes)Nombre del clúster al que pertenece la cola.

© Copyright IBM Corp. 1994, 2000 305

||||

||||

|||

||||

|

|||

||

|||

||

||

||

||

||

Page 320: amqwak00

Es el nombre del clúster al que pertenece la cola. Si la cola pertenece a más deun clúster, ClusterNamelist especifica el nombre de un objeto lista de nombresque identifica los clústeres, y ClusterName está en blanco. Al menos uno de losatributos ClusterName y ClusterNamelist debe estar en blanco. Este atributo noes aplicable a las colas modelo.

Para determinar el valor de este atributo, utilice el selector CACLN con lallamada MQINQ. La longitud de este atributo la indica LNCLUN.

ClusterNamelist (serie de caracteres de 48 bytes)Nombre del objeto lista de nombres que contiene los nombres de los clústeres alos que pertenece la cola.

Es el nombre del objeto lista de nombres que contiene los nombres de losclústeres a los que pertenece la cola. Si la cola solo pertenece a un clúster, elobjeto lista de nombres contiene un solo nombre. Asimismo, se puede utilizarClusterName para especificar el nombre del clúster, en cuyo casoClusterNamelist quedará en blanco. Al menos uno de los atributosClusterName y ClusterNamelist debe estar en blanco. Este atributo no esaplicable a las colas modelo.

Para determinar el valor de este atributo, utilice el selector CACLNL con lallamada MQINQ. La longitud de este atributo la indica LNNLN.

DefBind (entero de 10 dígitos con signo)Enlace por omisión.

Es el enlace por omisión que se utiliza cuando se especifica OOBNDQ en lallamada MQOPEN y la cola es de un clúster. Este atributo no es aplicable a lascolas modelo.

El valor es uno de los siguientes:

BNDOPNEnlace fijado por la llamada MQOPEN.

BNDNOTEnlace no fijo.

Para determinar el valor de este atributo, utilice el selector IADBND con lallamada MQINQ.

DefPersistence (entero de 10 dígitos con signo)Permanencia de mensaje por omisión.

Es la permanencia por omisión de los mensajes que hay en la cola. Es aplicablesi se especifica PEQDEF en el descriptor de mensaje cuando se transfiere elmensaje.

Si hay más de una definición en la vía de resolución de nombres de cola, lapermanencia por omisión se toma del valor de este atributo en la primeradefinición de la vía cuando se realiza la llamada MQPUT o MQPUT1. Estapuede ser:v Una cola aliasv Una cola localv Una definición local de una cola remotav Un alias de gestor de colasv Una cola de transmisión (por ejemplo, la cola DefXmitQName)

Atributos - todas las colas

306 Consulta de programación de aplicaciones (ILE RPG)

|||||

||

|||

|||||||

||

||

|||

|

||

||

||

Page 321: amqwak00

El valor es uno de los siguientes:

PEPEREl mensaje es permanente.

El mensaje sigue existiendo tras los rearranques del gestor de colas.Dado que las colas dinámicas temporales no siguen existiendo tras losrearranques del gestor de colas, los mensajes permanentes no puedencolocarse en este tipo de colas, pero sí en colas dinámicas permanentesy colas predefinidas.

PENPEREl mensaje no es permanente.

El mensaje no sigue existiendo tras los rearranques del gestor de colas.Esto se aplica aunque se encuentre una copia intacta del mensaje en elalmacenamiento auxiliar durante el procedimiento de rearranque.

En una cola puede haber mensajes permanentes y no permanentes.

Para determinar el valor de este atributo, utilice el selector IADPER con lallamada MQINQ.

DefPriority (entero de 10 dígitos con signo)Prioridad del mensaje por omisión

Es la prioridad por omisión de los mensajes de la cola. Esto es aplicable si seespecifica PRQDEF en el descriptor de mensaje al transferirlo a la cola.

Si hay más de una definición en la vía de resolución de nombres de cola, lapermanencia por omisión del mensaje se toma del valor de este atributo en laprimera definición de la vía en el momento de realizarse la operación de poner.Esta puede ser:v Una cola aliasv Una cola localv Una definición local de una cola remotav Un alias de gestor de colasv Una cola de transmisión (por ejemplo, la cola DefXmitQName)

La forma en la que se coloca un mensaje en una cola depende del valor delatributo MsgDeliverySequence de la cola:v Si el atributo MsgDeliverySequence es MSPRIO, la posición lógica en la que

se coloca el mensaje en la cola dependerá del valor del campo MDPRI en eldescriptor de mensajes.

v Si el atributo MsgDeliverySequence es MSFIFO, los mensajes se colocan en lacola como si tuvieran la misma prioridad que el DefPriority de la colaresuelta, independientemente del valor del campo MDPRI en el descriptor demensaje. No obstante, el campo MDPRI retendrá el valor especificado por laaplicación que transfirió el mensaje. Vea el atributo MsgDeliverySequence quese describe en el “Capítulo 38. Atributos de colas locales y colas modelo” enla página 311 para obtener más información.

Las prioridades van de cero (la inferior) a MaxPriority (la más alta); vea elatributo MaxPriority que se describe en el “Capítulo 43. Atributos del gestorde colas” en la página 337.

Para determinar el valor de este atributo, utilice el selector IADPRI con lallamada MQINQ.

Atributos - todas las colas

Capítulo 37. Atributos de todas las colas 307

Page 322: amqwak00

InhibitGet (entero de 10 dígitos con signo)Controla si están permitidas las operaciones de obtener para esta cola.

Este atributo se aplica únicamente a colas locales, modelo y alias.

Si la cola es una cola alias, las operaciones de obtener deben estar permitidaspara la cola base y la cola alias en el momento de la operación de obtener paraque la llamada MQGET sea satisfactoria.

El valor es uno de los siguientes:

QAGETISe inhiben las operaciones de obtener.

Las llamadas MQGET fallan con el código de razón RC2016. Estoincluye las llamadas MQGET que especifican GMBRWF o GMBRWN.

Nota: Si una llamada MQGET que funcione dentro de una unidad detrabajo se completa satisfactoriamente, cambiar el valor delatributo InhibitGet posteriormente por QAGETI no evitará quela unidad de trabajo quede comprometida.

QAGETASe permiten las operaciones de obtener.

Para determinar el valor de este atributo, utilice el selector IAIGET con lallamada MQINQ. Para cambiar el valor de este atributo, utilice la llamadaMQSET.

InhibitPut (entero de 10 dígitos con signo)Controla si están permitidas las operaciones de poner para esta cola.

Si hay más de una definición en la vía de resolución de nombres de cola, lasoperaciones de poner deben estar permitidas para cada definición de la vía(incluidas todas las definiciones de alias del gestor de colas) en el momento dela operación de poner para que las llamadas MQPUT o MQPUT1 seansatisfactorias.

El valor es uno de los siguientes:

QAPUTISe inhiben las operaciones de poner.

Las llamadas MQPUT y MQPUT1 fallan con el código de razónRC2051.

Nota: Si una llamada MQPUT que funcione dentro de una unidad detrabajo se completa satisfactoriamente, cambiar el valor delatributo InhibitPut posteriormente por QAPUTI no evitará quela unidad de trabajo quede comprometida.

QAPUTASe permiten las operaciones de poner.

Para determinar el valor de este atributo, utilice el selector IAIPUT con lallamada MQINQ. Para cambiar el valor de este atributo, utilice la llamadaMQSET.

QDesc (serie de caracteres de 64 bytes)Descripción de la cola.

Atributos - todas las colas

308 Consulta de programación de aplicaciones (ILE RPG)

Page 323: amqwak00

Es un campo que puede utilizarse para un comentario descriptivo. Elcontenido del campo no es significativo para el gestor de colas, aunque dichogestor puede necesitar que el campo contenga únicamente caracteres quepuedan visualizarse. No puede contener caracteres nulos; si es necesario, serellenará a la derecha con blancos. En una instalación DBCS, el campo puedecontener caracteres DBCS (sujetos a una longitud máxima del campo de 64bytes).

Nota: Si este campo contiene caracteres que no se encuentran en el juego decaracteres del gestor de colas (definido en el atributo de gestor de colasCodedCharSetId), los caracteres pueden convertirse erróneamente si elcampo se envía a otro gestor de colas.

Para determinar el valor de este atributo, utilice el selector CAQD con lallamada MQINQ. La longitud de este atributo la indica LNQD.

QName (serie de caracteres de 48 bytes)Nombre de la cola.

Es el nombre de una cola definida en el gestor de colas local. Para obtener másinformación sobres nombres de cola, vea MQSeries Application ProgrammingGuide. Todas las colas definidas en un gestor de colas comparten el mismoespacio de nombre de cola. Por lo tanto, una cola QTLOC y una cola QTALSno pueden tener el mismo nombre.

Para determinar el valor de este atributo, utilice el selector CAQN con lallamada MQINQ. La longitud de este atributo la indica LNQN.

QType (entero de 10 dígitos con signo)Tipo de cola.

Este atributo tiene uno de los valores siguientes:QTALS

Definición de cola alias.QTCLUS

Cola de clúster.QTLOC

Cola local.QTREM

Definición local de una cola remota.

Para determinar el valor de este atributo, utilice el selector IAQTYP con lallamada MQINQ.

Scope (entero de 10 dígitos con signo)Controla si también existe la entrada para esta cola en un directorio de celdas.

El directorio de celdas viene proporcionado por el Servicio de nombresinstalable. Este atributo se aplica únicamente a colas locales y alias, y adefiniciones locales de colas remotas. No es aplicable a las colas modelo.

El valor es uno de los siguientes:

SCOQMÁmbito de gestor de colas.

La definición de cola tiene un ámbito de gestor de colas. Esto significaque la definición de la cola no se extiende más allá del gestor de colas

Atributos - todas las colas

Capítulo 37. Atributos de todas las colas 309

||

Page 324: amqwak00

propietario de la cola. Para abrir la cola para salida desde algún otrogestor de colas, o se especifica el nombre del gestor de colaspropietario o el otro gestor de colas debe tener una definición local dela cola.

SCOCELÁmbito de celda.

La definición de cola tiene un ámbito de celda. Esto significa que ladefinición de la cola también se encuentra en un directorio de celdasdisponible para todos los gestores de colas de la celda. La cola sepuede abrir para salida desde cualquiera de los gestores de colas de lacelda tan solo con especificar el nombre de la cola; no hace faltaespecificar el nombre del gestor de colas que es propietario de la cola.No obstante, la definición de cola no está disponible para ningúngestor de colas de la celda que también tenga una definición local deuna cola con ese nombre, ya que la definición local tiene precedencia.

El directorio de celdas lo proporciona un servicio de nombresinstalable. Por ejemplo, el servicio de nombres DCE inserta ladefinición de cola en el directorio DCE.

Las colas modelo y las dinámicas no tienen ámbito de celda.

Este valor solo es válido si se ha configurado un servicio de nombresque dé soporte a un directorio de celdas.

Para determinar el valor de este atributo, utilice el selector IASCOP con lallamada MQINQ.

El soporte de este atributo está sujeto a estas restricciones:v En OS/400, el atributo está soportado, pero solo es válido SCOQM.

Atributos - todas las colas

310 Consulta de programación de aplicaciones (ILE RPG)

Page 325: amqwak00

Capítulo 38. Atributos de colas locales y colas modelo

La siguiente tabla resume los atributos que son específicos de las colas locales y lascolas modelo (excepto cuando se indique lo contrario). Los atributos se describenen orden alfabético.

Tabla 50. Atributos de colas locales y modelo

Atributo Descripción Página

BackoutRequeueQName Nombre de cola de recolocación en cola derestitución excesiva

312

BackoutThreshold Umbral de restitución 312

CreationDate Fecha de creación de la cola 312

CreationTime Hora de creación de la cola 312

CurrentQDepth Profundidad de cola actual 313

DefinitionType Tipo de definición de cola 313

DefInputOpenOption Opción de apertura para entrada por omisión 314

DistLists Soporte de lista de distribución 314

HardenGetBackout Indica si va a mantenerse una cuenta exacta derestitución

315

InitiationQName Nombre de la cola de inicio 316

MaxMsgLength Longitud máxima del mensaje en bytes 316

MaxQDepth Profundidad máxima de la cola 317

MsgDeliverySequence Secuencia de entrega del mensaje 317

OpenInputCount Número de aperturas para entrada 318

OpenOutputCount Número de aperturas para salida 318

ProcessName Nombre de proceso 319

QDepthHighEvent Controla si se generan sucesos de profundidadmáxima de cola

319

QDepthHighLimit Límite máximo de profundidad de cola 319

QDepthLowEvent Controla si se generan sucesos de profundidadmínima de cola

320

QDepthLowLimit Límite mínimo de profundidad de cola 320

QDepthMaxEvent Controla si se generan sucesos de cola llena 320

QServiceInterval Destino del intervalo de servicio de cola 321

QServiceIntervalEvent Controla si se generan sucesos del intervalo deservicio alto o del intervalo de servicio correcto

321

RetentionInterval Intervalo de retención 322

Shareability Posibilidad de compartir la cola 322

TriggerControl Control de desencadenamiento 322

TriggerData Datos desencadenantes 323

TriggerDepth Profundidad desencadenante 323

TriggerMsgPriority Prioridad de mensaje umbral paradesencadenantes

323

© Copyright IBM Corp. 1994, 2000 311

Page 326: amqwak00

Tabla 50. Atributos de colas locales y modelo (continuación)

Atributo Descripción Página

TriggerType Tipo de desencadenante 324

Usage Utilización de la cola 324

BackoutRequeueQName (serie de caracteres de 48 bytes)Nombre de cola de recolocación en cola de restitución excesiva.

Además de poder consultar su valor, el gestor de colas no realiza ningunaacción basada en el valor de este atributo.

Para determinar el valor de este atributo, utilice el selector CABRQN con lallamada MQINQ. La longitud de este atributo la indica LNQN.

BackoutThreshold (entero de 10 dígitos con signo)Umbral de restitución.

Además de poder consultar su valor, el gestor de colas no realiza ningunaacción basada en el valor de este atributo.

Para determinar el valor de este atributo, utilice el selector IABTHR con lallamada MQINQ.

CreationDate (serie de caracteres de 12 bytes)Fecha en que se creó la cola.

El formato esAAAA-MM-DD

con 2 bytes de blancos como relleno a la derecha para alcanzar la longitud de12 bytes. Por ejemplo:1992-09-23bb

es 23 de Septiembre de 1992 (“bb” representa 2 caracteres en blanco).

En OS/400, la fecha de creación de una cola puede ser distinta de la deentidad del sistema operativo subyacente (archivo o espacio de usuario) querepresenta la cola.

Para determinar el valor de este atributo, utilice el selector CACRTD con lallamada MQINQ. La longitud de este atributo la indica LNCRTD.

CreationTime (serie de caracteres de 8 bytes)Hora de creación de la cola.

El formato esHH.MM.SS

utilizando el reloj de 24 horas, con un cero inicial si la hora es anterior a las 10.Por ejemplo:21.10.20

Es un serie de 8 caracteres. La hora es la hora local.

Atributos - colas locales y modelo

312 Consulta de programación de aplicaciones (ILE RPG)

Page 327: amqwak00

v En OS/400, la hora de creación de una cola puede ser distinta de la deentidad del sistema operativo subyacente (archivo o espacio de usuario) querepresenta la cola.

Para determinar el valor de este atributo, utilice el selector CACRTT con lallamada MQINQ. La longitud de este atributo la indica LNCRTT.

CurrentQDepth (entero de 10 dígitos con signo)Profundidad actual de la cola.

Es el número de mensajes actuales de la cola. Aumenta durante una llamadaMQPUT y durante la restitución de una llamada MQGET. Disminuye duranteuna llamada MQGET que no sea de examinar y durante la restitución de unallamada MQPUT. El efecto de esto es que la cuenta incluye los mensajes que sehan puesto en la cola dentro de una unidad de trabajo, pero que aún no se hancomprometido, incluso si no son elegibles para que la llamada MQGET losrecupere. Del mismo modo, la cuenta excluye los mensajes que se hayanrecuperado dentro de una unidad de trabajo utilizando la llamada MQGET,pero que aún deben comprometerse.

La cuenta también incluye los mensajes que ya han caducado pero que todavíano se han descartado, aunque estos no son elegibles para recuperarse. Vea elcampo MDEXP que se describe en el “Capítulo 10. MQMD - Descriptor demensaje” en la página 85.

El valor de este atributo fluctúa mientras el gestor de colas opera.

Este atributo no se aplica a las colas modelo, pero sí a las colas definidasdinámicamente que se crean a partir de las definiciones de cola modeloutilizando la llamada MQOPEN.

Para determinar el valor de este atributo, utilice el selector IACDEP con lallamada MQINQ.

DefinitionType (entero de 10 dígitos con signo)Tipo de definición de cola.

Indica cómo se ha definido la cola. Es uno de los siguientes:

QDPRECola permanente predefinida.

Es una cola permanente que crea el administrador del sistema; solo élpuede suprimirla.

Las colas predefinidas se crean mediante el mandato DEFINE y solopueden suprimirse con el mandato DELETE. No es posible crear colaspredefinidas a partir de las colas modelo.

Los mandatos pueden emitirlos un operador o una aplicaciónautorizada enviando un mensaje de mandato a la cola de entrada demandatos (vea el atributo CommandInputQName que se describe en el“Capítulo 43. Atributos del gestor de colas” en la página 337).

QDPERMCola permanente definida dinámicamente.

Es una cola permanente creada por una aplicación que ha emitido unallamada MQOPEN con el nombre de una cola modelo especificado enel descriptor de objeto. La definición de la cola modelo tiene el valor

Atributos - colas locales y modelo

Capítulo 38. Atributos de colas locales y colas modelo 313

Page 328: amqwak00

QDPERM para el atributo DefinitionType. Este tipo de cola puedesuprimirse con la llamada MQCLOSE. Vea el “Capítulo 25. MQCLOSE- Cerrar objeto” en la página 221 para obtener más detalles.

QDTEMPCola temporal definida dinámicamente.

Es una cola temporal creada por una aplicación que ha emitido unallamada MQOPEN con el nombre de una cola modelo especificado enel descriptor de objeto. La definición de la cola modelo tiene el valorQDTEMP para el atributo DefinitionType. Este tipo de cola se suprimeautomáticamente mediante la llamada MQCLOSE cuando la aplicaciónque la ha creado la cierra.

Este atributo de una definición de cola modelo no indica la forma en que se hadefinido la cola modelo, ya que estas siempre están predefinidas. Por elcontrario, este valor se utiliza para determinar el DefinitionType de cada unade las colas dinámicas creadas a partir de la definición de cola modeloutilizando la llamada MQOPEN.

Para determinar el valor de este atributo, utilice el selector IADEFT con lallamada MQINQ.

DefInputOpenOption (entero de 10 dígitos con signo)Opción de apertura para entrada por omisión.

Es la forma que se utiliza por omisión para abrir la cola para realizar entrada.Es aplicable si se especifica la opción OOINPQ en la llamada MQOPEN alabrir la cola. Es uno de los siguientes:

OOINPXAbrir la cola para obtener mensajes con acceso exclusivo.

La cola se abre para poder utilizarla con llamadas MQGET posteriores.La llamada falla con el código de razón RC2042 si esta u otraaplicación ya ha abierto actualmente la cola para entrada de cualquiertipo (OOINPS o OOINPX).

OOINPSAbrir la cola para obtener mensajes con acceso compartido.

La cola se abre para poder utilizarla con llamadas MQGET posteriores.La llamada puede realizarse satisfactoriamente si la cola ya la haabierto esta u otra aplicación con OOINPS, pero falla con el código derazón RC2042 si la cola se ha abierto actualmente con OOINPX.

Para determinar el valor de este atributo, utilice el selector IADINP con lallamada MQINQ.

DistLists (entero de 10 dígitos con signo)Soporte de lista de distribución.

Indica si los mensajes de lista de distribución se pueden colocar en una cola. Elatributo lo establece un MCA (agente de canal de mensajes) para informar algestor de colas local si el gestor de colas del otro extremo del canal da soportea las listas de distribución. Este último gestor de colas (denominado “gestor decolas de interlocutor”) es el que recibe el mensaje a continuación, después deque el MCA emisor lo haya eliminado de la cola de transmisión local.

Atributos - colas locales y modelo

314 Consulta de programación de aplicaciones (ILE RPG)

Page 329: amqwak00

El atributo lo establece el MCA emisor siempre que se establece una conexióncon el MCA receptor en el gestor de colas de interlocutor. De esta manera, elMCA emisor puede hacer que el gestor de colas local solo pueda colocar en lacola de transmisión aquellos mensajes que el gestor de colas de interlocutorpueda procesar correctamente.

Este atributo se usa principalmente con colas de transmisión, pero el procesodescrito se lleva a cabo independientemente de la utilización definida para lacola (vea el atributo Usage).

El valor es uno de los siguientes:

DLSUPPListas de distribución soportadas.

Indica que los mensajes de lista de distribución se pueden almacenaren la cola y transmitirse al gestor de colas de interlocutor con eseformato. Así se reduce la cantidad de proceso necesaria para enviar elmensaje a varios destinos.

DLNSUPListas de distribución no soportadas.

Indica que los mensajes de lista de distribución no se puedenalmacenar en la cola, ya que el gestor de colas de interlocutor no dasoporte a las listas de distribución. Si una aplicación transfiere unmensaje de lista de distribución y ese mensaje se va a colocar en estacola, el gestor de colas subdivide el mensaje de lista de distribución, yen su lugar coloca los mensajes individuales en la cola. Así se aumentala cantidad de proceso necesaria para enviar el mensaje a variosdestinos, pero se asegura que los mensajes serán procesadoscorrectamente por el gestor de colas del interlocutor.

Para determinar el valor de este atributo, utilice el selector IADIST con lallamada MQINQ. Para cambiar el valor de este atributo, utilice la llamadaMQSET.

HardenGetBackout (entero de 10 dígitos con signo)Indica si va a mantenerse una cuenta exacta de restitución.

Para cada mensaje, se conserva una cuenta del número de veces que se harecuperado el mensaje mediante una llamada MQGET dentro de una unidadde trabajo, así como del número de veces que se ha restituido a continuación launidad de trabajo. Esta cuenta se encuentra en el campo MDBOC del descriptorde mensaje una vez completada la llamada MQGET.

El contador de restitución de mensaje sigue existiendo tras rearrancar el gestorde colas. Sin embargo, para estar seguro de que la cuenta es exacta, lainformación debe “memorizarse” (grabarse en disco o en otro dispositivo dealmacenamiento permanente) cada vez que un mensaje se recupera medianteuna llamada MQGET dentro de una unidad de trabajo para esta cola. Si no lohace y se produce una anomalía del gestor de colas junto con la restitución dela llamada MQGET, la cuenta puede no aumentar.

No obstante, el hecho de memorizar la información de cada llamada MQGETdentro de una unidad de trabajo supone un mayor gasto general derendimiento, por lo que solo debe establecerse el atributo HardenGetBackout enQABH si es absolutamente imprescindible que la cuenta sea exacta.

Atributos - colas locales y modelo

Capítulo 38. Atributos de colas locales y colas modelo 315

Page 330: amqwak00

En OS/400, la cuenta de restitución de mensaje siempre se memoriza, sea cualsea el valor de este atributo.

Son posibles los siguientes valores:

QABHSe recuerda la cuenta de restitución.

Se utiliza la memorización para asegurar que la cuenta de restituciónde los mensajes de esta cola es exacta.

QABNHNo es necesario recordar la cuenta de restitución.

No se utiliza la memorización para asegurar que la cuenta derestitución de los mensajes de esta cola sea exacta. Por lo tanto, lacuenta puede ser menos que lo debido.

Para determinar el valor de este atributo, utilice el selector IAHGB con lallamada MQINQ.

InitiationQName (serie de caracteres de 48 bytes)Nombre de la cola de inicio.

Es el nombre de una cola definida en el gestor de colas local; la cola debe serde tipo QTLOC. El gestor de colas envía un mensaje desencadenante a estacola cuando se necesita iniciar una aplicación como resultado de la llegada deun mensaje a la cola a la que pertenece este atributo. La cola de inicio debeestar supervisada por una aplicación supervisora de desencadenamineto queiniciará la aplicación adecuada tras la recepción del mensaje desencadenante.

Para determinar el valor de este atributo, utilice el selector CAINIQ con lallamada MQINQ. La longitud de este atributo la indica LNQN.

MaxMsgLength (entero de 10 dígitos con signo)Longitud máxima del mensaje en bytes.

Es el límite máximo para la longitud del mensaje físico más largo que se puedecolocar en la cola. No obstante, como el atributo de cola local MaxMsgLength sepuede definir independientemente del atributo de gestor de colasMaxMsgLength, el límite máximo real para la longitud del mensaje físico máslargo que se puede colocar en la cola es el menor de ambos valores.

Si el gestor de colas da soporte a la segmentación, la aplicación puedetransferir un mensaje lógico que sea mayor que el menor de los dos atributosMaxMsgLength, aunque solo si la aplicación especifica el distintivo MFSEGA enMQMD. Si se especifica este distintivo, el límite máximo para la longitud deun mensaje lógico es de 999 999 999 bytes, pero normalmente las restriccionesde recurso impuestas por el sistema operativo, o por el entorno de ejecución dela aplicación, pueden hacer que el límite sea inferior.

Si se intenta colocar en la cola un mensaje demasiado largo, el intento falla conel código de razón:v RC2030 si el mensaje es demasiado grande para la colav RC2030 si el mensaje es demasiado grande para el gestor de colas, pero no

demasiado para la cola

Atributos - colas locales y modelo

316 Consulta de programación de aplicaciones (ILE RPG)

||

|||||||

Page 331: amqwak00

El límite mínimo para el atributo MaxMsgLength es igual a cero. El límitemáximo viene determinado por el entorno:v En OS/400, la longitud máxima del mensaje es de 100 MB (104 857 600

bytes).

Para más información, vea el parámetro BUFLEN que se describe en el“Capítulo 33. MQPUT - Poner mensaje” en la página 277.

Para determinar el valor de este atributo, utilice el selector IAMLEN con lallamada MQINQ.

MaxQDepth (entero de 10 dígitos con signo)Profundidad máxima de la cola.

Es el límite máximo definido para el número de mensajes físicos que puedehaber simultáneamente en la cola. Si intenta poner un mensaje en una cola queya contiene MaxQDepth mensajes, el intento falla con el código de razón RC2053.

El proceso de la unidad de trabajo y la segmentación de los mensajes puedenhacer que el número real de mensajes físicos existentes en la cola sobrepaseMaxQDepth. No obstante, esto no afecta a la posibilidad de recuperación de losmensajes– todos los mensajes que hay en la cola pueden recuperarse utilizandola llamada MQGET de manera normal.

El valor de este atributo es cero o un valor superior. El límite máximo vienedeterminado por el entorno:v En OS/400, el valor no puede exceder de 640 000.

Nota: Es posible que el espacio de almacenamiento disponible para la cola seagote aunque haya menos mensajes en la cola que los definidos porMaxQDepth.

Para determinar el valor de este atributo, utilice el selector IAMDEP con lallamada MQINQ.

MsgDeliverySequence (entero de 10 dígitos con signo)Secuencia de entrega de mensajes.

Determina el orden en el que los mensajes se devuelven a la aplicaciónmediante la llamada MQGET:

MSFIFOLos mensajes se devuelven en orden FIFO (primero en entrar, primeroen salir).

Esto significa que una llamada MQGET devolverá el primer mensajeque satisfaga los criterios de selección especificados en la llamada, seacual sea la prioridad del mensaje.

MSPRIOLos mensajes se devuelven por orden de prioridad.

Esto significa que una llamada MQGET devolverá el mensaje deprioridad más alta que satisfaga los criterios de selección especificadosen la llamada. En cada nivel de prioridad, los mensajes se devuelvenen orden FIFO (primero en entrar, primero en salir).

Atributos - colas locales y modelo

Capítulo 38. Atributos de colas locales y colas modelo 317

Page 332: amqwak00

Si los atributos pertinentes cambian mientras hay mensajes en la cola, lasecuencia de entrega será la siguiente:

El orden en el que la llamada MQGET devuelve los mensajes estádeterminado por los valores de los atributos MsgDeliverySequence yDefPriority en vigor para la cola en el momento en el que el mensaje llegaa ella:– Si MsgDeliverySequence es MSFIFO cuando llega el mensaje, este se

coloca en la cola como si su prioridad fuera DefPriority. Esto no afectaal valor del campo MDPRI del descriptor del mensaje; este campo retieneel valor que tenía el mensaje al transferirlo.

– Si MsgDeliverySequence es MSPRIO cuando llega el mensaje, el mensajese coloca en la cola en el lugar correspondiente a la prioridad que indicael campo MDPRI en el descriptor de mensaje.

Si el valor del atributo MsgDeliverySequence se modifica mientras haymensajes en la cola, el orden de los mensajes en la cola no varía.

Si el valor del atributo DefPriority se modifica mientras haya mensajes enla cola, los mensajes no se entregarán necesariamente en orden FIFO,incluso si el atributo MsgDeliverySequence tiene el valor MSFIFO; los que secolocaron en la cola con la prioridad más alta serán entregados primero.

Para determinar el valor de este atributo, utilice el selector IAMDS con lallamada MQINQ.

OpenInputCount (entero de 10 dígitos con signo)Número de aperturas para entrada.

Es el número de asas actualmente válidas para eliminar mensajes de la colamediante la llamada MQGET. Es el número total de estas asas que el gestor decolas local conoce.

La cuenta incluye las asas en las que una cola alias que se resuelve en esta colase haya abierto para entrada. La cuenta no incluye las asas en las que la cola sehaya abierto para una o varias acciones que no incluyan entrada (por ejemplo,una cola abierta solo para examinar).

El valor de este atributo fluctúa mientras el gestor de colas opera.

Este atributo no se aplica a colas modelo, pero sí a las colas definidasdinámicamente creadas a partir de las definiciones de cola modelo utilizandola llamada MQOPEN.

Para determinar el valor de este atributo, utilice el selector IAOIC con lallamada MQINQ.

OpenOutputCount (entero de 10 dígitos con signo)Número de aperturas para salida.

Es el número de asas actualmente válidas para añadir mensajes a la colamediante la llamada MQPUT. Es el número total de estas asas que el gestor decolas local conoce; no incluye las aperturas para salida realizadas para esta colaen los gestores de colas remotos.

Atributos - colas locales y modelo

318 Consulta de programación de aplicaciones (ILE RPG)

Page 333: amqwak00

La cuenta incluye las asas en las que una cola alias que se resuelve en esta colase haya abierto para salida. La cuenta no incluye las asas en las que la cola sehaya abierto para una o varias acciones que no incluyan salida (por ejemplo,una cola abierta solo para consultar).

El valor de este atributo fluctúa mientras el gestor de colas opera.

Este atributo no se aplica a colas modelo, pero sí a las colas definidasdinámicamente creadas a partir de las definiciones de cola modelo utilizandola llamada MQOPEN.

Para determinar el valor de este atributo, utilice el selector IAOOC con lallamada MQINQ.

ProcessName (serie de caracteres de 48 bytes)Nombre de proceso.

Es el nombre del objeto proceso que se define en el gestor de colas local. Elobjeto proceso identifica un programa que puede dar servicio a la cola.

Para determinar el valor de este atributo, utilice el selector CAPRON con lallamada MQINQ. La longitud de este atributo la indica LNPRON.

QDepthHighEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de profundidad máxima de cola.

Un suceso de profundidad máxima de cola indica que una aplicación hapuesto un mensaje en una cola y esto ha provocado que el número demensajes de la cola sea mayor o igual que el umbral de profundidad máximade cola (vea el atributo QDepthHighLimit).

Nota: El valor de este atributo puede cambiar dinámicamente. Vea ladescripción del suceso de profundidad máxima de cola para obtenermás detalles.

Es uno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IAQDHE con lallamada MQINQ.

QDepthHighLimit (entero de 10 dígitos con signo)Límite máximo de profundidad de cola.

El umbral con el que se compara la profundidad de cola para generar unsuceso de profundidad de cola máxima.

Este suceso indica que una aplicación ha puesto un mensaje en una cola y estoha provocado que el número de mensajes de la cola sea mayor o igual que elumbral de profundidad máxima de cola. Vea el atributo QDepthHighEvent.

Atributos - colas locales y modelo

Capítulo 38. Atributos de colas locales y colas modelo 319

Page 334: amqwak00

El valor se expresa como porcentaje de la profundidad máxima de cola(atributo MaxQDepth) y es mayor o igual que 0 y menor o igual que 100. Elvalor por omisión es 80.

Para determinar el valor de este atributo, utilice el selector IAQDHL con lallamada MQINQ.

QDepthLowEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de profundidad mínima de cola.

Un suceso de profundidad mínima de cola indica que una aplicación harecuperado un mensaje de una cola y esto ha provocado que el número demensajes de la cola sea menor o igual que el umbral de profundidad mínimade cola (vea el atributo QDepthLowLimit).

Nota: El valor de este atributo puede cambiar dinámicamente. Vea ladescripción del suceso de profundidad mínima de cola para obtener másdetalles.

Es uno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IAQDLE con lallamada MQINQ.

QDepthLowLimit (entero de 10 dígitos con signo)Límite mínimo de profundidad de cola.

El umbral con el que se compara la profundidad de cola para generar unsuceso de profundidad de cola mínima.

Este suceso indica que una aplicación ha recuperado un mensaje de una cola yesto ha provocado que el número de mensajes de la misma sea menor o igualque el umbral de profundidad mínimo de cola. Vea el atributo QDepthLowEvent.

El valor se expresa como porcentaje de la profundidad máxima de cola(atributo MaxQDepth) y es mayor o igual que 0 y menor o igual que 100. Elvalor por omisión es 20.

Para determinar el valor de este atributo, utilice el selector IAQDLL con lallamada MQINQ.

QDepthMaxEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de cola llena.

Un suceso de cola llena indica que se ha rechazado una transferencia a unacola porque esta está llena, es decir, la profundidad de cola ha alcanzado suvalor máximo.

Nota: El valor de este atributo puede cambiar dinámicamente. Vea ladescripción del suceso de cola llena para obtener más detalles.

Es uno de los siguientes:

Atributos - colas locales y modelo

320 Consulta de programación de aplicaciones (ILE RPG)

Page 335: amqwak00

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IAQDME con lallamada MQINQ.

QServiceInterval (entero de 10 dígitos con signo)Destino del intervalo de servicio de cola.

El intervalo de servicio utilizado para comparación con el fin de generar lossucesos de intervalo de servicio alto y de intervalo de servicio correcto. Vea elatributo QServiceIntervalEvent.

El valor se expresa en unidades de milésimas de segundo, y es igual o mayorque cero e igual o menor que 999 999 999.

Para determinar el valor de este atributo, utilice el selector IAQSI con lallamada MQINQ.

QServiceIntervalEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de intervalo de servicio alto o de intervalo deservicio correcto.

Se genera un suceso de intervalo de servicio alto cuando una comprobaciónindica que, como mínimo, no se han recuperado mensajes de la cola durante eltiempo indicado por el atributo QServiceInterval.

Se genera un suceso de intervalo de servicio correcto cuando unacomprobación indica que se han recuperado mensajes de la cola dentro deltiempo indicado por el atributo QServiceInterval.

Nota: El valor de este atributo puede cambiar dinámicamente. Vea ladescripción de los sucesos de intervalo de servicio alto y de intervalo deservicio correcto para obtener más detalles.

Es uno de los siguientes:

QSIEHISucesos de intervalo de servicio alto de cola habilitados.v Los sucesos de intervalo de servicio alto de cola están habilitados yv Los sucesos de intervalo de servicio correcto de cola están

inhabilitados.

QSIEOKSucesos de intervalo de servicio correcto de cola habilitados.v Los sucesos de intervalo de servicio alto de cola están inhabilitados

yv Los sucesos de intervalo de servicio correcto de cola están

habilitados.

QSIENONo hay ningún suceso de intervalo de servicio de cola habilitado.v Los sucesos de intervalo de servicio alto de cola están inhabilitados

yv Los sucesos de intervalo de servicio correcto de cola también están

inhabilitados.

Atributos - colas locales y modelo

Capítulo 38. Atributos de colas locales y colas modelo 321

Page 336: amqwak00

Para determinar el valor de este atributo, utilice el selector IAQSIE con lallamada MQINQ.

RetentionInterval (entero de 10 dígitos con signo)Intervalo de retención.

Es el período de tiempo durante el cual debe retenerse la cola. Cuando esetiempo ha transcurrido, la cola podrá seleccionarse para su supresión.

El tiempo se mide en horas, contando a partir de la fecha y hora en que secreó la cola. La fecha y hora de creación de la cola están registradas en losatributos CreationDate y CreationTime respectivamente.

Esta información se facilita para permitir que una aplicación de mantenimientoo el operador identifiquen y supriman las colas que ya no sean necesarias.

Nota: El gestor de colas nunca interviene en la supresión de colas basada eneste atributo o en cualquier acción que evite la eliminación de colas cuyointervalo de retención no haya caducado; el usuario es el responsable deemprender las acciones que se consideren necesarias.

Debe utilizarse un intervalo de retención realista que impida la acumulación decolas dinámicas permanentes (vea DefinitionType). No obstante, este atributotambién se puede utilizar con colas predefinidas.

Para determinar el valor de este atributo, utilice el selector IARINT con lallamada MQINQ.

Shareability (entero de 10 dígitos con signo)Posibilidad de compartir la cola.

Indica si la cola puede abrirse para entrada varias veces simultáneamente. Esuno de los siguientes:

QASHRLa cola puede compartirse.

Se permiten varias aperturas con la opción OOINPS.

QANSHRLa cola no puede compartirse.

Una llamada MQOPEN con la opción OOINPS se trata como si tuviesela opción OOINPX.

Para determinar el valor de este atributo, utilice el selector IASHAR con lallamada MQINQ.

TriggerControl (entero de 10 dígitos con signo)Control de desencadenamiento.

Comprueba si los mensajes desencadenantes se han escrito para una cola deinicio, para que arranque una aplicación que dé servicio a la cola.

Es uno de los siguientes:

TCOFFLos mensajes desencadenantes no son necesarios.

Atributos - colas locales y modelo

322 Consulta de programación de aplicaciones (ILE RPG)

Page 337: amqwak00

No es necesario grabar mensajes desencadenantes para esta cola. Elvalor de TriggerType será irrelevante en este caso.

TCONLos mensajes desencadenantes son necesarios.

Deben grabarse mensajes desencadenantes para esta cola cuando seproduzcan las actividades desencadenantes apropiadas.

Para determinar el valor de este atributo, utilice el selector IATRGC con lallamada MQINQ. Para cambiar el valor de este atributo, utilice la llamadaMQSET.

TriggerData (serie de caracteres de 64 bytes)Datos desencadenantes.

Son datos con formato libre que el gestor de colas inserta en el mensajedesencadenante cuando la llegada de un mensaje a la cola causa la grabaciónde un mensaje desencadenante en la cola de inicio.

El contenido de estos datos no es significativo para el gestor de colas. Essignificativo para la aplicación supervisora des desencadenamineto que procesala cola de inicio o para la aplicación arrancada por el supervisor dedesencadenamiento.

La serie de caracteres no puede contener nulos. Se rellena con blancos a laderecha si es necesario.

Para determinar el valor de este atributo, utilice el selector CATRGD con lallamada MQINQ. Para cambiar el valor de este atributo, utilice la llamadaMQSET. La longitud de este atributo la indica LNTRGD.

TriggerDepth (entero de 10 dígitos con signo)Profundidad desencadenante.

Es el número de mensajes de prioridad TriggerMsgPriority o superior quedebe haber en la cola antes de que se grabe un mensaje desencadenante. Estoes aplicable si TriggerType tiene el valor TTDPTH. El valor de TriggerDepthpuede ser uno o un valor superior. De lo contrario, este atributo no se usa.

Para determinar el valor de este atributo, utilice el selector IATRGD con lallamada MQINQ. Para cambiar el valor de este atributo, utilice la llamadaMQSET.

TriggerMsgPriority (entero de 10 dígitos con signo)Prioridad de mensaje umbral para desencadenantes.

Los mensajes que tengan una prioridad inferior a esta no contribuyen a que segeneren mensajes desencadenantes (es decir, que el gestor de colas ignora estosmensajes cuando decide si debe generar mensajes desencadenantes).TriggerMsgPriority puede estar entre cero (la menor) y MaxPriority (la mayor;vea el “Capítulo 43. Atributos del gestor de colas” en la página 337); el valorcero hace que todos los mensajes contribuyan a generar mensajesdesencadenantes.

Para determinar el valor de este atributo, utilice el selector IATRGP con lallamada MQINQ. Para cambiar el valor de este atributo, utilice la llamadaMQSET.

Atributos - colas locales y modelo

Capítulo 38. Atributos de colas locales y colas modelo 323

|

Page 338: amqwak00

TriggerType (entero de 10 dígitos con signo)Tipo de desencadenante.

Controla las condiciones bajo las cuales se graban mensajes desencadenantes aconsecuencia de mensajes que llegan a la cola.

Es uno de los siguientes:

TTNONENo hay ningún mensaje desencadenante.

No se graba ningún mensaje desencadenante como consecuencia de losmensajes que hay en esta cola. Tiene el mismo efecto que dar aTriggerControl el valor TCOFF.

TTFRSTMensaje desencadenante cuando la profundidad de cola pasa de 0 a 1.

Se graba un mensaje desencadenante siempre que cambia de 0 a 1 elnúmero de mensajes de prioridad TriggerMsgPriority (o superior) quehay en la cola.

TTEVRYMensaje desencadenante para todos los mensajes.

Se graba un mensaje desencadenante siempre que llega a la cola unmensaje de prioridad TriggerMsgPriority o superior.

TTDPTHMensaje desencadenante cuando se excede el umbral de profundidad.

Se graba un mensaje desencadenante siempre que el número demensajes de prioridad TriggerMsgPriority o superior existentes en lacola se haga igual o mayor que TriggerDepth. Después de habergrabado el mensaje desencadenante, TriggerControl se establece enTCOFF para evitar más desencadenamientos hasta que vuelva aactivarse explícitamente.

Para determinar el valor de este atributo, utilice el selector IATRGT con lallamada MQINQ. Para cambiar el valor de este atributo, utilice la llamadaMQSET.

Usage (entero de 10 dígitos con signo)Utilización de la cola.

Indica para qué se utiliza la cola. Es uno de los siguientes:

USNORMUtilización normal.

Es una cola que las aplicaciones normales utilizan cuando ponen yobtienen mensajes; la cola no es una cola de transmisión.

USTRANCola de transmisión.

Es una cola utilizada para conservar los mensajes destinados a losgestores de colas remotos. Cuando una aplicación normal envía unmensaje a una cola remota, el gestor de colas local lo almacena en lacola de transmisión adecuada con un formato especial. A continuación,un agente de mensajes de canal lee el mensaje en la cola de

Atributos - colas locales y modelo

324 Consulta de programación de aplicaciones (ILE RPG)

|||

||

|||

Page 339: amqwak00

transmisión y lo transporta al gestor de colas remoto. Para másinformación sobre colas de transmisión, consulte MQSeries ApplicationProgramming Guide.

Las aplicaciones privilegiadas son las únicas que pueden abrir una colade transmisión para que OOOUT ponga mensajes directamente en ella.Normalmente, solo las aplicaciones de utilidad pueden hacerlo. Sedebe tener cuidado de que el formato de datos del mensaje sea elcorrecto (vea el “Capítulo 21. MQXQH - Cabecera de cola detransmisión” en la página 203) ya que, de lo contrario, puedenproducirse errores en el proceso de transmisión. El contexto no se pasani se establece, a menos que se haya especificado una de las opcionesde contexto PM*.

Para determinar el valor de este atributo, utilice el selector IAUSAG con lallamada MQINQ.

Atributos - colas locales y modelo

Capítulo 38. Atributos de colas locales y colas modelo 325

Page 340: amqwak00

Atributos - colas locales y modelo

326 Consulta de programación de aplicaciones (ILE RPG)

Page 341: amqwak00

Capítulo 39. Atributos de definiciones locales de colasremotas

La siguiente tabla resume los atributos que son específicos de las definicioneslocales de las colas remotas. Los atributos se describen en orden alfabético.

Tabla 51. Atributos de definiciones locales de colas remotas

Atributo Descripción Página

RemoteQMgrName Nombre del gestor de colas remoto 327

RemoteQName Nombre de la cola remota 328

XmitQName Nombre de la cola de transmisión 328

Normalmente, una definición local de una cola remota se utiliza para hacerreferencia a una cola que existe en un gestor de colas remoto. Especifica el nombredel gestor de colas en el que existe la cola y, opcionalmente, el nombre de la colade transmisión que debe utilizarse para transmitir los mensajes destinados para esacola situada en el gestor de colas.

No obstante, el mismo tipo de definición también puede utilizarse con lossiguientes fines:v Creación de alias de una cola de respuestas

El nombre de la definición es el nombre de una cola de respuestas. Para másinformación, vea el manual MQSeries Intercommunication.

v Creación de alias de un gestor de colasEl nombre de la definición es realmente el nombre alias de un gestor de colas,no el nombre de una cola. Para más información, vea el manual MQSeriesIntercommunication.

RemoteQMgrName (serie de caracteres de 48 bytes)Nombre del gestor de colas remoto.

El nombre del gestor de colas remoto en el que está definida la cola cuyoatributo de nombre es RemoteQName.

Si una aplicación abre la definición local de una cola remota, RemoteQMgrNameno debe estar en blanco ni debe ser el nombre del gestor de colas local. SiXmitQName está en blanco, la cola local cuyo nombre sea el mismo queRemoteQMgrName se utilizará como cola de transmisión. Si no hay ninguna colacon el nombre RemoteQMgrName, se utilizará la cola identificada por el atributode gestor de colas DefXmitQName.

Si la definición se utiliza para un alias de gestor de colas, RemoteQMgrName es elnombre del gestor de colas al que se va a dar un alias. Puede ser el nombre delgestor de colas local. En caso contrario, si XmitQName está en blanco cuando seproduce la apertura, debe haber una cola local cuyo nombre sea igual queRemoteQMgrName; esta cola se utiliza como cola de transmisión.

Si esta definición se utiliza para un alias de respuesta, este será el nombre delgestor de colas que debe ser el MDRM.

© Copyright IBM Corp. 1994, 2000 327

Page 342: amqwak00

Nota: No se efectúa ninguna validación del valor especificado para esteatributo cuando se crea o se modifica la definición de cola.

Para determinar el valor de este atributo, utilice el selector CARQMN con lallamada MQINQ.

La longitud de este atributo la indica LNQMN.

RemoteQName (serie de caracteres de 48 bytes)Nombre de la cola remota.

El nombre de la cola con el que está identificada en el atributo RemoteQMgrNamedel gestor de colas remoto.

Si una aplicación abre la definición local de una cola remota, cuando seproduzca la apertura RemoteQName no debe estar en blanco.

Si se utiliza esta definición para una definición de alias de gestor de colas,RemoteQName debe estar en blanco cuando se produzca la apertura.

Si la definición se utiliza para un alias de respuesta, este nombre será el de lacola que deba ser MDRQ.

Nota: No se efectúa ninguna validación del valor especificado para esteatributo cuando se crea o se modifica la definición de cola.

Para determinar el valor de este atributo, utilice el selector CARQN con lallamada MQINQ.

La longitud de este atributo la indica LNQN.

XmitQName (serie de caracteres de 48 bytes)Nombre de la cola de transmisión.

Este atributo, si no está en blanco cuando se produce la apertura (para unadefinición de alias de cola remota o de gestor de colas), especifica el nombre dela cola de transmisión local que debe utilizarse para reenviar el mensaje.

Si XmitQName está en blanco, se utilizará como cola de transmisión la cola localcuyo nombre sea igual que RemoteQMgrName. Si no hay ninguna cola que tengael nombre RemoteQMgrName, se utilizará la cola identificada por el atributo degestor de colas DefXmitQName.

Este atributo se ignora si la definición se utiliza como alias de gestor de colas yRemoteQMgrName es el nombre del gestor de colas local.

También se ignorará si la definición se utiliza como definición de alias de colade respuestas.

Para determinar el valor de este atributo, utilice el selector CAXQN con lallamada MQINQ.

La longitud de este atributo la indica LNQN.

Atributos - colas remotas

328 Consulta de programación de aplicaciones (ILE RPG)

Page 343: amqwak00

Capítulo 40. Atributos de colas alias

El siguiente atributo se asocia con las colas alias:

BaseQName (serie de caracteres de 48 bytes)El nombre de la cola a la que se resuelve el alias.

Es el nombre de una cola que está definida en el gestor de colas local. (Paraobtener más información sobre nombres de cola, vea MQSeries ApplicationProgramming Guide). La cola es uno de los tipos siguientes:QTLOC

Cola local.QTREM

Definición local de una cola remota.QTCLUS

Cola de clúster.

Para determinar el valor de este atributo, utilice el selector CABASQ con lallamada MQINQ.

La longitud de este atributo la indica LNQN.

© Copyright IBM Corp. 1994, 2000 329

||

Page 344: amqwak00

Atributos - colas alias

330 Consulta de programación de aplicaciones (ILE RPG)

Page 345: amqwak00

Capítulo 41. Atributos de las listas de nombres

Las listas de nombres están soportadas en los siguientes entornos: AIX, clienteDOS, HP-UX, OS/390, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

La siguiente tabla resume los atributos que son específicos de las listas de nombres.Los atributos se describen por orden alfabético.

Tabla 52. Atributos de las listas de nombres

Atributo Descripción Página

AlterationDate Fecha en la que se cambió la definición por últimavez

331

AlterationTime Hora a la que se cambió la definición por últimavez

331

NameCount Número de nombres en la lista de nombres 331

NamelistDesc Descripción de la lista de nombres 331

NamelistName Nombre de la lista de nombres 332

Names Lista de los nombres NameCount 332

AlterationDate (serie de caracteres de 12 bytes)Fecha en la que se cambió la definición por última vez.

Es la fecha en la que se cambió la definición por última vez. El formato de lafecha es AAAA-MM-DD, rellenado con dos blancos finales para que la longitud seaigual a 12 bytes.

Para determinar el valor de este atributo, utilice el selector CAALTD con lallamada MQINQ. La longitud de este atributo la indica LNDATE.

AlterationTime (serie de caracteres de 8 bytes)Hora a la que se cambió la definición por última vez.

Es la hora a la que se cambió la definición por última vez. El formato de lahora es HH.MM.SS.

Para determinar el valor de este atributo, utilice el selector CAALTT con lallamada MQINQ. La longitud de este atributo la indica LNTIME.

NameCount (entero de 10 dígitos con signo)Número de nombres en la lista de nombres.

Es superior o igual a cero. Se ha definido el siguiente valor:

NCMXNLNúmero máximo de nombres de una lista de nombres.

Para determinar el valor de este atributo, utilice el selector IANAMC con lallamada MQINQ.

NamelistDesc (serie de caracteres de 64 bytes)Descripción de la lista de nombres.

© Copyright IBM Corp. 1994, 2000 331

||

||||

||||

||

|||

||

||

||

||

|

||

Page 346: amqwak00

Es un campo que puede utilizarse para un comentario descriptivo; su valorqueda establecido por el proceso de definición. El contenido del campo no essignificativo para el gestor de colas, aunque dicho gestor puede necesitar queel campo contenga únicamente caracteres que puedan visualizarse. No puedecontener caracteres nulos; si es necesario, se rellenará a la derecha con blancos.En una instalación DBCS, este campo puede contener caracteres DBCS (conuna longitud máxima de campo de 64 bytes).

Nota: Si este campo contiene caracteres que no se encuentran en el juego decaracteres del gestor de colas (definido en el atributo de gestor de colasCodedCharSetId), los caracteres pueden convertirse erróneamente si elcampo se envía a otro gestor de colas.

Para determinar el valor de este atributo, utilice el selector CALSTD con lallamada MQINQ.

La longitud de este atributo la indica LNNLD.

NamelistName (serie de caracteres de 48 bytes)Nombre de la lista de nombres.

Es el nombre de una lista de nombres que se define en el gestor de colas local.Para más información sobre nombres de listas de nombres, vea MQSeriesApplication Programming Guide.

Cada lista de nombres tiene un nombre que es diferente de los nombres de lasotras listas de nombres que pertenecen al gestor de colas, pero puede duplicarlos nombres de otros objetos del gestor de colas de otro tipo (por ejemplo, decolas).

Para determinar el valor de este atributo, utilice el selector CALSTN con lallamada MQINQ.

La longitud de este atributo la indica LNNLN.

Names (serie de caracteres de 48 bytes×NameCount)Lista de los nombres NameCount.

Cada nombre es el nombre de un objeto que está definido en el gestor de colaslocal. Para más información sobre nombres de objetos, vea MQSeries ApplicationProgramming Guide.

Para determinar el valor de este atributo, utilice el selector CANAMS con lallamada MQINQ.

La longitud de cada nombre en la lista la indica LNOBJN.

Atributos - listas de nombres

332 Consulta de programación de aplicaciones (ILE RPG)

||

|

Page 347: amqwak00

Capítulo 42. Atributos de las definiciones de proceso

La siguiente tabla resume los atributos que son específicos de las definiciones deproceso. Los atributos se describen por orden alfabético.

Tabla 53. Atributos de las definiciones de proceso

Atributo Descripción Página

AlterationDate Fecha en la que se cambió la definición por últimavez

333

AlterationTime Hora a la que se cambió la definición por últimavez

333

ApplId Identificador de aplicación 333

ApplType Tipo de aplicación 334

EnvData Datos de entorno 334

ProcessDesc Descripción de proceso 334

ProcessName Nombre de proceso 335

UserData Datos de usuario 335

AlterationDate (serie de caracteres de 12 bytes)Fecha en la que se cambió la definición por última vez.

Es la fecha en la que se cambió la definición por última vez. El formato de lafecha es AAAA-MM-DD, rellenado con dos blancos finales para que la longitud seaigual a 12 bytes.

Para determinar el valor de este atributo, utilice el selector CAALTD con lallamada MQINQ. La longitud de este atributo la indica LNDATE.

AlterationTime (serie de caracteres de 8 bytes)Hora a la que se cambió la definición por última vez.

Es la hora a la que se cambió la definición por última vez. El formato de lahora es HH.MM.SS.

Para determinar el valor de este atributo, utilice el selector CAALTT con lallamada MQINQ. La longitud de este atributo la indica LNTIME.

ApplId (serie de caracteres de 256 bytes)Identificador de aplicación.

Es una serie de caracteres que identifica la aplicación que se ha de arrancar.Esta información la utiliza una aplicación supervisora de desencadenamientoque procesa los mensajes situados en la cola de inicio; la información se envíaa la cola de inicio como parte del mensaje desencadenante.

El significado de ApplId viene determinado por la aplicación supervisora dedesencadenamiento. El supervisor de desencadenamiento proporcionado porMQSeries requiere que ApplId sea el nombre de un programa ejecutable.

La serie de caracteres no puede contener nulos. Se rellena con blancos a laderecha si es necesario.

© Copyright IBM Corp. 1994, 2000 333

||||

||||

||

|||

||

||

||

||

Page 348: amqwak00

Para determinar el valor de este atributo, utilice el selector CAAPPI con lallamada MQINQ. La longitud de este atributo la indica LNPROA.

ApplType (entero de 10 dígitos con signo)Tipo de aplicación.

Identifica la naturaleza del programa que debe iniciarse en respuesta a larecepción de un mensaje desencadenante. Esta información la utiliza unaaplicación supervisora de desencadenamiento que procesa los mensajessituados en la cola de inicio; la información se envía a la cola de inicio comoparte del mensaje desencadenante.

ApplType puede tener cualquier valor, pero se recomiendan los valoressiguientes para tipos estándar; los tipos de aplicación definidos por usuariodeben estar restringidos a los valores comprendidos entre ATUFST y TULST:ATCICS

Transacción CICS.AT400 Aplicación OS/400.ATUFST

Valor inferior del tipo de aplicación definido por usuario.ATULST

Valor superior del tipo de aplicación definido por usuario.

Para determinar el valor de este atributo, utilice el selector IAAPPT con lallamada MQINQ.

EnvData (serie de caracteres de 128 bytes)Datos del entorno.

Es una serie de caracteres que contiene información relacionada con el entornoconcerniente a la aplicación que se ha de arrancar. Esta información la utilizauna aplicación supervisora de desencadenamiento que procesa los mensajessituados en la cola de inicio; la información se envía a la cola de inicio comoparte del mensaje desencadenante.

El significado de EnvData viene determinado por la aplicación supervisora dedesencadenamiento. El supervisor de desencadenamiento proporcionado porMQSeries añade EnvData a la lista de parámetros que se pasa a la aplicaciónarrancada. La lista de parámetros está compuesta por la estructura MQTMC2,seguida de un espacio en blanco, seguido de EnvData sin los blancos finales.

La serie de caracteres no puede contener nulos. Se rellena con blancos a laderecha si es necesario.

Para determinar el valor de este atributo, utilice el selector CAENVD con lallamada MQINQ. La longitud de este atributo la indica LNPROE.

ProcessDesc (serie de caracteres de 64 bytes)Descripción de proceso.

Es un campo que puede utilizarse para un comentario descriptivo. Elcontenido del campo no es significativo para el gestor de colas, aunque dichogestor puede necesitar que el campo contenga únicamente caracteres quepuedan visualizarse. No puede contener caracteres nulos; si es necesario, serellenará a la derecha con blancos. En una instalación DBCS, el campo puedecontener caracteres DBCS (sujetos a una longitud máxima del campo de 64bytes).

Atributos - definiciones de proceso

334 Consulta de programación de aplicaciones (ILE RPG)

Page 349: amqwak00

Nota: Si este campo contiene caracteres que no se encuentran en el juego decaracteres del gestor de colas (definido en el atributo de gestor de colasCodedCharSetId), los caracteres pueden convertirse erróneamente si elcampo se envía a otro gestor de colas.

Para determinar el valor de este atributo, utilice el selector CAPROD con lallamada MQINQ.

La longitud de este atributo la indica LNPROD.

ProcessName (serie de caracteres de 48 bytes)Nombre de proceso.

Es el nombre de una definición de proceso que se define para el gestor decolas local.

Cada definición de proceso tiene un nombre distinto de las demás definicionesde proceso pertenecientes al gestor de colas. Pero el nombre de una definiciónde proceso puede ser igual que el de otros objetos de gestor de colas de otrostipos (por ejemplo, colas).

Para determinar el valor de este atributo, utilice el selector CAPRON con lallamada MQINQ.

La longitud de este atributo la indica LNPRON.

UserData (serie de caracteres de 128 bytes)Datos de usuario.

Es una serie de caracteres que contiene información de usuario concerniente ala aplicación que se ha de arrancar. Esta información la utiliza la aplicaciónsupervisora de desencadenamiento que procesa los mensajes situados en lacola de inicio o la aplicación arrancada por el supervisor dedesencadenamiento. La información se envía a la cola de inicio como parte delmensaje desencadenante.

El significado de UserData viene determinado por la aplicación supervisora dedesencadenamiento. El supervisor de desencadenamiento proporcionado porMQSeries tan solo pasa UserData a la aplicación arrancada como parte de lalista de parámetros. La lista de parámetros está compuesta por la estructuraMQTMC2 (que contiene UserData), seguida de un espacio en blanco, seguidode EnvData sin los blancos finales.

La serie de caracteres no puede contener nulos. Se rellena con blancos a laderecha si es necesario.

Para determinar el valor de este atributo, utilice el selector CAUSRD con lallamada MQINQ. La longitud de este atributo la indica LNPROU.

Atributos - definiciones de proceso

Capítulo 42. Atributos de las definiciones de proceso 335

Page 350: amqwak00

Atributos - definiciones de proceso

336 Consulta de programación de aplicaciones (ILE RPG)

Page 351: amqwak00

Capítulo 43. Atributos del gestor de colas

La siguiente tabla resume los atributos que son específicos de los gestores de colas.Los atributos se describen en orden alfabético.

Tabla 54. Atributos del gestor de colas

Atributo Descripción Página

AlterationDate Fecha en la que se cambió la definición por últimavez

338

AlterationTime Hora a la que se cambió la definición por últimavez

338

AuthorityEvent Controla si se generan sucesos de autorización (noautorizado)

338

ChannelAutoDef Controla si se permite la definición automática decanales

339

ChannelAutoDefEvent Controla si se generan sucesos de definiciónautomática de canales

339

ChannelAutoDefExit Nombre de la rutina de salida de usuario para ladefinición automática de canales

339

ClusterWorkloadData Datos de usuario para la rutina de salida de cargade trabajo de clúster

339

ClusterWorkloadExit Nombre de la rutina de salida de usuario para lagestión de carga de trabajo de clúster

340

ClusterWorkloadLength Longitud máxima de los datos de mensaje que sepasan a la rutina de salida de carga de trabajo declúster

340

CodedCharSetId Identificador de juego de caracteres codificado 340

CommandInputQName Nombre de la cola de entrada de mandatos 340

CommandLevel Nivel de mandatos 341

DeadLetterQName Nombre de la cola de mensajes no entregados 341

DefXmitQName Nombre de la cola de transmisión por omisión 343

DistLists Soporte de lista de distribución 343

InhibitEvent Controla si se generan sucesos de inhibir (inhibirobtener e inhibir poner)

343

LocalEvent Controla si se generan sucesos de error locales 343

MaxHandles Número máximo de asas 343

MaxMsgLength Longitud máxima de mensaje en bytes 344

MaxPriority Prioridad máxima 344

MaxUncommittedMsgs Número máximo de mensajes no comprometidosdentro de una unidad de trabajo

344

PerformanceEvent Controla si se generan sucesos relacionados con elrendimiento

345

Platform Plataforma en la que se ejecuta el gestor de colas 346

QMgrDesc Descripción del gestor de colas 346

© Copyright IBM Corp. 1994, 2000 337

||||

||||

||||

||||

||||

|

Page 352: amqwak00

Tabla 54. Atributos del gestor de colas (continuación)

Atributo Descripción Página

QMgrIdentifier Identificador exclusivo generado internamente delgestor de colas

346

QMgrName Nombre del gestor de colas 346

RemoteEvent Controla si se generan sucesos de error remotos 346

RepositoryName Nombre de clúster para el que este gestor de colasproporciona servicios de depósito

347

RepositoryNamelist Nombre del objeto lista de nombres que contienelos nombres de los clústeres para los que estegestor de colas proporciona servicios de depósito

347

StartStopEvent Controla si se generan sucesos de inicio y dedetención.

347

SyncPoint Disponibilidad del punto de sincronismo 347

TriggerInterval Intervalo de mensaje desencadenante 348

Algunos de estos atributos son fijos para determinadas implementaciones, otrospueden modificarse con el mandato ALTER QMGR. Todos pueden consultarseabriendo un objeto especial OTQM y utilizando la llamada MQINQ con el asadevuelta. También pueden visualizarse con el mandato DISPLAY QMGR.

AlterationDate (serie de caracteres de 12 bytes)Fecha en la que se cambió la definición por última vez.

Es la fecha en la que se cambió la definición por última vez. El formato de lafecha es AAAA-MM-DD, rellenado con dos blancos finales para hacer que longitudsea igual a 12 bytes.

Para determinar el valor de este atributo, utilice el selector CAALTD con lallamada MQINQ. La longitud de este atributo la indica LNDATE.

AlterationTime (serie de caracteres de 8 bytes)Hora a la que se cambió la definición por última vez.

Es la hora a la que se cambió la definición por última vez. El formato de lahora es HH.MM.SS.

Para determinar el valor de este atributo, utilice el selector CAALTT con lallamada MQINQ. La longitud de este atributo la indica LNTIME.

AuthorityEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de autorización (no autorizado).

Es uno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IAAUTE con lallamada MQINQ.

Atributos - gestor de colas

338 Consulta de programación de aplicaciones (ILE RPG)

||||

||||

||||

|

|

||

|||

||

||

||

||

Page 353: amqwak00

ChannelAutoDef (entero de 10 dígitos con signo)Controla si se permite la definición automática de canales.

Este atributo controla la definición automática de canales de tipo CTRCVR yCTSVCN. Recuerde que la definición automática de los canales CTCLSD estásiempre habilitada. El valor es uno de los siguientes:

CHADDIDefinición automática de canal inhabilitada.

CHADENDefinición automática de canal habilitada.

Para determinar el valor de este atributo, utilice el selector IACAD con lallamada MQINQ.

ChannelAutoDefEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de definición automática de canales.

Es aplicable a los canales de tipo CTRCVR, CTSVCN y CTCLSD. El valor esuno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IACADE con lallamada MQINQ.

ChannelAutoDefExit (serie de caracteres de n bytes)Nombre de la rutina de salida de usuario para la definición automática decanales.

Si el nombre no está en blanco y ChannelAutoDef tiene el valor CHADEN, sellama a la rutina de salida cada vez que el gestor de colas está a punto decrear una definición de canal. Es aplicable a los canales de tipo CTRCVR,CTSVCN y CTCLSD. A continuación, la rutina de salida puede realizar una delas operaciones siguientes:v Permitir la creación de la definición de canal para continuar sin ningún

cambio.v Modificar los atributos de la definición de canal que se crea.v Suprimir la creación del canal por completo.

Nota: Tanto la longitud como el valor de este atributo son específicos de cadaentorno. Vea la introducción a la estructura MQCD en el manualMQSeries Intercommunication para obtener más detalles del valor de esteatributo en varios entornos.

Para determinar el valor de este atributo, utilice el selector CACADX con lallamada MQINQ. La longitud de este atributo la indica LNEXN.

ClusterWorkloadData (serie de caracteres de 32 bytes)Datos de usuario para la rutina de salida de carga de trabajo de clúster.

Atributos - gestor de colas

Capítulo 43. Atributos del gestor de colas 339

||

|

||

||

Page 354: amqwak00

Es una serie de caracteres de 32 bytes definida por el usuario que se pasa a larutina de salida de carga de trabajo de clúster cuando se llama a esta rutina desalida. Si no hay ningún dato que pasar a la rutina de salida, la serie está enblanco.

Para determinar el valor de este atributo, utilice el selector CACLWD con lallamada MQINQ.

ClusterWorkloadExit (serie de caracteres de n bytes)Nombre de la rutina de salida de usuario para la gestión de carga de trabajode clúster.

Si el nombre no está en blanco, se llama a la rutina de salida cada vez que sepone un mensaje en una cola de clúster o se mueve un mensaje desde una colaemisora de clúster a otra. A continuación, la rutina de salida puede decidir siacepta la instancia de cola seleccionada por el gestor de colas como destino delmensaje o si elige otra instancia de cola.

Nota: Tanto la longitud como el valor de este atributo son específicos de cadaentorno. Vea el manual MQSeries Intercommunication para obtener másdetalles del valor de este atributo en varios entornos.

Para determinar el valor de este atributo, utilice el selector CACLWX con lallamada MQINQ. La longitud de este atributo la indica LNEXN.

ClusterWorkloadLength (entero de 10 dígitos con signo)Longitud máxima de los datos de mensaje que se pasan a la rutina de salidade carga de trabajo de clúster.

Es la longitud máxima de los datos de mensaje que se pasan a la rutina desalida de carga de trabajo de clúster. La longitud real de los datos que se pasana la rutina de salida es la menor de las siguientes:v La longitud del mensaje.v El atributo MaxMsgLength del gestor de colas.v El atributo ClusterWorkloadLength.

Para determinar el valor de este atributo, utilice el selector IACLWL con lallamada MQINQ.

CodedCharSetId (entero de 10 dígitos con signo)Identificador de juego de caracteres codificados.

Define el juego de caracteres utilizado por el gestor de colas para todos loscampos de series de caracteres definidos en la MQI, incluyendo los nombres deobjetos y la fecha y hora de creación de colas. Debe ser el identificador de unjuego de caracteres de un solo byte (SBCS). No se aplica a los datos deaplicaciones transportados en el mensaje. El valor depende del entorno:v En OS/400, el valor es el establecido en el entorno la primera vez que se

crea el gestor de colas.

Para determinar el valor de este atributo, utilice el selector IACCSI con lallamada MQINQ.

CommandInputQName (serie de caracteres de 48 bytes)Nombre de la cola de entrada de mandatos.

Atributos - gestor de colas

340 Consulta de programación de aplicaciones (ILE RPG)

||||

||

|||

|||||

|||

||

|||

|||

|

|

|

||

Page 355: amqwak00

Es el nombre de la cola de entrada de mandatos definida en el gestor de colaslocal. Es una cola a la que las aplicaciones pueden enviar mandatos, si tienenautorización para hacerlo. El nombre de la cola depende del entorno:v En OS/400, el nombre de la cola es SYSTEM.ADMIN.COMMAND.QUEUE y

solo se pueden enviar a ella mandatos PCF. No obstante, se puede enviar unmandato MQSC a esta cola si se encierra dentro de un mandato PCF de tipoCMESC. Vea el manual MQSeries Programmable System Management paraobtener más mandatos del mandato Escape.

Para determinar el valor de este atributo, utilice el selector CACMDQ con lallamada MQINQ. La longitud de este atributo la indica LNQN.

CommandLevel (entero de 10 dígitos con signo)Nivel de mandatos.

Indica el nivel de los mandatos de control del sistema soportados por el gestorde colas. El valor es uno de los siguientes:

CMLVL1Nivel 1 de mandatos de control del sistema.

Este valor es devuelto por:v MQSeries para OS/400

– Versión 2 Release 3– Versión 3 Release 1– Versión 3 Release 6

CML320Nivel 320 de mandatos de control del sistema.

Este valor lo devuelve:v MQSeries para OS/400

– Versión 3 Release 2– Versión 3 Release 7

CML420Nivel 420 de mandatos de control del sistema.

Este valor lo devuelve:v MQSeries para AS/400

– Versión 4 Release 2.0– Versión 4 Release 2.1

CML510Nivel 510 de mandatos de control del sistema.

Este valor lo devuelve:v MQSeries para AS/400 Versión 5 Release 1

El conjunto de mandatos de control del sistema que corresponde a undeterminado valor del atributo CommandLevel varía en función del valor delatributo Platform; ambos deben usarse para indicar los mandatos de controldel sistema a los que se da soporte.

Para determinar el valor de este atributo, utilice el selector IACMDL con lallamada MQINQ.

DeadLetterQName (serie de caracteres de 48 bytes)Nombre de la cola de mensajes no entregados.

Atributos - gestor de colas

Capítulo 43. Atributos del gestor de colas 341

||

||||

||

||

|

Page 356: amqwak00

Es el nombre de una cola definida en el gestor de colas local. Los mensajes seenvían a esta cola si no pueden direccionarse al destino correcto.

Los mensajes se transfieren a esta cola cuando, por ejemplo:v Un mensaje llega a un gestor de colas destinado a una cola que aún no se ha

definido en el gestor de colasv Un mensaje llega a un gestor de colas, pero la cola a la que está destinado

no puede recibirlo debido a que, posiblemente:– La cola está llena– Están inhibidas las peticiones de transferencia– El nodo emisor no tiene autorización para poner mensajes en la cola

Las aplicaciones también pueden poner mensajes en la cola de mensajes noentregados.

Los mensajes de informe se tratan del mismo modo que los mensajesordinarios; si el mensaje de informe no puede entregarse en la cola destino(normalmente la cola especificada por el campo MDRQ en el descriptor demensaje original), el mensaje de informe se coloca en la cola de mensajes noentregados.

Nota: Los mensajes caducados (vea el campo MDEXP que se describe en el“Capítulo 10. MQMD - Descriptor de mensaje” en la página 85) no setransfieren a esta cola cuando se descartan. No obstante, sí se generaráun mensaje de informe de caducidad (ROEXP) y se enviará a la colaMDRQ, si así lo solicita la aplicación emisora.

Los mensajes no se ponen en la cola de mensajes no entregados (mensajes enespera) cuando el problema se notifica síncronamente a la aplicación que haemitido la petición de poner por medio del código de razón devuelto por lallamada MQPUT o MQPUT1 (por ejemplo, como en el caso de poner unmensaje en una cola local en la que están inhibidas las peticiones de poner).

A veces, los mensajes de la cola de mensajes no entregados (mensajes enespera) tienen prefijados los datos del mensaje de aplicación con una estructuraMQDLH. Esta estructura contiene información adicional que indica el motivopor el que se colocó el mensaje en la cola de mensajes no entregados. En el“Capítulo 7. MQDLH - Cabecera de mensaje no entregado” en la página 43encontrará más detalles sobre esta estructura.

Esta debe ser una cola local del gestor de colas, con el atributo UsageUSNORM.

Si una cola de mensajes no entregados (mensajes en espera) no está soportadapor un gestor de colas o no está definida, el nombre estará todo en blanco.Todos los gestores de colas de MQSeries soportan una cola de mensajes noentregados, pero la cola de mensajes no entregados no está definida poromisión.

Si la cola de mensajes no entregados no está definida o está llena o no sepuede utilizar por alguna razón, el mensaje que un agente de canal demensajes hubiera puesto en ella queda, en cambio, retenido en la cola detransmisión.

Atributos - gestor de colas

342 Consulta de programación de aplicaciones (ILE RPG)

Page 357: amqwak00

Para determinar el valor de este atributo, utilice el selector CADLQ con lallamada MQINQ. La longitud de este atributo la indica LNQN.

DefXmitQName (serie de caracteres de 48 bytes)Nombre de la cola de transmisión por omisión.

Es el nombre de la cola de transmisión que se utiliza para transmitir mensajesa gestores de colas remotos, si no hay ninguna indicación que mencione otracola de transmisión.

Si no hay ninguna cola de transmisión por omisión, el nombre estará todo enblanco. El valor inicial de este atributo es en blanco.

Para determinar el valor de este atributo, utilice el selector CADXQN con lallamada MQINQ. La longitud de este atributo la indica LNQN.

DistLists (entero de 10 dígitos con signo)Soporte de lista de distribución.

Indica si el gestor de colas local soporta las listas de distribución en lasllamadas MQPUT y MQPUT1. El valor es uno de los siguientes:

DLSUPPListas de distribución soportadas.

DLNSUPListas de distribución no soportadas.

Para determinar el valor de este atributo, utilice el selector IADIST con lallamada MQINQ.

InhibitEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de inhibir (inhibir obtener e inhibir poner).

Es uno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IAINHE con lallamada MQINQ.

LocalEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de error locales.

Es uno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IALCLE con lallamada MQINQ.

MaxHandles (entero de 10 dígitos con signo)Número máximo de asas.

Atributos - gestor de colas

Capítulo 43. Atributos del gestor de colas 343

Page 358: amqwak00

Es el número máximo de asas abiertas que cualquier tarea puede utilizarconcurrentemente. Cada llamada MQOPEN satisfactoria para una sola cola (opara un objeto que no sea una cola) utiliza un asa. Esta asa estará disponiblepara reutilización cuando se cierre el objeto. No obstante, cuando se abre unalista de distribución, se asigna un asa aparte a cada cola de la lista dedistribución, de manera que la llamada MQOPEN utiliza tantas asas comocolas haya en la lista de distribución. Esto debe tenerse en cuenta cuando seelija un valor apropiado de MaxHandles.

La llamada MQPUT1 realiza una llamada MQOPEN como parte de su proceso;como resultado, MQPUT1 utiliza tantas asas como lo haría MQOPEN, aunquesolo las utiliza el tiempo que dura la llamada MQPUT1.

El valor está comprendido entre 1 y 999.999.999. El valor por omisión vienedeterminado por el entorno:v En OS/400, el valor por omisión es 256.

Para determinar el valor de este atributo, utilice el selector IAMHND con lallamada MQINQ.

MaxMsgLength (entero de 10 dígitos con signo)Longitud máxima del mensaje en bytes.

Es la longitud del mensaje físico más largo que puede manejar el gestor decolas. No obstante, como el atributo de gestor de colas MaxMsgLength se puedeestablecer independientemente del atributo de cola local MaxMsgLength, elmensaje físico más largo que se puede colocar en una es el menor de ambosvalores.

Si el gestor de colas da soporte a la segmentación, la aplicación puedetransferir un mensaje lógico que sea mayor que el menor de los dos atributosMaxMsgLength, aunque solo si la aplicación especifica el distintivo MFSEGA enMQMD. Si se especifica este distintivo, el límite máximo para la longitud deun mensaje lógico es de 999 999 999 bytes, pero normalmente las restriccionesde recurso impuestas por el sistema operativo, o por el entorno de ejecución dela aplicación, pueden hacer que el límite sea inferior.

El límite mínimo para el atributo MaxMsgLength es de 32 KB (32 768 bytes). Ellímite máximo viene determinado por el entorno:v En OS/400, la longitud máxima del mensaje es de 100 MB (104 857 600

bytes).

Para determinar el valor de este atributo, utilice el selector IAMLEN con lallamada MQINQ.

MaxPriority (entero de 10 dígitos con signo)Prioridad máxima.

Es la prioridad máxima que soporta el gestor de colas para un mensaje. Lasprioridades van de cero (la inferior) a MaxPriority (la más alta).

Para determinar el valor de este atributo, utilice el selector IAMPRI con lallamada MQINQ.

MaxUncommittedMsgs (entero de 10 dígitos con signo)Número máximo de mensajes no comprometidos dentro de una unidad detrabajo.

Atributos - gestor de colas

344 Consulta de programación de aplicaciones (ILE RPG)

|

||||

Page 359: amqwak00

Es el número máximo de mensajes no comprometidos que puede haber dentrode una unidad de trabajo. El número de mensajes no comprometidos es lasuma de los siguientes mensajes desde el principio de la unidad de trabajoactual:v Mensajes transferidos por la aplicación con la opción PMSYPv Mensajes recuperados por la aplicación con la opción GMSYPv Mensajes desencadenantes y mensajes de informes COA generados por el

gestor de colas para los mensajes transferidos con la opción PMSYPv Mensajes de informe COD generados por el gestor de colas para los

mensajes recuperados con la opción GMSYP

Los siguientes mensajes no se cuentan como mensajes no comprometidos:v Mensajes transferidos o recuperados por la aplicación fuera de la unidad de

trabajov Mensajes desencadenantes o mensajes de informe COA/COD generados por

el gestor de colas como resultado de mensajes transferidos o recuperadosfuera de la unidad de trabajo

v Mensajes de informe de caducidad generados por el gestor de colas (inclusosi la llamada que ha provocado dicho mensaje especificaba GMSYP)

v Mensajes de suceso generados por el gestor de colas (incluso si la llamadaque ha provocado el mensaje de suceso especificaba PMSYP o GMSYP)

Notas:

1. Los mensajes de excepción los genera el MCA (agente de canal demensajes) o la aplicación, por lo que reciben el mismo tratamiento que losmensajes normales puestos o recuperados por la aplicación.

2. Cuando se transfiere un mensaje o un segmento con la opción PMSYP, elnúmero de mensajes no comprometidos aumenta una unidad sea cual seael número de mensajes físicos que resulten realmente de la transferencia.(Puede aparecer más de un mensaje físico si el gestor de colas necesitasubdividir el mensaje o el segmento).

3. Cuando se transfiere una lista de distribución con la opción PMSYP, elnúmero de mensajes no comprometidos aumenta una unidad por mensajefísico generado. Este valor oscilar entre uno y el número de destinos que hayen la lista de distribución.

El límite inferior de este atributo es 1 y el límite superior es 999 999 999.

Para determinar el valor de este atributo, utilice el selector IAMUNC con lallamada MQINQ.

PerformanceEvent (entero de 10 dígitos con signo)Controla si se generan sucesos relacionados con el rendimiento.

Es uno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IAPFME con lallamada MQINQ.

Atributos - gestor de colas

Capítulo 43. Atributos del gestor de colas 345

Page 360: amqwak00

Platform (entero de 10 dígitos con signo)Plataforma en la que se ejecuta el gestor de colas.

Indica la arquitectura de la plataforma en la que está ejecutándose el gestor decolas. El valor es:

PL400 OS/400.

QMgrDesc (serie de caracteres de 64 bytes)Descripción del gestor de colas.

Es un campo que puede utilizarse para un comentario descriptivo. Elcontenido del campo no es significativo para el gestor de colas, aunque dichogestor puede necesitar que el campo contenga únicamente caracteres quepuedan visualizarse. No puede contener caracteres nulos; si es necesario, serellenará a la derecha con blancos. En una instalación DBCS, este campo puedecontener caracteres DBCS (con una longitud máxima de campo de 64 bytes).

Nota: Si este campo contiene caracteres que no se encuentran en el juego decaracteres del gestor de colas (definido en el atributo de gestor de colasCodedCharSetId), los caracteres pueden convertirse erróneamente si elcampo se envía a otro gestor de colas.

En OS/400, el valor por omisión es en blanco.

Para determinar el valor de este atributo, utilice el selector CAQMD con lallamada MQINQ. La longitud de este atributo la indica LNQMD.

QMgrIdentifier (serie de caracteres de 48 bytes)Identificador exclusivo del gestor de colas generado internamente.

Es un nombre exclusivo generado internamente para el gestor de colas.

Para determinar el valor de este atributo, utilice el selector CAQMID con lallamada MQINQ. La longitud de este atributo la indica LNQMID.

QMgrName (serie de caracteres de 48 bytes)Nombre del gestor de colas.

Es el nombre del gestor de colas local, correspondiente al nombre del gestor decolas al que está conectada la aplicación.

Los 12 primeros caracteres del nombre se utilizan para construir unidentificador de mensaje exclusivo (vea el campo MDMID que se describe en el“Capítulo 10. MQMD - Descriptor de mensaje” en la página 85). Así pues, losgestores de colas que puedan comunicarse entre sí deberán tener nombrescuyos 12 primeros caracteres sean distintos, para que así los identificadores demensaje sean exclusivos en la red de gestores de colas.

Para determinar el valor de este atributo, utilice el selector CAQMN con lallamada MQINQ. La longitud de este atributo la indica LNQMN.

RemoteEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de error remotos.

Es uno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

Atributos - gestor de colas

346 Consulta de programación de aplicaciones (ILE RPG)

||

|

||

Page 361: amqwak00

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IARMTE con lallamada MQINQ.

RepositoryName (serie de caracteres de 48 bytes)Nombre de clúster para el que este gestor de colas proporciona servicios dedepósito.

Es el nombre de un clúster para el que este gestor de colas proporciona unservicio de gestor de depósito. Si el gestor de colas proporciona este servicio amás de un clúster, RepositoryNamelist especifica el nombre de un objeto listade nombres que identifica a los clústeres y RepositoryName está en blanco. Almenos uno de los atributos RepositoryName y RepositoryNamelist debe estaren blanco.

Para determinar el valor de este atributo, utilice el selector CARPN con lallamada MQINQ. La longitud de este atributo la indica LNQMN.

RepositoryNamelist (serie de caracteres de 48 bytes)Nombre del objeto lista de nombres que contiene los nombres de los clústerespara los que este gestor de colas proporciona servicios de depósito.

Es el nombre del objeto lista de nombres que contiene los nombres de losclústeres a los que este gestor de colas proporciona un servicio de gestor dedepósito. Si el gestor de colas proporciona este servicio a un solo clúster, elobjeto lista de nombres contiene un solo nombre. Asimismo, se puede utilizarRepositoryName para especificar el nombre del clúster, en cuyo casoRepositoryNamelist quedará en blanco. Al menos uno de los atributosRepositoryName y RepositoryNamelist debe estar en blanco.

Para determinar el valor de este atributo, utilice el selector CARPNL con lallamada MQINQ. La longitud de este atributo la indica LNNLN.

StartStopEvent (entero de 10 dígitos con signo)Controla si se generan sucesos de inicio y detención.

Es uno de los siguientes:

EVRDISNotificación de sucesos inhabilitada.

EVRENANotificación de sucesos habilitada.

Para determinar el valor de este atributo, utilice el selector IASSE con lallamada MQINQ.

SyncPoint (entero de 10 dígitos con signo)Disponibilidad de punto de sincronismo.

Indica si el gestor de colas local soporta las unidades de trabajo y el punto desincronismo con las llamadas MQGET, MQPUT y MQPUT1.

SPAVLEstán disponibles unidades de trabajo y punto de sincronismo.

SPNAVLNo están disponibles unidades de trabajo ni punto de sincronismo.

Atributos - gestor de colas

Capítulo 43. Atributos del gestor de colas 347

|||

||||||

||

|||

|||||||

||

Page 362: amqwak00

Para determinar el valor de este atributo, utilice el selector IASYNC con lallamada MQINQ.

TriggerInterval (entero de 10 dígitos con signo)Intervalo de mensaje desencadenante.

Es un intervalo de tiempo (en milésimas de segundo) utilizado para restringirel número de mensajes desencadenantes. Esto solo es pertinente cuandoTriggerType es TTFRST. En este caso, los mensajes desencadenantes solo segeneran con normalidad cuando llega un mensaje adecuado a la cola y estaestaba previamente vacía. Bajo ciertas circunstancias, sin embargo, se puedegenerar un mensaje desencadenante adicional con el desencadenamientoTTFRST aunque la cola no estuviera vacía. Estos mensajes desencadenantesadicionales no se generan con más frecuencia que cada TriggerIntervalmilisegundos.

Si desea más información sobre el desencadenamiento, consulte MQSeriesApplication Programming Guide.

El valor no es inferior a 0 ni superior a 999 999 999. El valor por omisión es999 999 999.

Para determinar el valor de este atributo, utilice el selector IATRGI con lallamada MQINQ.

Atributos - gestor de colas

348 Consulta de programación de aplicaciones (ILE RPG)

Page 363: amqwak00

Parte 4. Aplicaciones

Capítulo 44. Creación de una aplicación . . . 351Archivos de copia MQSeries . . . . . . . . 351Preparación de los programas para su ejecución 351Interfaces para el gestor de punto de sincronismoexterno de AS/400 . . . . . . . . . . . 352Puntos de sincronismo en las aplicaciones CICSpara AS/400. . . . . . . . . . . . . . 353

Capítulo 45. Programas de ejemplo . . . . . 355Características explicadas en los programas deejemplo . . . . . . . . . . . . . . . 356Preparación y ejecución de los programas deejemplo . . . . . . . . . . . . . . . 357

Ejecución de los programas de ejemplo . . . . 357El programa de ejemplo de poner . . . . . . 357

Diseño del programa de ejemplo de poner . . 358El programa de ejemplo de examinar . . . . . 358

Diseño del programa de ejemplo de examinar 358El programa de ejemplo de obtener . . . . . . 359

Diseño del programa de ejemplo de obtener . . 359El programa de ejemplo de petición . . . . . . 360

Utilización del desencadenamiento con elejemplo de petición . . . . . . . . . . 360Diseño del programa de ejemplo de petición 361

El programa de ejemplo de eco . . . . . . . 363Diseño del programa de ejemplo de eco . . . 364

El programa de ejemplo de consultar . . . . . 364Diseño del programa de ejemplo de consultar 365

El programa de ejemplo de establecer . . . . . 366Diseño del programa de ejemplo de establecer 366

Los programas de ejemplo de desencadenamiento 367El supervisor de desencadenamiento de ejemploAMQ3TRG4 . . . . . . . . . . . . . 367

Diseño del supervisor de desencadenamiento 367El servidor desencadenante de ejemploAMQ3SRV4 . . . . . . . . . . . . . 368

Diseño del servidor desencadenante . . . . 368Finalización de los programas de ejemplo dedesencadenamiento . . . . . . . . . . 368

Ejecución de los ejemplos utilizando colas remotas 369

© Copyright IBM Corp. 1994, 2000 349

|||

Page 364: amqwak00

Aplicaciones

350 Consulta de programación de aplicaciones (ILE RPG)

Page 365: amqwak00

Capítulo 44. Creación de una aplicación

Las publicaciones OS/400 explican cómo crear aplicaciones ejecutables a partir delos programas escritos por el usuario. Este capítulo describe las tareas adicionales ylos cambios en las tareas estándar que deben realizarse al crear aplicacionesMQSeries para AS/400 que se ejecuten bajo OS/400.

Además de codificar las llamadas MQI en el código fuente, debe añadir lassentencias en el lenguaje adecuado para incluir los archivos de copia MQSeriespara AS/400 para el lenguaje RPG. Debe familiarizarse con el contenido de estosarchivos: verá sus nombres y una breve descripción de sus contenido en elsiguiente texto.

Archivos de copia MQSeriesMQSeries para AS/400 proporciona archivos de copia para ayudarle a escribiraplicaciones en el lenguaje de programación RPG. Son los archivos apropiadospara utilizarse con el Compilador IBM ILE RPG/400™ (5716-RG1).

Los archivos de copia proporcionados por MQSeries para AS/400 para ayudarle aescribir rutinas de salida de canal están descritos en el manual MQSeriesIntercommunication.

Los nombres de los archivos de copia MQSeries para AS/400 para RPG tienen elprefijo CMQ. Tienen el sufijo G. Hay otros archivos de copia que contienen lasconstantes con nombre y un archivo para cada una de las estructuras. Los archivosde copia están listados en la Tabla 2 en la página 8.

Nota: Para ILE RPG/400, se facilitan como miembros del archivo QRPGLESRC dela biblioteca QMQM.

Las declaraciones de estructura no contienen sentencias DS. Esto permite a laaplicación declarar una estructura de datos (o una estructura de datos queaparezca varias veces) codificando la sentencia DS y utilizando la sentencia /COPYpara copiar en el resto de la declaración:

Para ILE RPG/400, la sentencia es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7D* Declarar una estructura de datos MQMDD MQMD DSD/COPY CMQMDG

Preparación de los programas para su ejecuciónPara crear una aplicación ejecutable MQSeries para AS/400, debe compilar elcódigo fuente que ha escrito.

Para hacerlo en ILE RPG/400, puede utilizar los mandatos habituales de OS/400,CRTRPGMOD y CRTPGM.

Después de crear *MODULE, necesitará también hacer referencia al programa deservicio QMQM/AMQZSTUB al crear el programa ILE RPG/400 mediante elmandato CRTPGM.

© Copyright IBM Corp. 1994, 2000 351

Page 366: amqwak00

Asegúrese de que la biblioteca que contiene los archivos de copia (QMQM) seencuentre en la lista de bibliotecas cuando lleve a cabo la compilación. QMQMtambién debe estar en la lista de bibliotecas cuando ejecute la aplicación.

Interfaces para el gestor de punto de sincronismo externo de AS/400MQSeries para AS/400 utiliza el control de compromiso de OS/400 original comocoordinador de punto de sincronismo externo. Vea AS/400 Programación: Guía decopia de seguridad y recuperación si desea obtener más información acerca de lasposibilidades de control de compromiso de OS/400.

Para iniciar los servicios de control de compromiso de OS/400, utilice el mandatoSTRCMTCTL del sistema. Para finalizar el control de compromiso, utilice elmandato ENDCMTCTL del sistema.

Nota: El valor por omisión del ámbito de definición de compromiso es *ACTGRP. Estodebe estar definido como *JOB para MQSeries para AS/400 . Por ejemplo:STRCMTCTL LCKLVL(*ALL) CMTSCOPE(*JOB)

Si llama a MQPUT, MQPUT1 o MQGET, especificando MQPMO_SYNCPOINT oMQGMO_SYNCPOINT, después de iniciar el control de compromiso, MQSeriespara AS/400 se añade como recurso de compromiso de API a la definición decompromiso. Esta es normalmente la primera de este tipo de llamadas en untrabajo. Mientras haya algún recurso de compromiso de API registrado bajo unadefinición de compromiso concreta, no podrá finalizar el control de compromisopara dicha definición.

MQSeries para AS/400 elimina su registro como recurso de compromiso de APIcuando usted se desconecta del gestor de colas, siempre que no haya operacionesMQI pendientes en la unidad de trabajo actual.

Si se desconecta del gestor de colas mientras haya operaciones MQPUT, MQPUT1o MQGET pendientes en la unidad de trabajo actual, MQSeries para AS/400permanece registrado como recurso de compromiso de API, por lo que recibenotificación del siguiente compromiso o retroacción. Cuando se alcanza el siguientepunto de sincronismo, MQSeries para AS/400 compromete o retrotrae los cambios,según sea necesario. Una aplicación puede desconectarse y reconectarse a un gestorde colas durante una unidad de trabajo activa, y realizar más operaciones MQGETy MQPUT dentro de la misma unidad de trabajo (esto es una desconexiónpendiente).

Si intenta emitir un mandato del sistema ENDCMTCTL para esta definición decompromiso, se emite el mensaje CPF8355, lo que indica que había cambiospendientes activos. Este mensaje también aparece en las anotaciones de trabajocuando el trabajo finaliza. Para evitar que esto ocurra, asegúrese de quecompromete o retrotrae todas las operaciones MQSeries para AS/400 pendientes, yque se desconecta del gestor de colas. De esta manera, si utiliza los mandatosCOMMIT o ROLLBACK antes de ENDCMTCTL, la finalización del control decompromiso tendría que completarse satisfactoriamente.

Cuando se utiliza el control de compromiso de OS/400 como coordinador depunto de sincronismo externo, puede que no se emitan las llamadas MQCMIT,MQBACK y MQBEGIN. Las llamadas a estas funciones fallan con el código derazón MQRC_ENVIRONMENT_ERROR.

Preparación de los programas

352 Consulta de programación de aplicaciones (ILE RPG)

|

||

||||

|||

||

|

|||||||

|||

|||||||||

||||||||

||||

Page 367: amqwak00

Para comprometer o retrotraer (esto es, restituir) la unidad de trabajo, utilice unode los siguientes lenguajes de programación que dan soporte al control decompromiso. Por ejemplo:v Mandatos CL: COMMIT y ROLLBACKv Funciones de programación ILE C: _Rcommit y _Rrollbackv RPG/400: COMIT y ROLBKv COBOL/400: COMMIT y ROLLBACK

Puntos de sincronismo en las aplicaciones CICS para AS/400MQSeries para AS/400 participa en unidades de trabajo con CICS. MQI se puedeutilizar en una aplicación CICS para transferir y obtener mensajes dentro de launidad de trabajo actual.

El mandato EXEC CICS SYNCPOINT se puede utilizar para establecer un punto desincronismo que incluya las operaciones de MQSeries para AS/400 . Para restituirtodos los cambios hasta el punto de sincronismo anterior, deberá utilizar elmandato EXEC CICS SYNCPOINT ROLLBACK.

Si utiliza MQPUT, MQPUT1 o MQGET con MQPMO_SYNCPOINT oMQGMO_SYNCPOINT, como opción definida en una aplicación CICS, no podrádesconectar CICS hasta que MQSeries para AS/400 haya eliminado su registrocomo recurso de compromiso de API. Por lo tanto, deberá comprometer o restituircualquier operación de poner o de obtener antes de desconectarse del gestor decolas. Esto le permitirá terminar la sesión de CICS.

punto de sincronismo de MQSeries para AS/400

Capítulo 44. Creación de una aplicación 353

|||

|

|

|

|

|

Page 368: amqwak00

Aplicaciones

354 Consulta de programación de aplicaciones (ILE RPG)

Page 369: amqwak00

Capítulo 45. Programas de ejemplo

Este capítulo describe los programas de ejemplos entregados junto con MQSeriespara AS/400 para RPG. Los ejemplos son demostraciones de utilizacioneshabituales de la interfaz de cola de mensajes (MQI).

Los ejemplos no intentan demostrar técnicas generales de programación, por lo quese ha omitido la comprobación de errores en un programa de producción, aunquequizá el usuario quiera incluirlas. No obstante, estos ejemplos resultan adecuadospara que los utilice como base para sus propios de programas de gestión de colasde mensajes.

El código fuente de todos los ejemplos se facilita con el producto; dicho fuenteincluye comentarios que explican las técnicas de gestión de colas de mensajesmostradas en los programas.

Hay dos juegos de programas de ejemplo en ILE:1. Programas que utilizan la MQI a través de una llamada a QMQM

El fuente existe en QMQMSAMP/QRPGLESRC. Los miembros se denominanAMQ2xxx4, donde xxx indica la función de ejemplo. Los miembros existen enQMQM/QRPGLESRC. Cada nombre de miembro tiene el sufijo “R”.

2. Programas que utilizan llamadas prototipo a la MQI

El fuente existe en QMQMSAMP/QRPGLESRC. Los miembros se denominanAMQ3xxx4, donde xxx indica la función de ejemplo. Los miembros existen enQMQM/QRPGLESRC. Cada nombre de miembro tiene el sufijo “G”.

Notas:

a. En Tabla 55 y Tabla 56 en la página 356, se utiliza el carácter “n” pararepresentar el valor numérico correspondiente.

b. Los programas desencadenantes de ejemplo solo existen para los programasque utilizan llamadas prototipo.

La Tabla 55 ofrece una lista completa de los programas de ejemplos entregados conMQSeries para AS/400 V3R1 o posterior y muestra los nombres de los programasen cada uno de los lenguajes de programación soportados. Recuerde que susnombres empiezan todos por el prefijo AMQ; los cuatro caracteres del nombreindican el lenguaje de programación.

Nota: Este capítulo le explica cómo utilizar el compilador ILE RPG/400 conllamadas prototipo a la MQI.

Tabla 55. Nombres de los programas de ejemplo

RPG (ILE)

Ejemplos de poner AMQnPUT4

Ejemplos de examinar AMQnGBR4

Ejemplos de obtener AMQnGET4

Ejemplos de petición AMQnREQ4

Ejemplos de eco AMQnECH4

Ejemplos de consultar AMQnINQ4

© Copyright IBM Corp. 1994, 2000 355

Page 370: amqwak00

Tabla 55. Nombres de los programas de ejemplo (continuación)

RPG (ILE)

Ejemplos de establecer AMQnSET4

Ejemplo de supervisor de desencadenamiento AMQ3TRG4

Ejemplo de servidor desencadenante AMQ3SRV4

Además de estos, la opción de ejemplos de MQSeries para AS/400 incluye unarchivo de datos de ejemplo, AMQSDATA, que puede utilizarse como entrada aciertos programas de ejemplo. También hay programas CL de ejemplo quemuestran tareas de administración. Los ejemplos CL se describen en la publicaciónMQSeries for AS/400 V5.1 System Administration. Podría utilizar el programa CL deejemplo para crear las colas que se vayan a utilizar con los programas de ejemplodescritos en este capítulo.

Consulte “Preparación y ejecución de los programas de ejemplo” en la página 357para saber cómo ejecutar los programas de ejemplo.

Características explicadas en los programas de ejemploLa Tabla 56 muestra las técnicas presentadas por los programas de ejemplo deMQSeries para AS/400. Algunas técnicas se utilizan en más de un programa deejemplo, pero en la tabla se indica un solo programa. Todos los ejemplos abren ycierran colas utilizando las llamadas MQOPEN y MQCLOSE, por lo que estastécnicas no se indican por separado en la tabla.

Tabla 56. Programas de ejemplo que explican la utilización de la MQI

Técnica RPG (ILE)

Utilización de las llamadas MQCONN y MQDISC AMQnECH4 oAMQnINQ4

Conectar y desconectar implícitamente AMQnPUT4

Poner mensajes mediante la llamada MQPUT AMQnPUT4

Poner un solo mensaje utilizando la llamada MQPUT1 AMQnECH4 o bienAMQnINQ4

Responder a un mensaje de petición AMQnINQ4

Obtener mensajes (sin espera) AMQnGBR4

Obtener mensajes (esperar con un límite de tiempo) AMQnGET4

Obtener mensajes (con conversión de datos) AMQnECH4

Examinar una cola AMQnGBR4

Utilizar una cola de entrada compartida AMQnINQ4

Utilizar una cola de entrada exclusiva AMQnREQ4

Utilizar la llamada MQINQ AMQnINQ4

Utilizar la llamada MQSET AMQnSET4

Utilizar una cola de respuestas AMQnREQ4

Solicitar mensajes de excepción AMQnREQ4

Aceptar un mensaje truncado AMQnGBR4

Utilizar un nombre de cola resuelto AMQnGBR4

Proceso desencadenante AMQ3SRV4 o bienAMQ3TRG4

Programas de ejemplo

356 Consulta de programación de aplicaciones (ILE RPG)

Page 371: amqwak00

Nota: Todos los programas de ejemplo producen un archivo de spool que contienelos resultados del proceso.

Preparación y ejecución de los programas de ejemploPara poder ejecutar los programas de ejemplo de MQSeries para AS/400, debecompilarlos del mismo modo que cualquier otra aplicación MQSeries para AS/400.Para ello, puede utilizar los mandatos del OS/400, CRTRPGMOD y CRTPGM.

Cuando se crean los programas AMQ3xxx4, es necesario especificarBNDSRVPGM(QMQM/LIBMQM) en el mandato CRTPGM. Esto incluye losdiversos procedimientos de MQ en el programa.

Los programas de ejemplo se encuentran en la biblioteca QMQMSAMP comomiembros de QRPGLESRC. Utilizan los archivos de copia de la biblioteca QMQM,por tanto, asegúrese de que esta biblioteca esté en la lista de bibliotecas cuando loscompile. El compilador RPG proporciona mensajes informativos porque losejemplos no utilizan muchas de las variables declaradas en los archivos de copia.

Ejecución de los programas de ejemploPuede ejecutar sus colas cuando ejecute los ejemplos, o puede ejecutarAMQSAMP4 para crear algunas colas de ejemplo. El fuente de este programa seenvía en el archivo QCLSRC de la biblioteca QMQMSAMP. Se puede compilarutilizando el mandato CRTCLPGM.

Para llamar a uno de los programas de ejemplo, utilice un mandato como:CALL PGM(QMQMSAMP/AMQ3PUT4) PARM('Nombre de cola')

donde Nombre de cola debe tener 48 caracteres de longitud, que se consiguerellenando el nombre de la cola con el número necesario de espacios en blanco.

Observe que en los programas de ejemplo de consultar y establecer, lasdefiniciones de ejemplo creadas por AMQSAMP4 hacen que las versiones C deestos ejemplos se desencadenen. Si desea desencadenar las versiones RPG, debecambiar las definiciones del proceso SYSTEM.SAMPLE.ECHOPROCESS ySYSTEM.SAMPLE.INQPROCESS y SYSTEM.SAMPLE.SETPROCESS. Puede utilizarel mandato CHGMQMPRC (descrito en el manual MQSeries for AS/400 V5.1 SystemAdministration) o editar y ejecutar AMQSAMP4 con la definición alternativa.

El programa de ejemplo de ponerEl programa de ejemplo de poner, AMQnPUT4, pone mensajes en una colautilizando la llamada MQPUT.

Para iniciar el programa, llámelo e indique el nombre de la cola destino comoparámetro del programa. El programa pone un conjunto de mensajes fijos en lacola; estos mensajes proceden del bloque de datos que hay al final del códigofuente del programa. Un programa de ejemplo de poner es AMQ3PUT4, en labiblioteca QMQMSAMP.

Al utilizar este programa de ejemplo, el mandato es:CALL PGM(QMQMSAMP/AMQ3PUT4) PARM('Nombre de cola')

Características

Capítulo 45. Programas de ejemplo 357

|||

Page 372: amqwak00

donde Nombre de cola debe tener 48 caracteres de longitud, que se consiguerellenando el nombre de la cola con el número necesario de espacios en blanco.

Diseño del programa de ejemplo de ponerEl programa utiliza la llamada MQOPEN con la opción OOOUT para abrir la coladestino para poner mensajes. Los resultados se envían como salida a un archivo despool. Si no puede abrir la cola, el programa graba un mensaje de error quecontiene el código de razón devuelto por la llamada MQOPEN. Para que elprograma sea sencillo, en esta y en las siguientes llamadas MQI, se utilizarán losvalores por omisión para numerosas opciones.

En cada línea de datos contenida en el código fuente, el programa lee el texto enun almacenamiento intermedio y utiliza la llamada MQPUT para crear un mensajede datagrama que contenga el texto de dicha línea. El programa continúa hastallegar al final de la entrada o hasta que falla la llamada MQPUT. El programa, sillega al final de la entrada, cierra la cola utilizando la llamada MQCLOSE.

El programa de ejemplo de examinarEl programa de ejemplo de examinar, AMQnGBR4, examina mensajes en una colautilizando la llamada MQGET.

El programa recupera copias de todos los mensajes de la cola especificados alllamar al programa; el mensaje permanece en la cola. Puede utilizar la colasuministrada, SYSTEM.SAMPLE.LOCAL; ejecute antes el programa de ejemplo deponer para poner algunos mensajes en la cola. Puede utilizar la colaSYSTEM.SAMPLE.ALIAS, que es un nombre de alias de la misma cola local. Elprograma continúa hasta que llega al final de la cola o hasta que falla la llamadaMQI.

Un ejemplo de mandato para llamar al programa RPG es:CALL PGM(QMQMSAMP/AMQ3GBR4) PARM('Nombre de cola')

donde Nombre de cola debe tener 48 caracteres de longitud, que se consiguerellenando el nombre de la cola con el número necesario de espacios en blanco. Porlo tanto, si está utilizando SYSTEM.SAMPLE.LOCAL como cola destino, necesita29 caracteres en blanco.

Diseño del programa de ejemplo de examinarEl programa abre la cola destino utilizando la llamada MQOPEN con la opciónOOBRW. Si no puede abrir la cola, el programa graba un mensaje de error en suarchivo de spool, que contiene el código de razón devuelto por la llamadaMQOPEN.

Para cada mensaje de la cola, el programa utiliza la llamada MQGET para copiar elmensaje de la cola y después visualiza los datos contenidos en el mensaje. Lallamada MQGET utiliza estas opciones:

GMBRWNTras la llamada MQOPEN, el cursor para examinar se coloca de formalógica antes del primer mensaje de la cola, por lo que esta opción hace quese devuelva el primer mensaje la primera vez que se realiza la llamada.

GMNWTEl programa no espera si no hay mensajes en la cola.

ejemplo de poner

358 Consulta de programación de aplicaciones (ILE RPG)

Page 373: amqwak00

GMATMLa llamada MQGET especifica un almacenamiento intermedio de tamañofijo. Si un mensaje es más largo que el almacenamiento intermedio, elprograma visualiza el mensaje truncado junto con un aviso que indica queel mensaje se ha truncado.

El programa muestra cómo deben vaciarse los campos MDMID y MDCID de laestructura MQMD tras cada llamada MQGET debido a que la llamada da a estoscampos los valores contenidos en el mensaje que recupera. Al vaciar estos campos,las siguientes llamadas MQGET recuperan mensajes en el orden en que están en lacola.

El programa continúa hasta el final de la cola; al llegar a ese punto, la llamadaMQGET devuelve el código de razón RC2033 (no hay mensajes disponibles) y elprograma visualiza un mensaje de aviso. Si la llamada MQGET falla, el programagraba un mensaje de error que contiene el código de razón en su archivo de spool.

A continuación, el programa cierra la cola utilizando la llamada MQCLOSE.

El programa de ejemplo de obtenerEl programa de ejemplo de obtener, AMQnGET4, obtiene mensajes de una colautilizando la llamada MQGET.

Cuando se llama al programa, este elimina los mensajes de la cola especificada.Puede utilizar la cola suministrada, SYSTEM.SAMPLE.LOCAL; ejecute antes elprograma de ejemplo de poner para poner algunos mensajes en la cola. Puedeutilizar la cola SYSTEM.SAMPLE.ALIAS, que es un nombre de alias de la mismacola local. El programa continúa hasta que la cola está vacía o hasta que falla unallamada MQI.

Un ejemplo de mandato para llamar al programa RPG es:CALL PGM(QMQMSAMP/AMQ3GET4) PARM('Nombre de cola')

donde Nombre de cola debe tener 48 caracteres de longitud, que se consiguerellenando el nombre de la cola con el número necesario de espacios en blanco. Porlo tanto, si está utilizando SYSTEM.SAMPLE.LOCAL como cola destino, necesita29 caracteres en blanco.

Diseño del programa de ejemplo de obtenerEl programa abre la cola destino para obtener mensajes; utiliza la llamadaMQOPEN con la opción OOINPQ. Si no puede abrir la cola, el programa graba unmensaje de error que contiene el código de razón devuelto por la llamadaMQOPEN en su archivo de spool.

Para cada mensaje de la cola, el programa utiliza la llamada MQGET para eliminarel mensaje de la cola y después visualiza los datos contenidos en el mensaje. Lallamada MQGET utiliza la opción GMWT especificando un intervalo de espera(GMWI) de 15 segundos, por lo que el programa espera durante ese período detiempo si no hay ningún mensaje en la cola. Si no llega ningún mensaje antes deque transcurra ese intervalo de tiempo, la llamada falla y devuelve el código derazón RC2033 (no hay mensajes disponibles).

El programa muestra cómo deben vaciarse los campos MDMID y MDCID de laestructura MQMD tras cada llamada MQGET debido a que la llamada da a estos

ejemplo de examinar

Capítulo 45. Programas de ejemplo 359

Page 374: amqwak00

campos los valores contenidos en el mensaje que recupera. Al vaciar estos campos,las siguientes llamadas MQGET recuperan los mensajes en el orden en que estánen la cola.

La llamada MQGET especifica un almacenamiento intermedio de tamaño fijo. Si unmensaje es más largo que el almacenamiento intermedio, la llamada falla y elprograma se detiene.

El programa continúa hasta que la llamada MQGET devuelve el código de razónRC2033 (no hay mensajes disponibles) o hasta que falla la llamada MQGET. Si lallamada falla, el programa visualiza un mensaje de error que contiene el código derazón.

A continuación, el programa cierra la cola utilizando la llamada MQCLOSE.

El programa de ejemplo de peticiónEl programa de ejemplo de petición, AMQnREQ4, muestra el proceso decliente/servidor. El ejemplo es el cliente que pone mensajes de petición en una colaprocesada por un programa servidor. Espera a que el programa servidor ponga unmensaje de respuesta en una cola de respuestas.

El ejemplo de petición pone una serie de mensajes de petición en una colautilizando la llamada MQPUT. Estos mensajes especificanSYSTEM.SAMPLE.REPLY como cola de respuestas. El programa espera mensajesde respuesta y, a continuación, los visualiza. Las respuestas solo se envían si la coladestino (que llamaremos cola de servidor) la procesa una aplicación de servidor, o sise desencadena una aplicación con dicho fin (los programas de ejemplo deconsultar y establecer se han diseñado para desencadenarse). El ejemplo espera 5minutos a que llegue la primera respuesta (para que una aplicación de servidorpueda desencadenarse) y 15 segundos a las siguientes respuestas, pero puedefinalizar sin obtener ninguna respuesta.

Para iniciar el programa, llámelo e indique el nombre de la cola destino comoparámetro del programa. El programa transfiere un grupo de mensajes fijos a lacola; estos mensajes proceden del bloque de datos que hay al final del códigofuente del programa.

Utilización del desencadenamiento con el ejemplo de peticiónPara ejecutar el ejemplo utilizando el desencadenamineto, inicie el programaservidor desencadenante, AMQ3SRV4, con respecto a la cola de inicicio requeridaen un trabajo y, a continuación, inicie AMQnREQ4 en otro trabajo. Esto significaque el servidor desencadenante estará preparado cuando el programa de ejemploenvía un mensaje.

Notas:

1. Los ejemplos utilizan la cola SYSTEM SAMPLE TRIGGER como cola de iniciciopara las colas locales SYSTEM.SAMPLE.ECHO, SYSTEM.SAMPLE.INQ oSYSTEM.SAMPLE.SET. Otra posibilidad es que defina su propia cola deinicicio.

2. Las definiciones de ejemplo creadas por AMQSAMP4 hacen que sedesencadene la versión C del ejemplo. Si desea desencadenar la versión RPG,debe cambiar las definiciones de proceso SYSTEM.SAMPLE.ECHOPROCESS ySYSTEM.SAMPLE.INQPROCESS y SYSTEM.SAMPLE.SETPROCESS. Puede

ejemplo de obtener

360 Consulta de programación de aplicaciones (ILE RPG)

Page 375: amqwak00

utilizar el mandato CHGMQMPRC (descrito en la MQSeries for AS/400 V5.1System Administration) para hacer esto, o editar y ejecutar su propia versión deAMQSAMP4.

3. Debe compilar el programa servidor desencadenante desde el fuenteproporcionado en QMQMSAMP/QRPGLESRC.

Dependiendo del proceso desencadenante que desee ejecutar, se debe llamar aAMQ3REQ4 con el parámetro que especifique los mensajes de petición que van acolocarse en una de estas colas de servidor de ejemplo:v SYSTEM.SAMPLE.ECHO (para los programas de ejemplo de eco)v SYSTEM.SAMPLE.INQ (para los programas de ejemplo de consultar)v SYSTEM.SAMPLE.SET (para los programas de ejemplo de establecer).

Verá un diagrama de flujo del programa SYSTEM.SAMPLE.ECHO en la Figura 1 enla página 363. Al utilizar el ejemplo, el mandato para emitir la petición delprograma RPG para este servidor es:

CALL PGM(QMQMSAMP/AMQ3REQ4) PARM('SYSTEM.SAMPLE.ECHO+ 30 caracteres en blanco')

ya que el nombre de cola debe tener 48 caracteres de longitud.

Nota: Esta cola de ejemplo tiene el tipo de desencadenante FIRST, por lo que sihay mensajes en las colas antes de ejecutar el ejemplo de petición, losmensajes enviados no desencadenarán las aplicaciones de servidor.

Si desea intentar otros ejemplos, puede probar las siguientes variaciones:v Utilice AMQ3TRG4 en vez de AMQ3SRV4 para someter el trabajo, pero los

posibles retrasos en el sometimiento del trabajo pueden hacer que sea menosfácil seguir lo que está sucediendo.

v Utilice las colas de ejemplo SYSTEM.SAMPLE.INQ y SYSTEM.SAMPLE.SET. Alutilizar el archivo de datos de ejemplo, los mandatos para emitir las peticionesdel programa RPG para estos servidores son, respectivamente:

CALL PGM(QMQMSAMP/AMQ3INQ4) PARM('SYSTEM.SAMPLE.INQ+ 31 caracteres en blanco')CALL PGM(QMQMSAMP/AMQ3SET4) PARM('SYSTEM.SAMPLE.SET+ 31 caracteres en blanco')

ya que el nombre de cola debe tener 48 caracteres de longitud.

Estas colas de ejemplo también tienen el tipo de desencadenante FIRST.

Diseño del programa de ejemplo de peticiónEl programa abre la cola del servidor para que pueda transferir mensajes. Utiliza lallamada MQOPEN con la opción OOOUT. Si no puede abrir la cola, el programavisualiza un mensaje de error que contiene el código de razón devuelto por lallamada MQOPEN.

El programa abre entonces la cola de respuestas llamada SYSTEM.SAMPLE.REPLYpara que pueda obtener mensajes de respuesta. Para ello, el programa utiliza lallamada MQOPEN con la opción OOINPX. Si no puede abrir la cola, el programavisualiza un mensaje de error que contiene el código de razón devuelto por lallamada MQOPEN.

Para cada línea de entrada, el programa lee el texto en un almacenamientointermedio y utiliza la llamada MQPUT para crear un mensaje de petición que

ejemplo de obtener

Capítulo 45. Programas de ejemplo 361

Page 376: amqwak00

contenga el texto de la línea. En esta llamada el programa utiliza la opción deinforme ROEXCD para solicitar que cualquier mensaje de informe que se hayaenviado acerca del mensaje de petición incluya los 100 primeros bytes de datos delmensaje. El programa continúa hasta llegar al final de la entrada o hasta que fallala llamada MQPUT.

A continuación, el programa utiliza la llamada MQGET para eliminar los mensajesde respuesta de la cola y visualiza los datos contenidos en las respuestas. Lallamada MQGET utiliza la opción GMWT, especificando un intervalo de espera(GMWI) de 5 minutos para la primera respuesta (para que haya tiempo dedesencadenar una aplicación de servidor) y de 15 segundos para las siguientes. Elprograma espera esos períodos de tiempo si no hay mensajes en la cola. Si no lleganingún mensaje antes de que transcurra ese intervalo de tiempo, la llamada falla ydevuelve el código de razón RC2033 (no hay mensajes disponibles). La llamadatambién utiliza la opción GMATM, por lo que los mensajes cuyo tamaño sea máslargo que el declarado para el almacenamiento intermedio se truncarán.

El programa muestra cómo deben vaciarse los campos MDMID y MDCOD de laestructura MQMD tras cada llamada MQGET debido a que la llamada da a estoscampos los valores contenidos en el mensaje que recupera. Al vaciar estos campos,las siguientes llamadas MQGET recuperan los mensajes en el orden en que estánen la cola.

El programa continúa hasta que la llamada MQGET devuelve el código de razónRC2033 (no hay mensajes disponibles) o hasta que falla la llamada MQGET. Si lallamada falla, el programa visualiza un mensaje de error que contiene el código derazón.

El programa cierra entonces la cola del servidor y la cola de respuestas utilizandola llamada MQCLOSE. La tabla 57 muestra los cambios que han de realizarse en elprograma de ejemplo de eco para ejecutar los programas de ejemplo de consultar yestablecer.

Nota: Los detalles para el programa de ejemplo de eco están incluidos comoreferencia.

Tabla 57. Detalles del programa de ejemplo de cliente/servidor

Nombre delprograma

Cola SYSTEM/SAMPLE Programa arrancado

Eco ECHO AMQ3ECH4

Consultar INQ AMQ3INQ4

Establecer SET AMQ3SET4

ejemplo de obtener

362 Consulta de programación de aplicaciones (ILE RPG)

Page 377: amqwak00

El programa de ejemplo de ecoEl programa de ejemplo de eco devuelve el mensaje enviado a una cola derespuestas. El programa se llama AMQnECH4.

Estos programas están pensados para ejecutarse como programas desencadenados,por tanto su única entrada son los datos leídos de la cola nombrada en laestructura del mensaje desencadenado.

Para que el proceso de desencadenamiento funcione, debe asegurarse de que elprograma de ejemplo de eco que desea utilizar lo desencadenen los mensajes quellegan a la cola SYSTEM.SAMPLE.ECHO. Para ello, especifique el nombre delprograma de ejemplo de eco que desea utilizar en el campo ApplId de la definicióndel proceso SYSTEM.SAMPLE.ECHOPROCESS. (Para ello, puede utilizar elmandato CHGMQMPRC, que se describe en MQSeries for AS/400 V5.1 SystemAdministration). La cola de ejemplo tiene el tipo de desencadenante FIRST; portanto, si ya hay mensajes en la cola antes de que ejecute el ejemplo de petición, losmensajes que envíe no desencadenará el ejemplo de eco.

Cuando haya establecido la definición correctamente, arranque primeroAMQ3SRV4 en un trabajo, y después arranque AMQnREQ4 en otro. Puede utilizarAMQ3TRG4 en vez de AMQ3SRV4, pero las posibles demoras en el sometimientode trabajos pueden dificultar el seguimiento de lo que está pasando.

Utilice los programas de ejemplo de petición para enviar mensajes a la colaSYSTEM.SAMPLE.ECHO. Los programas de ejemplo de eco envían un mensaje derespuesta que contiene los datos del mensaje de respuesta a la cola de respuestasespecificada en el mensaje de petición.

Programa

AMQ3REQ4

Visualizarrespuestas

Leer cola

Iniciar programa

Mensaje desencadenante

se escribe en la cola

Leer respuesta

SYSTEM.SAMPLE.ECHO

SYSTEM.SAMPLE.TRIGGER

Poner en cola

Escribir respuesta en cola

SYSTEM.SAMPLE.REPLY

Leer cola

ProgramaAMQ3SRV4

AMQ3ECH4

Figura 1. Diagrama de flujo del programa (eco) de cliente/servidor de ejemplo

ejemplo de eco

Capítulo 45. Programas de ejemplo 363

Page 378: amqwak00

Diseño del programa de ejemplo de ecoCuando se desencadena el programa, este se conecta explícitamente al gestor decolas por omisión utilizando la llamada MQCONN. Aunque esto no es necesariopara MQSeries para AS/400, significa que puede utilizar el mismo programa enotras plataformas sin cambiar el código fuente.

A continuación, el programa abre la cola indicada en la estructura del mensajedesencadenante que se pasó al arrancarlo. (Para que quede más claro, esta cola sedenominará cola de peticiones). El programa usa la llamada MQOPEN para abriresta cola para entrada compartida.

El programa utiliza la llamada MQGET para eliminar mensajes de la cola. Estallamada utiliza las opciones GMATM y GMWT, con un intervalo de espera de 5segundos. El programa prueba el descriptor de cada mensaje para saber si es unmensaje de petición; si no lo es, descarta el mensaje y visualiza un mensaje deaviso.

Para cada mensaje de petición eliminado de la cola de peticiones, el programautiliza la llamada MQPUT para transferir un mensaje de respuesta a la cola derespuestas. Este mensaje contiene el contenido del mensaje de petición.

Cuando no quedan mensajes en la cola de peticiones, el programa cierra la cola yse desconecta del gestor de colas.

Este programa también puede responder a los mensajes enviados a la cola desdeotras plataformas que no sean de MQSeries para AS/400, aunque no se facilitaningún ejemplo de esta situación. Para hacer que funcione el programa ECHO:v Escriba un programa especificando correctamente los campos Formato,

Codificación y CCSID para enviar mensajes de petición de texto.El programa ECHO solicita al gestor de colas que realice la conversión de datosdel mensaje, si es necesario.

v Especifique CONVERT(*YES) en el canal emisor de MQSeries para AS/400, si elprograma que ha escrito no proporciona una conversión similar para larespuesta.

El programa de ejemplo de consultarEl programa de ejemplo de consultar, AMQnINQ4, realiza consultas sobre algunosde los atributos de una cola utilizando la llamada MQINQ.

El programa debe ejecutarse como programa desencadenado, por lo que su únicaentrada es una estructura (de mensaje desencadenante) MQTMC que contiene elnombre de una cola destino cuyos atributos deben consultarse.

Para que el proceso de desencadenamiento funcione, debe asegurarse de que elprograma de ejemplo de consultar se desencadena mediante los mensajes quellegan a la cola SYSTEM.SAMPLE.INQ. Para ello, especifique el nombre delprograma de ejemplo de consultar en el campo ApplId de la definición de procesoSYSTEM.SAMPLE.INQPROCESS. (Para ello, puede utilizar el mandatoCHGMQMPRC, que se describe en el manual MQSeries for AS/400 V5.1 SystemAdministration). La cola de ejemplo tiene el tipo desencadenante FIRST; por tanto, siya hay mensajes en la cola antes de que ejecute el ejemplo de petición, losmensajes que envíe no desencadenarán el ejemplo de consultar.

ejemplo de eco

364 Consulta de programación de aplicaciones (ILE RPG)

Page 379: amqwak00

Cuando haya establecido la definición correctamente, arranque primeroAMQ3SRV4 en un trabajo, y después arranque AMQnREQ4 en otro. Puede utilizarAMQ3TRG4 en vez de AMQ3SRV4, pero las posibles demoras en el sometimientodel trabajo pueden dificultar el seguimiento de lo que está pasando.

Utilice el programa de ejemplo de petición para enviar mensajes de petición, cadauno que contenga únicamente un nombre de cola, a la cola SYSTEM.SAMPLE.INQ.Para cada mensaje de petición, el programa de ejemplo de consultar envía unmensaje de respuesta que contiene información acerca de la cola especificada en elmensaje de petición. Las respuestas se envían a la cola de respuestas especificadaen el mensaje de petición.

Diseño del programa de ejemplo de consultarCuando se desencadena el programa, este se conecta explícitamente al gestor decolas por omisión utilizando la llamada MQCONN. Aunque esto no es necesariopara MQSeries para AS/400, significa que puede utilizar el mismo programa enotras plataformas sin cambiar el código fuente.

A continuación, el programa abre la cola indicada en la estructura del mensajedesencadenante que se pasó al arrancarlo. (Para que quede más claro, esta cola sedenominará cola de peticiones). El programa usa la llamada MQOPEN para abrir lacola para entrada compartida.

El programa utiliza la llamada MQGET para eliminar mensajes de la cola. Estallamada utiliza las opciones GMATM y GMWT, con un intervalo de espera de 5segundos. El programa prueba el descriptor de cada mensaje para saber si es unmensaje de petición; si no lo es, descarta el mensaje y visualiza un mensaje deaviso.

Para cada mensaje de petición eliminado de la cola de peticiones, el programa leeel nombre de la cola (que llamaremos cola destino) contenido en los datos y abredicha cola utilizando la llamada MQOPEN con la opción OOINQ. Después, elprograma utiliza la llamada MQINQ para consultar los valores de los atributosInhibitGet, CurrentQDepth y OpenInputCount de la cola destino.

Si la llamada MQINQ es satisfactoria, el programa usa la llamada MQPUT paraponer un mensaje de respuesta en la cola de respuestas. Este mensaje contiene losvalores de los 3 atributos.

Si la llamada MQOPEN o MQINQ no es satisfactoria, el programa utiliza lallamada MQPUT para poner un mensaje de informe en la cola de respuestas. En elcampo MDFB del descriptor de este mensaje de informe se encuentra el código derazón devuelto por la llamada MQOPEN o MQINQ, la que haya finalizado conerror.

Después de la llamada MQINQ, el programa cierra la cola destino utilizando lallamada MQCLOSE.

Cuando no quedan mensajes en la cola de peticiones, el programa cierra la cola yse desconecta del gestor de colas.

ejemplo de consultar

Capítulo 45. Programas de ejemplo 365

Page 380: amqwak00

El programa de ejemplo de establecerEl programa de ejemplo de establecer, AMQnSET4, inhibe las operaciones de poneren una cola utilizando la llamada MQSET para cambiar el atributo InhibitPut dela cola.

El programa debe ejecutarse como programa desencadenado, por lo que su únicaentrada es una estructura (de mensaje desencadenante) MQTMC que contiene elnombre de una cola destino cuyos atributos deben consultarse.

Para que el proceso de desencadenamiento funcione, debe asegurarse de que elprograma de ejemplo de establecer se desencadena mediante los mensajes quellegan a la cola SYSTEM.SAMPLE.SET. Para ello, especifique el nombre delprograma de ejemplo de establecer en el campo ApplId de la definición de procesoSYSTEM.SAMPLE.SETPROCESS. (Para ello, puede utilizar el mandatoCHGMQMPRC, que se describe en MQSeries for AS/400 V5.1 SystemAdministration). El ejemplo de cola tiene el tipo de desencadenante FIRST; portanto, si ya hay mensajes en la cola antes de que ejecute el ejemplo de petición, losmesnajes que envíe no desencadenarán el ejemplo de establecer.

Cuando haya establecido la definición correctamente, arranque primeroAMQ3SRV4 en un trabajo, y después arranque AMQnREQ4 en otro. Puede utilizarAMQ3TRG4 en vez de AMQ3SRV4, pero las posibles demoras en el sometimientodel trabajo pueden dificultar el seguimiento de lo que está pasando.

Utilice el programa de ejemplo de petición para enviar mensajes de petición, quecontengan únicamente un nombre de cola, a la cola SYSTEM.SAMPLE.SET. Paracada mensaje de petición, el programa de ejemplo de establecer envía un mensajede respuesta que contiene la confirmación de que se han inhibido operaciones deponer en la cola especificada. Las respuestas se envían a la cola de respuestasespecificada en el mensaje de petición.

Diseño del programa de ejemplo de establecerCuando se desencadena el programa, este se conecta explícitamente al gestor decolas por omisión utilizando la llamada MQCONN. Aunque esto no es necesariopara MQSeries para AS/400, significa que puede utilizar el mismo programa enotras plataformas sin cambiar el código fuente.

A continuación, el programa abre la cola indicada en la estructura del mensajedesencadenante que se pasó al arrancarlo. (Para que quede más claro, esta cola sedenominará cola de peticiones). El programa utiliza la llamada MQOPEN para abrirla cola para entrada compartida.

El programa utiliza la llamada MQGET para eliminar mensajes de la cola. Estallamada utiliza las opciones GMATM y GMWT, con un intervalo de espera de 5segundos. El programa prueba el descriptor de cada mensaje para saber si es unmensaje de petición; si no lo es, descarta el mensaje y visualiza un mensaje deaviso.

Para cada mensaje de petición eliminado de la cola de peticiones, el programa leeel nombre de la cola (que llamaremos cola destino) contenido en los datos y abredicha cola utilizando la llamada MQOPEN con la opción OOSET. El programautiliza entonces la llamada MQSET para dar al atributo InhibitPut de la coladestino el valor QAPUTI.

ejemplo de establecer

366 Consulta de programación de aplicaciones (ILE RPG)

Page 381: amqwak00

Si la llamada MQSET es satisfactoria, el programa usa la llamada MQPUT paraponer un mensaje de respuesta en la cola de respuestas. El mensaje contiene laserie de caracteres PUT inhibited.

Si la llamada MQOPEN o MQSET no es satisfactoria, el programa utiliza lallamada MQPUT para poner un mensaje de informe en la cola de respuestas. En elcampo MDFB del descriptor de este mensaje de informe se encuentra el código derazón devuelto por la llamada MQOPEN o MQSET, la que haya finalizado conerror.

Después de la llamada MQSET, el programa cierra la cola destino utilizando lallamada MQCLOSE.

Cuando no quedan mensajes en la cola de peticiones, el programa cierra la cola yse desconecta del gestor de colas.

Los programas de ejemplo de desencadenamientoMQSeries para AS/400 facilita dos programas de ejemplo de desencadenamientoescritos en ILE/RPG. Los programas son:

AMQ3TRG4Es un supervisor de desencadenamiento para el entorno OS/400. Someteun trabajo de OS/400 para iniciar la aplicación, aunque esto significa quehay una actividad general de proceso asociada a cada mensajedesencadenante.

AMQ3SRV4Es un servidor desencadenante para el entorno OS/400. Para cada mensajedesencadenante, este servidor ejecuta el mandato de arranque en su propiotrabajo para iniciar la aplicación especificada. El servidor desencadenantepuede llamar a transacciones CICS.

Las versiones en lenguaje C de estos ejemplos también están disponibles comoprogramas ejecutables en la biblioteca QMQM, llamados AMQSTRG4 yAMQSERV4.

El supervisor de desencadenamiento de ejemplo AMQ3TRG4AMQ3TRG4 es un supervisor desencadenamiento. Toma un parámetro: el nombrede la cola de inicio a la que debe servir. AMQSAMP4 define una cola de inicio deejemplo, SYSTEM.SAMPLE.TRIGGER, que usted podrá utilizar cuando intenteejecutar los programas de ejemplo.

AMQ3TRG4 somete un trabajo de OS/400 para cada mensaje desencadenanteválido que obtiene de la cola de inicio.

Diseño del supervisor de desencadenamientoEl supervisor de desencadenamiento abre la cola de inicio y obtiene mensajes de lacola especificando un intervalo de espera ilimitado.

El supervisor de desencadenamiento somete un trabajo de OS/400 para iniciar laaplicación especificada en el mensaje desencadenante y pasa una estructuraMQTMC (una versión de tipo carácter del mensaje desencadenante). Los datos deentorno del mensaje desencadenante se utilizan como parámetros de sometimientode trabajo.

Finalmente, el programa cierra la cola de inicio.

ejemplo de establecer

Capítulo 45. Programas de ejemplo 367

Page 382: amqwak00

El servidor desencadenante de ejemplo AMQ3SRV4AMQ3SRV4 es un servidor desencadenante. Toma un parámetro: el nombre de lacola de inicio a la que debe servir. AMQSAMP4 define un ejemplo de cola deinicio, SYSTEM.SAMPLE.TRIGGER, que usted podrá utilizar cuando intenteejecutar los programas de ejemplo.

Para cada mensaje desencadenante, AMQ3SRV4 ejecuta un mandato de arranqueen su propio trabajo para iniciar la aplicación especificada.

Al utilizar la cola desencadenante de ejemplo, el mandato que se ha de emitir es:CALL PGM(QMQM/AMQ3SRV4) PARM('Nombre de cola')

donde Nombre de cola debe tener 48 caracteres de longitud, que se consiguerellenando el nombre de la cola con el número necesario de espacios en blanco. Porlo tanto, si está utilizando SYSTEM.SAMPLE.TRIGGER como cola destino,necesitará 28 caracteres en blanco.

Diseño del servidor desencadenanteEl diseño del servidor desencadenante es parecido al del supervisor dedesencadenamiento, excepto en que el servidor desencadenante:v Permite aplicaciones CICS y OS/400.v No utiliza los datos de entorno del mensaje desencadenante.v Llama a aplicaciones OS/400 en su propio trabajo (o usa STRCICSUSR para

iniciar aplicaciones CICS) en vez de someter un trabajo de OS/400.v Abre la cola de inicio para entrada compartida, por lo que varios servidores

desencadenantes pueden ejecutarse al mismo tiempo.

Nota: Los programas iniciados por AMQ3SRV4 no deben utilizar la llamadaMQDISC, ya que esta detendría el servidor desencadenante. Si losprogramas iniciados por AMQ3SRV4 utilizan la llamada MQCONN,obtendrán el código de razón RC2002.

Finalización de los programas de ejemplo dedesencadenamiento

Un programa de supervisor de desencadenamiento puede finalizarse mediante laopción 2 de petición del sistema (ENDRQS) o inhibiendo las obtenciones de la coladesencadenante. Si se utiliza la cola desencadenante de ejemplo, el mandato es:CHGMQMQ QNAME('SYSTEM.SAMPLE.TRIGGER') GETENBL(*NO)

Nota: Para arrancar de nuevo el desencadenamiento en esta cola, debe entrar elmandato:CHGMQMQ QNAME('SYSTEM.SAMPLE.TRIGGER') GETENBL(*YES)

ejemplo de desencadenamiento

368 Consulta de programación de aplicaciones (ILE RPG)

Page 383: amqwak00

Ejecución de los ejemplos utilizando colas remotasPuede comprobar la gestión de colas remotas ejecutando los ejemplos en gestoresde colas de mensajes conectados.

El programa AMQSAMP4 proporciona una definición local de cola remota(SYSTEM.SAMPLE.REMOTE) que utiliza un gestor de colas remotas llamado OTRO.Para utilizar esta definición de ejemplo, cambie OTHER por el nombre del segundogestor de colas de mensajes que desee utilizar. También deberá configurar un canalde mensajes entre los dos gestores de colas de mensajes; en el manual MQSeriesIntercommunication encontrará información sobre cómo realizar esta operación.

El programa de ejemplo de petición transfiere el nombre de su propio gestor decolas local al campo MDRM de los mensajes que envía. Los ejemplos de consultar yestablecer envían mensajes de respuesta a la cola y al gestor de colas de mensajesnombrados en los campos MDRQ y MDRM de los mensajes de petición que procesan.

Ejecución de los ejemplos

Capítulo 45. Programas de ejemplo 369

Page 384: amqwak00

Aplicaciones

370 Consulta de programación de aplicaciones (ILE RPG)

Page 385: amqwak00

Parte 5. Apéndices

© Copyright IBM Corp. 1994, 2000 371

Page 386: amqwak00

372 Consulta de programación de aplicaciones (ILE RPG)

Page 387: amqwak00

Apéndice A. Códigos de retorno

Para cada llamada, el gestor de colas o una rutina de salida devuelven un códigode terminación y un código de razón para indicar si la llamada se ha realizado ono satisfactoriamente.

No se comprobará si hay errores en las aplicaciones en un orden específico,excepto cuando se indique de forma explícita. Si aparece más de un código determinación o de razón procedentes de una llamada, el error notificado dependeráde la implementación.

Códigos de terminaciónEl parámetro código de terminación (CMPCOD) permite al llamador ver rápidamentesi la llamada se ha completado parcial o totalmente o si ha fallado.

A continuación se proporciona una lista de códigos de terminación, coninformación más detallada que la indicada en las descripciones de las llamadas:

CCOKLa llamada se ha completado satisfactoriamente.

La llamada se ha completado del todo; se han establecido todos losparámetros de salida. En este caso, el parámetro REASON tiene siempre elvalor RCNONE.

CCWARNAviso (la llamada se ha completado parcialmente).

La llamada se ha completado en parte. Pueden haberse establecido algunosparámetros de salida además de los parámetros de salida CMPCOD y REASON.El parámetro REASON facilita información adicional sobre la realizaciónparcial.

CCFAILLa llamada ha fallado.

El proceso de la llamada no se ha completado y el estado del gestor decolas generalmente no varía; en caso contrario, se indicará de formaespecífica. Se han establecido los parámetros de salida CMPCOD y REASON; losdemás parámetros no han variado, salvo que se indique lo contrario.

Puede deberse a un error en el programa de aplicación o puede ser elresultado de alguna situación externa al programa; por ejemplo, es posibleque se haya revocado la autorización de la aplicación. El parámetro REASONfacilita información adicional sobre el error.

Códigos de razónEl parámetro código de razón (REASON) permite calificar el parámetro código determinación CMPCOD.

Si no hay ninguna razón especial que notificar, se devuelve RCNONE. Si lallamada es satisfactoria, se devuelve CCOK y RCNONE.

© Copyright IBM Corp. 1994, 2000 373

Page 388: amqwak00

Si el código de terminación es CCWARN o CCFAIL, el gestor de colas siempreinforma de una razón calificadora; los detalles se facilitan en la descripción de cadallamada.

Donde las rutinas de salida del usuario establezcan códigos de terminación y derazón, los códigos deberán ajustarse a estas normas.

Todos los valores de razón especiales definidos por las rutinas de salida de usuariodeben ser menores que cero para garantizar que no entran en conflicto con losvalores definidos por el gestor de colas. Las rutinas de salida pueden establecerrazones ya definidas por el gestor de colas donde corresponda.

También aparecen códigos de razón en:v El campo DLREA de la estructura MQDLH (para mensajes de la cola de mensajes

no entregados)v El campo MDFB de la estructura MQMD (descriptor de mensaje)

A continuación se proporciona una lista de códigos de razón, por orden alfabético,con información más detallada que la indicada en las descripciones de lasllamadas.

RCNONE(0, X'000') No hay ninguna razón que notificar.

La llamada se ha completado con normalidad. El código de terminación(CMPCOD) es CCOK.

Acción correctora: ninguna.

RC0900(900, X'384') El valor más bajo de un código de razón definido poraplicación y devuelto por una rutina de salida de conversión de datos.

Las rutinas de salida de conversión de datos pueden devolver los códigosde razón comprendidos entre RC0900 y RC0999 con el fin de indicardeterminadas condiciones detectadas por la rutina de salida.

Acción correctora: la que defina el escritor de la rutina de salida deconversión de datos.

RC0999(999, X'3E7') El valor más alto de un código de razón definido poraplicación y devuelto por una rutina de salida de conversión de datos.

Las rutinas de salida de conversión de datos pueden devolver los códigosde razón comprendidos entre RC0900 y RC0999 con el fin de indicardeterminadas condiciones detectadas por la rutina de salida.

Acción correctora: la que defina el escritor de la rutina de salida deconversión de datos.

RC2001(2001, X'7D1') El tipo de cola alias base no es válido.

Se ha emitido una llamada MQOPEN o MQPUT1 que especifica una colaalias como destino, pero el campo BaseQName de la definición de cola aliasse resuelve en una cola que no es local, en una definición local de una colaremota o en una cola de clúster.

Acción correctora: corrija las definiciones de cola.

Códigos de retorno

374 Consulta de programación de aplicaciones (ILE RPG)

Page 389: amqwak00

RC2002(2002, X'7D2') Aplicación ya conectada.

Se ha emitido una llamada MQCONN, pero la aplicación ya estabaconectada al gestor de colas.

Acción correctora: ninguna. El parámetro HCONN devuelto tiene un valorigual al devuelto en la llamada MQCONN anterior.

Nota: Una llamada MQCONN que devuelva este código de razón noimplica que deba emitirse una llamada MQDISC adicional paradesconectarse del gestor de colas. Si se devuelve este código derazón porque se ha llamado a la aplicación (o a parte de ella) encircunstancias en las que ya se ha establecido la conexión, no debeemitirse la correspondiente llamada MQDISC, ya que ello provocaríaasimismo la desconexión de la aplicación que emitió la llamadaMQCONN original.

RC2003(2003, X'7D3') Una unidad de trabajo ha detectado un error muy grave o seha restituido.

Esto ocurre en los casos siguientes:v En una llamada MQCMIT o MQDISC, cuando la operación de

compromiso ha fallado y la unidad de trabajo se ha restituido. Todos losrecursos protegidos han vuelto al estado que tenían al principio de launidad de trabajo. La llamada MQCMIT devuelve el código determinación CCFAIL; la llamada MQDISC devuelve el código determinación CCWARN.– En OS/390, este código de razón solo aparece en el caso de las

aplicaciones por lotes.v En una llamada MQGET, MQPUT o MQPUT1 que esté operando en una

unidad de trabajo, cuando la unidad de trabajo ya ha detectado un errorque impide que esta se comprometa (por ejemplo, cuando se ha agotadoel espacio de anotaciones). La aplicación debe emitir la llamadaapropiada para restituir la unidad de trabajo. Para una unidad de trabajocoordinada por el gestor de colas, esta llamada es MQBACK, aunque enestas circunstancias, la llamada MQCMIT tiene el mismo efecto.– En OS/390, no se da este caso.

Acción correctora: compruebe los códigos devueltos desde las llamadasanteriores al gestor de colas. Por ejemplo, podría haber fallado unallamada MQPUT anterior.

RC2004(2004, X'7D4') El parámetro almacenamiento intermedio no es válido.

El parámetro BUFFER no es válido por una de las razones siguientes:v El puntero del parámetro no es válido. (No siempre es posible detectar

los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

v El puntero del parámetro señala a un almacenamiento al que no puedeacceder toda la longitud especificada por BUFLEN.

v Para las llamadas en que BUFFER es un parámetro de salida: el punterodel parámetro señala a un almacenamiento de solo lectura.

Acción correctora: corrija el parámetro.

Códigos de retorno

Apéndice A. Códigos de retorno 375

Page 390: amqwak00

RC2005(2005, X'7D5') El parámetro longitud de almacenamiento intermedio no esválido.

No es válido el parámetro BUFLEN o el puntero del parámetro. (No siemprees posible detectar los punteros de parámetro que no son válidos; si no sedetectan, el resultado es imprevisible).

Este código de razón también puede devolverse a un programa de clienteMQ en la llamada MQCONN si el tamaño máximo de mensaje negociadopara el canal es menor que la parte fija de cualquier estructura de llamada.

Acción correctora: especifique un valor que sea mayor o igual que cero.Para las llamadas mqAddString y mqSetString, también es válido el valorespecial MQBL_NULL_TERMINATED.

RC2006(2006, X'7D6') La longitud de los atributos de tipo carácter no es válida.

CALEN es negativo (para las llamadas MQINQ o MQSET) o su tamaño no essuficiente para dar cabida a todos los atributos seleccionados (solo para lasllamadas MQSET). Este código de razón se da también si el puntero delparámetro no es válido. (No siempre es posible detectar los punteros deparámetro que no son válidos; si no se detectan, el resultado esimprevisible).

Acción correctora: especifique un valor que sea suficiente para dar cabida alas series concatenadas de todos los atributos seleccionados.

RC2007(2007, X'7D7') La serie de atributos de tipo carácter no es válida.

CHRATR no es válido. El puntero del parámetro no es válido o señala a unalmacenamiento de solo lectura para las llamadas MQINQ o a unalmacenamiento cuya longitud es menor que la implícita en CALEN. (Nosiempre es posible detectar los punteros de parámetro que no son válidos;si no se detectan, el resultado es imprevisible).

Acción correctora: corrija el parámetro.

RC2008(2008, X'7D8') No se ha dado suficiente espacio para los atributos de tipocarácter.

Para las llamadas MQINQ, el valor de CALEN no es suficiente para contenertodos los atributos de tipo carácter para los que se han especificadoselectores CA* en el parámetro SELS.

Aún así, la llamada se completa, con la serie del parámetro CHRATRrellenada con todos los atributos de tipo carácter que quepan. Solo sedevuelven series de atributos completas: si no queda espacio suficientepara dar cabida a un atributo completo, se omitirán ese atributo y todoslos atributos de tipo carácter que le sigan. Los espacios que haya al final dela serie y que no se utilicen para contener un atributo no varían.

Acción correctora: especifique un valor suficientemente grande, a menosque solo necesite un subconjunto de los valores.

RC2009(2009, X'7D9') Se ha perdido la conexión con el gestor de colas.

Códigos de retorno

376 Consulta de programación de aplicaciones (ILE RPG)

Page 391: amqwak00

Se ha perdido la conexión con un gestor de colas. Puede deberse a quehaya finalizado el gestor de colas. Si se trata de una llamada MQGET conla opción GMWT, la espera se ha cancelado.

Si se da este código de razón con MQCONN, el gestor de colas puedehaberse detenido y rearrancado y estar disponible de nuevo. Todas las asasanteriores han dejado de ser válidas ahora, pero la aplicación puedeintentar restablecer la conexión emitiendo de nuevo la llamada MQCONN.

Tenga en cuenta que, para aplicaciones de cliente MQ, es posible que lallamada se haya completado satisfactoriamente, incluso si este código derazón se devuelve con el código de terminación CMPCOD igual a CCFAIL.

Acción correctora: las aplicaciones pueden intentar restablecer la conexiónemitiendo la llamada MQCONN. Puede ser necesario sondear hasta que sereciba una respuesta satisfactoria.

Las aplicaciones deben asegurar que se restituyen las actualizaciones queno se hayan comprometido. Las unidades de trabajo que estén coordinadaspor el gestor de colas se restituyen automáticamente.

RC2010(2010, X'7DA') El parámetro longitud de datos no es válido.

El parámetro DATLEN no es válido. El puntero del parámetro no es válido oseñala a un almacenamiento de solo lectura. (No siempre es posibledetectar los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

Este código de razón también puede devolverse a un programa de clienteMQ que esté transfiriendo y obteniendo mensajes, si la longitud de losdatos del mensaje de aplicación es superior al tamaño máximo de mensajenegociado para el canal.

Acción correctora: corrija el parámetro.

Si el error se produce en relación a un programa de cliente MQ,compruebe también que el tamaño máximo de mensaje del canal seasuficiente para dar cabida al mensaje que se envía; si no lo es, aumente eltamaño máximo de mensaje del canal.

RC2011(2011, X'7DB') El nombre de la cola dinámica no es válido.

En la llamada MQOPEN, se ha especificado una cola modelo en el campoODON del parámetro OBJDSC, pero el campo ODDN no es válido por uno deestos motivos:v ODDN está completamente en blanco (o está en blanco hasta el primer

carácter nulo del campo).v Hay caracteres que no son válidos para un nombre de cola.v Aparece un asterisco más allá de la posición 33 (y antes de un carácter

nulo).v Aparece un asterisco seguido de caracteres que no son nulos ni blancos.

Este código de razón puede aparecer a veces cuando una aplicación deservidor abre la cola de respuestas especificada por los campos MDRQ y MDRMde la estructura MQMD de un mensaje que el servidor acaba de recibir. Eneste caso, el código de razón indica que la aplicación que envió el mensajeoriginal puso valores incorrectos en los campos MDRQ y MDRM de laestructura MQMD del mensaje original.

Códigos de retorno

Apéndice A. Códigos de retorno 377

Page 392: amqwak00

Acción correctora: especifique un nombre válido.

RC2012(2012, X'7DC') La llamada no es válida en el entorno.

La llamada no es válida para el entorno actual.v En OS/390, se da una de estas situaciones:

– Se ha emitido una llamada MQCONN, pero la aplicación se habíaenlazado con un adaptador no soportado en el entorno en el que seestá ejecutando la aplicación. Por ejemplo, esto puede ocurrir cuandola aplicación está enlazada con el adaptador RRS de MQ, pero laaplicación se está ejecutando en un espacio de direcciones de unprocedimiento almacenado de DB2. En este entorno no se da soportea RRS. Los procedimientos almacenados que quieran utilizar eladaptador RRS de MQ deberán ejecutarse en un espacio dedirecciones de un procedimiento almacenado de DB2 gestionado porWLM.

– Se ha emitido una llamada MQCMIT o MQBACK en el entorno CICSo IMS.

v En Compaq (DIGITAL) OpenVMS, OS/2, OS/400, Tandem NonStopKernel, sistemas UNIX y Windows NT, se da una de estas situaciones:– La aplicación está enlazada con bibliotecas incorrectas (con hebras o

sin hebras).– Se ha emitido una llamada MQBEGIN, MQCMIT o MQBACK, pero se

está utilizando un gestor externo de unidad de trabajo o el gestor decolas no da soporte a las unidades de trabajo.

– Se ha emitido la llamada MQBEGIN en un entorno de cliente MQ.

Acción correctora: realice una de estas acciones (según corresponda):v En OS/390:

– Enlace la aplicación con el adaptador correcto.– Para una aplicación CICS o IMS, emita la llamada CICS o IMS

apropiada para comprometer o restituir la unidad de trabajo.v En los otros entornos:

– Enlace la aplicación con las bibliotecas correctas (con hebras o sinhebras).

– Elimine de la aplicación la llamada no soportada.

RC2013(2013, X'7DD') Fecha de caducidad no válida.

En una llamada MQPUT o MQPUT1, el valor especificado para el campoMDEXP del descriptor de mensaje MQMD no es válido.

Acción correctora: especifique un valor mayor que cero o el valor especialEIULIM.

RC2014(2014, X'7DE') El código de información de retorno no es válido.

En una llamada MQPUT o MQPUT1, el valor especificado para el campoMDFB del descriptor de mensaje MQMD no es válido. El valor no esFBNONE y está fuera del rango definido para los códigos de informaciónde retorno del sistema y del definido para los códigos de información deretorno de la aplicación.

Acción correctora: especifique FBNONE o un valor que esté comprendidoentre FBSFST y FBSLST o entre FBAFST y FBALST.

Códigos de retorno

378 Consulta de programación de aplicaciones (ILE RPG)

|

||

|

Page 393: amqwak00

RC2016(2016, X'7E0') Se han inhibido las obtenciones para la cola.

Las llamadas MQGET están actualmente inhibidas para la cola (vea elatributo InhibitGet de la cola descrito en el “Capítulo 37. Atributos detodas las colas” en la página 305) o para la cola en la que esta se resuelve(vea el “Capítulo 40. Atributos de colas alias” en la página 329).

Acción correctora: si el diseño del sistema permite que las aplicacionesinhiban peticiones de obtener durante períodos cortos, repita la operaciónmás adelante.

RC2017(2017, X'7E1') No hay más asas disponibles.

Se ha emitido una llamada MQOPEN o MQPUT1, pero ya se ha llegado alnúmero máximo de asas abiertas permitido para la tarea actual. Tenga encuenta que cuando se especifica una lista de distribución en la llamadaMQOPEN o MQPUT1, cada una de las colas de la lista de distribuciónutiliza un asa.

Acción correctora: compruebe si la aplicación está emitiendo llamadasMQOPEN sin las correspondientes llamadas MQCLOSE. Si es así,modifique la aplicación para que emita la llamada MQCLOSE para losobjetos abiertos que ya no sean necesarios.

Compruebe también si la aplicación está especificando una lista dedistribución que contiene un elevado número de colas que consumen todaslas asas disponibles. En este caso, aumente el número máximo de asas quepuede utilizar la tarea o reduzca el tamaño de la lista de distribución. Elnúmero de asas abiertas que puede utilizar una tarea viene determinadopor el atributo MaxHandles del gestor de colas (vea el “Capítulo 43.Atributos del gestor de colas” en la página 337).

RC2018(2018, X'7E2') El asa de conexión no es válida.

El asa de conexión HCONN no es válida. Este código de razón también seproduce si el puntero del parámetro no es válido o (para la llamadaMQCONN) si señala a un almacenamiento de solo lectura. (No siempre esposible detectar los punteros de parámetro que no son válidos; si no sedetectan, el resultado es imprevisible).

Acción correctora: asegúrese de que se realiza una llamada MQCONNsatisfactoria para el gestor de colas y de que aún no se haya realizadoninguna llamada MQDISC para él. Asegúrese de que el asa se estáutilizando en el ámbito correcto (vea la llamada MQCONN descrita en el“Capítulo 27. MQCONN - Conectar gestor de colas” en la página 231).

RC2019(2019, X'7E3') El asa de objeto no es válida.

El asa de objeto HOBJ no es válida. Este código de razón también seproduce si el puntero del parámetro no es válido o (para la llamadaMQOPEN) si señala a un almacenamiento de solo lectura. (No siempre esposible detectar los punteros de parámetro que no son válidos; si no sedetectan, el resultado es imprevisible).

Acción correctora: asegúrese de que se realiza una llamada MQOPENsatisfactoria para este objeto y de que aún no se ha realizado ningunallamada MQCLOSE para él. Para las llamadas MQGET y MQPUT,asegúrese asimismo de que el asa representa un objeto cola. Asegúrese de

Códigos de retorno

Apéndice A. Códigos de retorno 379

Page 394: amqwak00

que el asa se está utilizando en el ámbito correcto (vea la llamadaMQOPEN descrita en el “Capítulo 32. MQOPEN - Abrir objeto” en lapágina 261).

RC2020(2020, X'7E4') No es válido el valor del atributo de cola de inhibir obtener ode inhibir poner.

En una llamada MQSET, el valor especificado para el atributo IAIGET opara el atributo IAIPUT no es válido.

Acción correctora: especifique un valor válido. Vea los atributos InhibitGeto InhibitPut que se describen en el “Capítulo 37. Atributos de todas lascolas” en la página 305.

RC2021(2021, X'7E5') La cuenta de atributos de tipo entero no es válida.

En una llamada MQINQ o MQSET, el parámetro IACNT es negativo(MQINQ o MQSET) o es menor que el número de selectores de atributosde tipo entero (IA*) especificado en el parámetro SELS (solo MQSET). Estecódigo de razón se produce también si el puntero del parámetro no esválido. (No siempre es posible detectar los punteros de parámetro que noson válidos; si no se detectan, el resultado es imprevisible).

Acción correctora: especifique un valor suficientemente grande para todoslos atributos de tipo entero seleccionados.

RC2022(2022, X'7E6') No se ha dado suficiente espacio para los atributos de tipoentero.

En una llamada MQINQ, el parámetro IACNT es menor que el número deselectores de atributos de tipo entero (IA*) especificado en el parámetroSELS.

La llamada se completa con CCWARN y con la matriz INTATR rellenadacon todos los atributos de tipo entero que quepan en ella.

Acción correctora: especifique un valor suficientemente grande, a menosque solo necesite un subconjunto de los valores.

RC2023(2023, X'7E7') La matriz de atributos de tipo entero no es válida.

En una llamada MQINQ o MQSET, el parámetro INTATR no es válido. Elpuntero del parámetro no es válido (MQINQ y MQSET) o señala a unalmacenamiento de solo lectura o a un almacenamiento cuya longitud esmenor que la indicada por el parámetro IACNT (solo MQINQ). (No siemprees posible detectar los punteros de parámetro que no son válidos; si no sedetectan, el resultado es imprevisible).

Acción correctora: corrija el parámetro.

RC2024(2024, X'7E8') No pueden manejarse más mensajes dentro de la unidad detrabajo actual.

Una llamada MQGET, MQPUT o MQPUT1 es errónea debido a que haprovocado que el número de mensajes no comprometidos en la unidad detrabajo actual haya superado el límite definido por el gestor de colas (vea

Códigos de retorno

380 Consulta de programación de aplicaciones (ILE RPG)

Page 395: amqwak00

el atributo MaxUncommittedMsgs del gestor de colas). El número de mensajesno comprometidos es la suma de los mensajes siguientes desde el principiode la unidad de trabajo actual:v Los mensajes transferidos por la aplicación con la opción PMSYPv Los mensajes recuperados por la aplicación con la opción GMSYPv Los mensajes desencadenantes y los mensajes de informe COA

generados por el gestor de colas para los mensajes transferidos con laopción PMSYP

v Los mensajes de informe COD generados por el gestor de colas para losmensajes recuperados con la opción GMSYP

Acción correctora: compruebe si la aplicación se está repitiendo en bucle. Sino es así, intente reducir la complejidad de la aplicación. Opcionalmente,aumente para el gestor de colas el límite del número máximo de mensajesno comprometidos que puede haber dentro de una unidad de trabajo.v En OS/400, el límite del número máximo de mensajes no

comprometidos puede cambiarse utilizando el mandato CHGMQM.

RC2026(2026, X'7EA') El descriptor de mensaje no es válido.

La estructura MQMD no es válida. El nemotécnico de atención MDSID no escorrecto o MDVER no se ha reconocido.

Esta razón también se produce si:v El puntero del parámetro no es válido. (No siempre es posible detectar

los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

v El gestor de colas no puede copiar la estructura cambiada en elalmacenamiento de la aplicación, aunque la llamada sea satisfactoria.Esto puede producirse, por ejemplo, si el puntero señala a unalmacenamiento de solo lectura.

Acción correctora: corrija la definición del descriptor de mensaje. Asegúresede que se han establecido correctamente los campos de entradaobligatorios.

RC2027(2027, X'7EB') Falta la cola de respuestas.

En una llamada MQPUT o MQPUT1, el campo MDRQ del descriptor demensaje MQMD está en blanco, pero se da una de las siguientescircunstancias:v Se ha solicitado una respuesta (es decir, que se ha especificado MTRQST

en el campo MDMT del descriptor de mensaje).v Se ha solicitado un mensaje de informe en el campo MDREP del descriptor

de mensaje.

Acción correctora: especifique el nombre de la cola a la que debe enviarseel mensaje de respuesta o el mensaje de informe.

RC2029(2029, X'7ED') El tipo de mensaje del descriptor de mensaje no es válido.

En una llamada MQPUT o MQPUT1, el valor especificado para el campoMDMT del descriptor de mensaje (MQMD) no es válido.

Códigos de retorno

Apéndice A. Códigos de retorno 381

Page 396: amqwak00

Acción correctora: especifique un valor válido. Vea el campo MDMT descritoen el “Capítulo 10. MQMD - Descriptor de mensaje” en la página 85 paraobtener más detalles.

RC2030(2030, X'7EE') La longitud del mensaje es superior a la longitud máxima dela cola.

Se ha emitido una llamada MQPUT o MQPUT1 para poner un mensaje enuna cola, pero el mensaje era demasiado largo para la cola y no se habíaespecificado MFSEGA en el campo MDMFL de MQMD. Si no se permite lasegmentación, la longitud del mensaje no puede superar el menor de losatributos MaxMsgLength de la cola y del gestor de colas.

Este código de razón también puede darse cuando MFSEGA sí seespecifica, pero la naturaleza de los datos del mensaje es tal que impideque el gestor de colas los divida en segmentos lo suficientemente pequeñoscomo para colocarlos en la cola:v Para un formato definido por el usuario, el segmento más pequeño que

puede crear el gestor de colas es de 16 bytes.v Para un formato incorporado, el segmento más pequeño que puede crear

el gestor de colas depende del tipo de formato, pero en todos los casoses mayor que 16 bytes excepto en el de FMSTR (para FMSTR, el tamañomínimo del segmento es de 16 bytes).

RC2030 también puede darse en el campo MDFB del descriptor de unmensaje de informe; en este caso indica que el error lo detectó un agentede canal de mensajes cuando intentaba poner el mensaje en una colaremota.

Acción correctora: compruebe si el parámetro BUFLEN se ha especificadocorrectamente; en tal caso, lleve a cabo una de las tareas siguientes:v Aumente el valor del atributo MaxMsgLength de la cola; también puede

ser necesario aumentar el valor del atributo MaxMsgLength del gestor decolas.

v Divida el mensaje en varios mensajes más cortos.v Especifique MFSEGA en el campo MDMFL de MQMD; esto permitirá que

el gestor de colas divida el mensaje en segmentos.

RC2031(2031, X'7EF') La longitud del mensaje es superior al máximo permitidopor el gestor de colas.

Se ha emitido una llamada MQPUT o MQPUT1 para poner un mensaje enuna cola, pero el mensaje era demasiado largo para el gestor de colas y nose había especificado MFSEGA en el campo MDMFL de MQMD. Si no sepermite la segmentación, la longitud del mensaje no puede superar elmenor de los atributos MaxMsgLength de la cola y del gestor de colas.

Este código de razón también puede darse cuando MFSEGA sí seespecifica, pero la naturaleza de los datos del mensaje es tal que impideque el gestor de colas los pueda dividir en segmentos que sean losuficientemente pequeños para satisfacer el límite del gestor de colas:v Para un formato definido por el usuario, el segmento más pequeño que

puede crear el gestor de colas es de 16 bytes.v Para un formato incorporado, el segmento más pequeño que puede crear

el gestor de colas depende del tipo de formato, pero en todos los casos

Códigos de retorno

382 Consulta de programación de aplicaciones (ILE RPG)

Page 397: amqwak00

es mayor que 16 bytes excepto en el de FMSTR (para FMSTR, el tamañomínimo del segmento es de 16 bytes).

RC2031 también puede darse en el campo MDFB del descriptor de unmensaje de informe; en este caso indica que un agente de canal demensajes detectó el error cuando intentaba poner el mensaje en una colaremota.

Esta razón también se produce si un canal, a través del cual debe pasar elmensaje, ha limitado la longitud máxima de mensaje a un valor que enrealidad es menor que el soportado por el gestor de colas, y la longitud delmensaje es superior a ese valor.

Acción correctora: compruebe si el parámetro BUFLEN se ha especificadocorrectamente; en tal caso, lleve a cabo una de las tareas siguientes:v Aumente el valor del atributo MaxMsgLength del gestor de colas; también

puede ser necesario aumentar el valor del atributo MaxMsgLength de lacola.

v Divida el mensaje en varios mensajes más cortos.v Especifique MFSEGA en el campo MDMFL de MQMD; esto permitirá que

el gestor de colas divida el mensaje en segmentos.v Compruebe las definiciones del canal.

RC2033(2033, X'7F1') No hay ningún mensaje disponible.

Se ha emitido una llamada MQGET, pero no hay ningún mensaje en lacola que cumpla los criterios de selección especificados en MQMD (loscampos MDMID y MDCID) ni en MQGMO (los campos GMOPT y GMMO). O no seha especificado la opción GMWT o ha transcurrido el intervalo de tiempoespecificado por el campo GMWI en MQGMO. Esta razón también sedevuelve para una llamada MQGET de examinar, si se ha llegado al finalde la cola.

Este código de razón también pueden devolverlo las llamadas mqGetBag ymqExecute. mqGetBag es parecida a MQGET. Para la llamada mqExecute,el código de terminación puede ser MQCC_WARNING o MQCC_FAILED:v Si el código de terminación es MQCC_WARNING, significa que se han

recibido algunos mensajes de respuesta durante el intervalo de esperaespecificado, pero no todos. El paquete de respuesta contiene paquetesgenerados por el sistema para los mensajes que se han recibido.

v Si el código de terminación es MQCC_FAILED, significa que no se harecibido ningún mensaje de respuesta durante el intervalo de tiempoespecificado.

Acción correctora: si esta es la condición prevista, no es necesario realizarninguna acción correctora.

Si no estaba prevista, compruebe que el mensaje se haya puesto en la colay si las opciones que controlan los criterios de selección se han especificadocorrectamente. A continuación se muestra todo lo que puede afectar a laelegibilidad de un mensaje para devolverlo en la llamada MQGET:

GMLOGOGMAMSAGMASGAGMCMPM

Códigos de retorno

Apéndice A. Códigos de retorno 383

Page 398: amqwak00

MOMSGIMOCORIMOGRPIMOSEQNMOOFFSCampo MDMIDCampo MDCID

Considere la posibilidad de esperar más tiempo a que se devuelva elmensaje.

RC2034(2034, X'7F2') El cursor para examinar no está situado en el mensaje.

Se ha emitido una llamada MQGET con la opción GMMUC o GMBRWC.No obstante, el cursor para examinar no está situado en un mensajerecuperable. Esto puede deberse a una de estas condiciones:v El cursor se ha situado de forma lógica antes del primer mensaje (tal y

como está antes de haber realizado satisfactoriamente la primera llamadaMQGET con una opción de examinar), o

v El mensaje en el que estaba situado el cursor para examinar se habloqueado o eliminado de la cola (probablemente lo haya hecho otraaplicación) una vez efectuada la operación de examinar.

v El mensaje en el que estaba situado el cursor para examinar hacaducado.

Acción correctora: compruebe la lógica de la aplicación. Esta puede ser unarazón esperada si el diseño de la aplicación permite que varios servidorescompitan para obtener los mensajes después de examinar. Si lo desea,también puede utilizar la opción GMLK con la llamada MQGET deexaminar anterior.

RC2035(2035, X'7F3') Acceso no autorizado.

El usuario no tiene autorización para realizar la operación que se haintentado:v En una llamada MQCONN, el usuario no está autorizado a conectarse al

gestor de colas.v En una llamada MQOPEN o MQPUT1, el usuario no está autorizado a

abrir el objeto para la opción o las opciones especificadas.v En una llamada MQCLOSE, el usuario no está autorizado a suprimir el

objeto, que es una cola dinámica permanente, y el parámetro HOBJespecificado en la llamada MQCLOSE no es el asa devuelta por lallamada MQOPEN que ha creado la cola.

Este código de razón también puede darse en el campo MDFB del descriptorde un mensaje de informe; en este caso indica que un agente de canal demensajes detectó el error cuando intentaba poner el mensaje en una colaremota.

Acción correctora: asegúrese de que se ha especificado el gestor de colas oel objeto correctos y de que existe la autorización adecuada.

RC2036(2036, X'7F4') La cola no se ha abierto para examen.

Se ha emitido una llamada MQGET con una de las opciones siguientes:

Códigos de retorno

384 Consulta de programación de aplicaciones (ILE RPG)

Page 399: amqwak00

GMBRWFGMBRWNGMBRWCGMMUC

pero la cola no se ha abierto para examen.

Acción correctora: especifique OOBRW cuando se abra la cola.

RC2037(2037, X'7F5') La cola no se ha abierto para entrada.

Se ha emitido una llamada MQGET para recuperar un mensaje de unacola, pero la cola no se ha abierto para entrada.

Acción correctora: especifique una de las opciones siguientes cuando seabra la cola:

OOINPSOOINPXOOINPQ

RC2038(2038, X'7F6') La cola no se ha abierto para consulta.

Se ha emitido una llamada MQINQ para consultar los atributos de unobjeto, pero el objeto no se ha abierto para consulta.

Acción correctora: especifique OOINQ cuando se abra el objeto.

RC2039(2039, X'7F7') La cola no se ha abierto para salida.

Se ha emitido una llamada MQPUT para poner un mensaje en una cola,pero la cola no se ha abierto para salida.

Acción correctora: especifique OOOUT cuando se abra la cola.

RC2040(2040, X'7F8') La cola no se ha abierto para establecer.

Se ha emitido una llamada MQSET para establecer los atributos de cola,pero la cola no se ha abierto para establecer.

Acción correctora: especifique OOSET cuando se abra la cola.

RC2041(2041, X'7F9') La definición de un objeto ha cambiado desde su apertura.

Debido a que el asa HOBJ utilizada en esta llamada se ha devuelto en lallamada MQOPEN, han cambiado las definiciones de objeto que afectan aeste objeto. Consulte el “Capítulo 32. MQOPEN - Abrir objeto” en lapágina 261 para obtener más información.

Este código de razón no se da si el asa del objeto se especifica en el campoPMCT del parámetro PMO de la llamada MQPUT o MQPUT1.

Acción correctora: emita una llamada MQCLOSE para devolver el asa delsistema. Normalmente, después basta con volver a abrir el objeto y repetirla operación. No obstante, si las definiciones de objeto son críticas para lalógica de la aplicación, puede utilizarse una llamada MQINQ después devolver a abrir el objeto para averiguar qué es lo que ha variado.

RC2042(2042, X'7FA') El objeto ya está abierto con opciones en conflicto.

Códigos de retorno

Apéndice A. Códigos de retorno 385

Page 400: amqwak00

Se ha emitido una llamada MQOPEN, pero el objeto en cuestión ya habíasido abierto por esta o por otra aplicación con opciones que están enconflicto con las especificadas en el parámetro OPTS. Esto sucede si lapetición es para entrada compartida y el objeto está abierto para entradaexclusiva; y también si la petición es para entrada exclusiva y el objeto yase ha abierto para entrada (de cualquier tipo).

Nota: Los MCA de los canales receptores pueden mantener abiertas lascolas destino incluso si no se están transmitiendo mensajes; esto dala impresión de que las colas “se están utilizando”.

Acción correctora: el diseño del sistema debe especificar si la aplicaciónespera y reintenta o si realiza otra acción.

RC2043(2043, X'7FB') Tipo de objeto no válido.

En la llamada MQOPEN o MQPUT1, el campo ODOT del descriptor deobjeto MQOD especifica un valor que no es válido. Para la llamadaMQPUT1, el tipo de objeto debe ser OTQ.

Acción correctora: especifique un tipo de objeto válido.

RC2044(2044, X'7FC') La estructura del descriptor de objeto no es válida.

En la llamada MQOPEN o MQPUT1, el descriptor de objeto MQOD no esválido. El nemotécnico de atención ODSID no es correcto o ODVER no se hareconocido.

Esta razón también se produce si:v El puntero del parámetro no es válido. (No siempre es posible detectar

los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

v El gestor de colas no puede copiar la estructura cambiada en elalmacenamiento de la aplicación, aunque la llamada sea satisfactoria.Esto puede producirse, por ejemplo, si el puntero señala a unalmacenamiento de solo lectura.

Acción correctora: corrija la definición del descriptor de objeto. Asegúresede que se han establecido correctamente los campos de entradaobligatorios.

RC2045(2045, X'7FD') La opción no es válida para este tipo de objeto.

En una llamada MQOPEN o MQCLOSE, se ha especificado una opciónque no es válida para el tipo de objeto o de cola que se está abriendo ocerrando.

Para la llamada MQOPEN, puede deberse a uno de los casos siguientes:v Una opción que no es la adecuada para el tipo de objeto (por ejemplo

OOOUT para un objeto OTPRO).v Una opción que no está soportada por el tipo de cola (por ejemplo,

OOINQ para una cola remota que no tiene ninguna definición local).v Una o más de estas opciones:

OOINPQOOINPSOOINPX

Códigos de retorno

386 Consulta de programación de aplicaciones (ILE RPG)

Page 401: amqwak00

OOBRWOOINQOOSET

cuando:– el nombre de la cola se resuelve mediante un directorio de celdas, o– el campo ODMN del descriptor de objeto especifica el nombre de la

definición local de una cola remota (con el fin de especificar un aliasde gestor de colas) y la cola indicada en el atributo RemoteQMgrName dela definición es el nombre del gestor de colas local.

Para la llamada MQCLOSE puede deberse a uno de los casos siguientes:v La opción CODEL o COPURG cuando la cola no es una cola dinámica.

Este código de razón también se puede dar en la llamada MQOPENcuando el objeto que se va a abrir es de tipo OTNLST, OTPRO u OTQM,pero el campo ODMN en MQOD no está en blanco ni es el nombre del gestorde colas local.

Acción correctora: especifique la opción correcta; vea en la Tabla 48 en lapágina 267 las opciones de abrir y en la Tabla 47 en la página 222 las decerrar. Para la llamada MQOPEN, asegúrese de que el campo ODMN se haestablecido correctamente. Para la llamada MQCLOSE, corrija la opción ocambie el tipo de definición de la cola modelo utilizada para crear la colanueva.

RC2046(2046, X'7FE') Las opciones no son válidas o no son coherentes.

El parámetro o el campo OPTS contiene opciones que no son válidas, o unacombinación de opciones que no es válida.v Para las llamadas MQOPEN, MQCLOSE, MQXCNVC, mqBagToBuffer,

mqBufferToBag, mqCreateBag y mqExecute, GMOPT es un parámetroaparte en la llamada.Esta razón se produce también si el puntero del parámetro no es válido.(No siempre es posible detectar los punteros de parámetro que no sonválidos; si no se detectan, el resultado es imprevisible).

v Para las llamadas MQCONNX, MQGET, MQPUT y MQPUT1, GMOPT esun campo que está en la estructura de opciones relevantes (MQGMO oMQPMO).

Acción correctora: especifique opciones válidas. Compruebe la descripcióndel parámetro o del campo OPTS para determinar las opciones o lascombinaciones de opciones que son válidas. Si se están estableciendovarias opciones a base de combinar opciones individuales, asegúrese de noañadir dos veces la misma opción.

RC2047(2047, X'7FF') La permanencia no es válida.

En una llamada MQPUT o MQPUT1, el valor especificado para el campoMDPER del descriptor de mensaje MQMD no es válido.

Acción correctora: especifique uno de los valores siguientes:PEPERPENPERPEQDEF

Códigos de retorno

Apéndice A. Códigos de retorno 387

Page 402: amqwak00

RC2048(2048, X'800') Un mensaje situado en una cola dinámica temporal no puedeser permanente.

En una llamada MQPUT o MQPUT1, el valor especificado para el campoMDPER del descriptor de mensaje MQMD especifica PEPER, pero la cola enla que se está colocando el mensaje es una cola dinámica temporal. Losmensajes permanentes no se pueden poner en colas temporales.

Este código de razón también puede darse en el campo MDFB del descriptorde un mensaje de informe; en este caso indica que un agente de canal demensajes detectó el error cuando intentaba poner el mensaje en una colaremota.

Acción correctora: especifique PENPER si el mensaje se ha de colocar enuna cola dinámica temporal. Si se requiere la permanencia, utilice una coladinámica permanente o una cola predefinida.

Tenga presente que es aconsejable que las aplicaciones de servidor envíenmensajes de respuesta (tipo de mensaje MTRPLY) con la mismapermanencia que el mensaje de petición original (tipo de mensajeMTRQST). Si el mensaje de petición es permanente, la cola de respuestasespecificada en el campo MDRQ del descriptor de mensaje MQMD no puedeser una cola dinámica temporal; en esta situación debe utilizarse una coladinámica o predefinida como cola de respuestas.

RC2049(2049, X'801') La prioridad del mensaje supera el valor máximo soportado.

En una llamada MQPUT o MQPUT1, el valor del campo MDPRI deldescriptor de mensaje MQMD supera la prioridad máxima soportada porel gestor de colas local (vea el atributo MaxPriority de gestor de colasdescrito en el “Capítulo 43. Atributos del gestor de colas” en la página 337).El gestor de colas acepta el mensaje, pero este se coloca en la cola con laprioridad máxima del gestor de colas. El campo MDPRI del descriptor demensaje conserva el valor especificado por la aplicación que transfirió elmensaje.

Acción correctora: ninguna, a menos que la aplicación que transfirió elmensaje no esperara este código de razón.

RC2050(2050, X'802') La prioridad del mensaje no es válida.

En una llamada MQPUT o MQPUT1, el valor del campo MDPRI deldescriptor de mensaje MQMD no es válido.

Acción correctora: especifique un valor mayor o igual que cero, o el valorespecial PRQDEF.

RC2051(2051, X'803') Las llamadas de poner están inhibidas para la cola.

Las llamadas MQPUT y MQPUT1 están actualmente inhibidas para la cola(vea el atributo InhibitPut de la cola descrito en el “Capítulo 37. Atributosde todas las colas” en la página 305) o para la cola en la que esta seresuelve (vea el “Capítulo 40. Atributos de colas alias” en la página 329).

Este código de razón también puede darse en el campo MDFB del descriptorde un mensaje de informe; en este caso indica que un agente de canal demensajes detectó el error cuando intentaba poner el mensaje en una colaremota.

Códigos de retorno

388 Consulta de programación de aplicaciones (ILE RPG)

Page 403: amqwak00

Acción correctora: si el diseño del sistema permite que se inhibanpeticiones de poner durante períodos cortos, reintente la operación másadelante.

RC2052(2052, X'804') La cola se ha suprimido.

Un asa de cola HOBJ especificada en una llamada hace referencia a una coladinámica que se ha suprimido después de abrir la cola. (Vea el“Capítulo 25. MQCLOSE - Cerrar objeto” en la página 221 para obtenermás información sobre la supresión de colas dinámicas).

Acción correctora: emita una llamada MQCLOSE para devolver el asa y losrecursos asociados al sistema (en este caso, la llamada MQCLOSE serealizará satisfactoriamente). Compruebe el diseño de la aplicación que haoriginado el error.

RC2053(2053, X'805') La cola ya contiene el número máximo de mensajes.

En una llamada MQPUT o MQPUT1, la llamada ha fallado porque la colaestá llena, es decir, ya contiene el número máximo de mensajes posible(vea el atributo MaxQDepth de cola local descrito en el “Capítulo 38.Atributos de colas locales y colas modelo” en la página 311).

Este código de razón también puede darse en el campo MDFB del descriptorde un mensaje de informe; en este caso indica que un agente de canal demensajes detectó el error cuando intentaba poner el mensaje en una colaremota.

Acción correctora: reintente la opción más adelante. Considere laposibilidad de aumentar la profundidad máxima de la cola o de tomarmedidas para que la aplicación dé servicio a la cola en más casos.

RC2055(2055, X'807') La cola contiene uno o más mensajes o peticiones de poner ode obtener no comprometidas.

Se ha emitido una llamada MQCLOSE para una cola dinámica permanentecon:v La opción CODEL especificada, pero todavía quedan mensajes en la cola

o bienv Las opciones CODEL o COPURG especificadas, pero en la cola todavía

quedan llamadas de obtener o de poner no comprometidas pendientes.

Para obtener más información, consulte las notas de utilizaciónrelacionadas con las colas dinámicas para la llamada MQCLOSE.

Este código de razón también se devuelve desde un mandato PCF (formatode mandato programable) de vaciar o suprimir una cola, si esta contienemensajes no comprometidos (o mensajes comprometidos en el caso desuprimir la cola sin la opción de purgar).

Acción correctora: compruebe por qué todavía hay mensajes en la cola.Tenga presente que el atributo CurrentQDepth de cola local puede ser ceroaunque haya uno o más mensajes en la cola; esta situación puede darse sise han recuperado mensajes como parte de una unidad de trabajo que aúnno se ha comprometido. Si los mensajes se pueden descartar, intenteutilizar la llamada MQCLOSE con la opción COPURG. Considere laposibilidad de repetir la llamada más adelante.

Códigos de retorno

Apéndice A. Códigos de retorno 389

Page 404: amqwak00

RC2056(2056, X'808') No hay espacio disponible para la cola en el disco.

Se ha emitido una llamada MQPUT o MQPUT1, pero no hay espaciodisponible para la cola en el disco o en otro dispositivo dealmacenamiento.

Este código de razón también puede darse en el campo MDFB del descriptorde un mensaje de informe; en este caso indica que un agente de canal demensajes detectó el error cuando intentaba poner el mensaje en una colaremota.

Acción correctora: compruebe si alguna aplicación está poniendo mensajesen un bucle infinito. Si no es así, deje más espacio en disco disponible parala cola.

RC2057(2057, X'809') Tipo de cola no válido.

Se ha dado una de las siguientes situaciones:v En una llamada MQOPEN, el campo ODMN del descriptor de objeto

MQOD o del registro de objeto MQOR especifica el nombre de unadefinición local de una cola remota (con el fin de especificar un alias degestor de colas) y en dicha definición local, el atributo RemoteQMgrName esel nombre del gestor de colas local. Sin embargo, el campo ODON deMQOD o MQOR especifica el nombre de una cola modelo del gestor decolas local y esto no está permitido. Puede obtener más información enla publicación MQSeries Application Programming Guide.

v En una llamada MQPUT1, el descriptor de objeto MQOD o el registro deobjeto MQOR, especifican el nombre de una cola modelo.

v En una llamada MQPUT o MQPUT1 anterior, el campo MDRQ deldescriptor de mensaje especificaba el nombre de una cola modelo, perono se puede especificar una cola modelo como destino de los mensajesde respuesta o de informe. El destino solo puede ser el nombre de unacola predefinida o el nombre de la cola dinámica creada a partir de lacola modelo. En esta situación, se devuelve el código de razón RC2057en el campo DLREA de la estructura MQDLH cuando el mensaje derespuesta o de informe se coloca en la cola de mensajes no entregados.

Acción correctora: especifique una cola válida.

RC2058(2058, X'80A') El nombre del gestor de colas no es válido o es desconocido.

En una llamada MQCONN, el valor especificado por el parámetro QMNAMEno es válido. Esta razón se produce también si el puntero del parámetro noes válido. (No siempre es posible detectar los punteros de parámetro queno son válidos; si no se detectan, el resultado es imprevisible).

Este código de razón también se da si una aplicación intenta conectarse aun gestor de colas de un grupo (vea el parámetro QMNAME de MQCONN) y:v No están soportados los grupos de gestores de colas (solo están

soportados para las aplicaciones de cliente MQ), ov No existe ningún grupo de gestores de colas que tenga el nombre

especificado

Acción correctora: utilice, si es posible, un nombre que solo tenga blancos overifique si el nombre utilizado es válido.

Códigos de retorno

390 Consulta de programación de aplicaciones (ILE RPG)

Page 405: amqwak00

RC2059(2059, X'80B') El gestor de colas no está disponible para conexión.

En una llamada MQCONN, el gestor de colas identificado por elparámetro QMNAME no está disponible para conexión en este momento.v En OS/400, este código de razón también lo pueden devolver las

llamadas MQOPEN y MQPUT1 si una aplicación que se esté ejecutandoen modalidad de compatibilidad especifica HCDEFH para el parámetroHCONN.

Si la conexión procede de una aplicación de cliente MQ, este código derazón puede darse si se produce un error en la conexión de cliente o en lascorrespondientes definiciones del canal de conexión de servidor.

Este código de razón también se da si una aplicación intenta conectarse aun gestor de colas de un grupo (vea el parámetro QMNAME de MQCONN),cuando ninguno de los gestores de colas del grupo está disponible paraconexión en ese momento.

Acción correctora: asegúrese de que se ha arrancado el gestor de colas. Sila conexión procede de una aplicación de cliente, compruebe lasdefiniciones de canal.

RC2061(2061, X'80D') Las opciones de informe del descriptor de mensaje no sonválidas.

Se ha emitido una llamada MQPUT o MQPUT1, pero el campo MDREP deldescriptor de mensaje MQMD contiene una o más opciones que el gestorde colas local no reconoce. Las opciones que pueden provocar que sedevuelva este código de razón dependen del destino del mensaje; vea el“Apéndice E. Opciones de informe” en la página 481 para obtener másdetalles.

Este código de razón también puede darse en el campo MDFB de MQMD deun mensaje de informe o en el campo DLREA de la estructura MQDLH deun mensaje de la cola de mensajes no entregados; en ambos casos, indicaque el gestor de colas destino no soporta una o más de las opciones deinforme especificadas por el emisor del mensaje.

Acción correctora: realice lo siguiente:1. Asegúrese de que el campo MDREP del descriptor de mensaje se

inicializa con un valor cuando se declara o de que se le ha asignado unvalor antes de realizar la llamada MQPUT o MQPUT1.Especifique RONONE si no se necesitan opciones de informe.

2. Asegúrese de que las opciones de informe especificadas son las queestán documentadas en este manual; consulte el campo MDREP descritoen el “Capítulo 10. MQMD - Descriptor de mensaje” en la página 85para conocer las opciones de informe válidas. Elimine las opciones deinforme que no estén documentadas en este manual.

3. Si se establecen múltiples opciones de informe a base de combinaropciones de informe individuales, asegúrese de que no se añada dosveces la misma opción de informe.

4. Compruebe también que no se especifiquen opciones de informe enconflicto. Por ejemplo, no añada las dos opciones ROEXC y ROEXCD alcampo MDREP; solo puede especificarse una de ellas.

Códigos de retorno

Apéndice A. Códigos de retorno 391

|

Page 406: amqwak00

RC2063(2063, X'80F') Se ha producido un error de seguridad.

Se ha emitido una llamada MQOPEN, MQPUT1 o MQCLOSE, pero no seha realizado satisfactoriamente debido a un error de seguridad.

Acción correctora: anote el error del gestor de seguridad y póngase encontacto con el programador del sistema o con el administrador deseguridad.v En OS/400, las anotaciones de FFST contendrán la información de error.

RC2065(2065, X'811') La cuenta de selectores no es válida.

En una llamada MQINQ o MQSET, el parámetro SELCNT especifica unvalor que no es válido. Esta razón se produce también si el puntero delparámetro no es válido. (No siempre es posible detectar los punteros deparámetro que no son válidos; si no se detectan, el resultado esimprevisible).

Acción correctora: especifique un valor comprendido entre 0 y 256.

RC2066(2066, X'812') La cuenta de selectores es demasiado grande.

En una llamada MQINQ o MQSET, el parámetro SELCNT especifica unvalor que es mayor que el máximo soportado (256).

Acción correctora: reduzca el número de selectores especificado en lallamada; los valores válidos son los comprendidos entre 0 y 256.

RC2067(2067, X'813') El selector de atributo no es válido.

En una llamada MQINQ o MQSET, un selector de la matriz SELS:v no es válido, ov no se puede aplicar al tipo de objeto cuyos atributos se están

consultando o estableciendo, o bienv (solo MQSET) no se trata de un atributo que pueda establecerse.

Esta razón se produce también si el puntero del parámetro no es válido.(No siempre es posible detectar los punteros de parámetro que no sonválidos; si no se detectan, el resultado es imprevisible).

Acción correctora: asegúrese de que el valor especificado para el selector esválido para el tipo de objeto representado por HOBJ. Para la llamadaMQSET, asegúrese también de que el selector representa un atributo detipo entero que pueda establecerse.

RC2068(2068, X'814') Selector no aplicable a este tipo de cola.

En la llamada MQINQ, uno o varios selectores de la matriz SELS no sonaplicables al tipo de cola cuyos atributos se están consultando.

Este código de razón también se da cuando se trata de una cola de clústerque se resolvió en una instancia remota de la cola. En este caso solo puedeconsultarse un subconjunto de los atributos que son válidos para las colaslocales. Para obtener más detalles, consulte las notas de utilización que hayen el “Capítulo 31. MQINQ - Consultar los atributos de objeto” en lapágina 251.

Códigos de retorno

392 Consulta de programación de aplicaciones (ILE RPG)

Page 407: amqwak00

La llamada se completa con CCWARN y con los valores de los atributos delos selectores no aplicables establecidos del modo siguiente:v Para los atributos de tipo entero, los correspondientes elementos de

INTATR se establecen en IAVNA.v Para los atributos de tipo carácter, las partes adecuadas de la serie

CHRATR se establecen en una serie de caracteres que consta únicamente deasteriscos (*).

Acción correctora: compruebe si el selector especificado es el que sedeseaba.

Si la cola es de un clúster y se especifica una de las opciones OOBRW,OOINP* u OOSET junto con OOINQ, se forzará a la cola a resolverse en lainstancia local de la cola. Sin embargo, si no existe ninguna instancia localde la cola, la llamada MQOPEN fallará.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

La llamada no se ha ejecutado correctamente porque no hay suficientealmacenamiento principal disponible.

Acción correctora: asegúrese de que las aplicaciones activas tienen uncomportamiento correcto; por ejemplo, que no se estén repitiendo en buclede forma imprevista. Si no se encuentra ningún problema, obtenga másalmacenamiento principal.

RC2072(2072, X'818') El soporte de punto de sincronismo no está disponible.

Se ha especificado GMSYP en una llamada MQGET o se ha especificadoPMSYP en una llamada MQPUT o MQPUT1, pero el gestor de colas localno ha podido responder a la petición. Si el gestor de colas no da soporte aunidades de trabajo, el atributo SyncPoint del gestor de colas tendrá elvalor SPNAVL.

Este código de razón también se puede dar en las llamadas MQGET,MQPUT y MQPUT1 cuando se está utilizando un coordinador externo deuna unidad de trabajo. Si este coordinador precisa que se haga unallamada explícita para arrancar la unidad de trabajo, pero la aplicación noha emitido dicha llamada antes de realizar la llamada MQGET, MQPUT oMQPUT1, se devolverá el código de razón RC2072.v En OS/400, este código de razón significa que el control de compromiso

de OS/400 no se ha iniciado o no está disponible para que lo utilice elgestor de colas.

Acción correctora: elimine la especificación de GMSYP o de PMSYP, segúnconvenga.v En OS/400, si el control de compromiso no se ha iniciado, inícielo. Si

este código de razón aparece después de haber iniciado el control decompromiso, póngase en contacto con el programador del sistema.

RC2075(2075, X'81B') El valor del atributo de control de desencadenamiento no esválido.

En una llamada MQSET, el valor especificado por el selector de atributosIATRGC no es válido.

Códigos de retorno

Apéndice A. Códigos de retorno 393

Page 408: amqwak00

Acción correctora: especifique un valor válido. Vea el “Capítulo 38.Atributos de colas locales y colas modelo” en la página 311.

RC2076(2076, X'81C') El valor del atributo de profundidad desencadenante no esválido.

En una llamada MQSET, el valor especificado por el selector de atributosIATRGD no es válido.

Acción correctora: especifique un valor mayor que cero. Vea el“Capítulo 38. Atributos de colas locales y colas modelo” en la página 311.

RC2077(2077, X'81D') El valor del atributo de prioridad de mensajesdesencadenantes no es válido.

En una llamada MQSET, el valor especificado por el selector de atributosIATRGP no es válido.

Acción correctora: especifique un valor comprendido entre 0 y el valor delatributo MaxPriority del gestor de colas. Vea el “Capítulo 38. Atributos decolas locales y colas modelo” en la página 311.

RC2078(2078, X'81E') El valor del atributo de tipo de desencadenante no es válido.

En una llamada MQSET, el valor especificado por el selector de atributosIATRGT no es válido.

Acción correctora: especifique un valor válido. Vea el “Capítulo 38.Atributos de colas locales y colas modelo” en la página 311.

RC2079(2079, X'81F') Se ha devuelto un mensaje truncado (el proceso se hacompletado).

En una llamada MQGET, la longitud del mensaje era demasiado grandepara caber en el almacenamiento intermedio proporcionado. Se haespecificado la opción GMATM, por lo que la llamada se completa. Elmensaje se elimina de la cola (sujeto a las consideraciones de la unidad detrabajo) o, si se trataba de una operación de examinar, el cursor paraexaminar avanza hasta este mensaje.

El parámetro DATLEN se establece en la longitud del mensaje antes deltruncamiento, el parámetro BUFFER contiene la mayor cantidad posible delmensaje y la estructura MQMD se rellena.

Acción correctora: ninguna, ya que la aplicación esperaba esta situación.

RC2080(2080, X'820') Se ha devuelto un mensaje truncado (el proceso no se hacompletado).

En una llamada MQGET, la longitud del mensaje era demasiado grandepara caber en el almacenamiento intermedio proporcionado. No se haespecificado la opción GMATM , por lo que el mensaje no se ha eliminadode la cola. Si se trata de una operación de examinar, el cursor paraexaminar permanecerá donde estaba antes de la llamada, pero si se haespecificado GMBRWF, el cursor para examinar se situará de forma lógicaantes del mensaje que tenga la prioridad más alta de la cola.

Códigos de retorno

394 Consulta de programación de aplicaciones (ILE RPG)

Page 409: amqwak00

El campo DATLEN se establece en la longitud del mensaje antes deltruncamiento, el parámetro BUFFER contiene la mayor cantidad posible delmensaje y la estructura MQMD se rellena.

Acción correctora: facilite un almacenamiento intermedio cuya longitud seaal menos igual que DATLEN o especifique GMATM si no se necesitan todoslos datos del mensaje.

RC2082(2082, X'822') Cola alias base desconocida.

Se ha emitido una llamada MQOPEN o MQPUT1 que especificaba unacola alias como destino, pero el nombre BaseQName de los atributos de lacola alias no se reconoce como nombre de cola.

Este código de razón también se da si BaseQName es el nombre de una colade clúster que no se puede resolver satisfactoriamente.

Acción correctora: corrija las definiciones de cola.

RC2085(2085, X'825') Nombre de objeto desconocido.

En una llamada MQOPEN o MQPUT1, el campo ODMN del descriptor deobjeto MQOD se establece en uno de estos valores:v En blancov El nombre del gestor de colas localv El nombre de una definición local de una cola remota (un alias de gestor

de colas) en el que el atributo RemoteQMgrName es el nombre del gestor decolas local

Sin embargo, el campo ODON del descriptor de objeto no se reconoce para eltipo de objeto especificado.

Este código de razón también se da si la cola es una cola de clúster alojadaen un gestor de colas remoto, pero el gestor de colas local no tiene definidauna ruta de acceso al gestor de colas remoto.

Vea también el código de razón RC2052.

Acción correctora: especifique un nombre de objeto válido. Asegúrese deque el nombre se rellena con blancos a la derecha si es necesario. Si esto escorrecto, compruebe las definiciones de cola.

RC2086(2086, X'826') Gestor de colas de objeto desconocido.

En una llamada MQOPEN o MQPUT1, el campo ODMN del descriptor deobjeto MQOD no satisface las normas de denominación de los objetos. Paraobtener más información, consulte la publicación MQSeries ApplicationProgramming Guide.

Este código de razón también se da si el campo ODOT del descriptor deobjeto tiene el valor OTQM, y el campo ODMN no está en blanco, pero elnombre especificado no es el del gestor de colas local.

Acción correctora: especifique un nombre de gestor de colas válido (o todoblancos o un carácter inicial nulo para hacer referencia al gestor de colaslocal). Asegúrese de que el nombre se rellena con blancos a la derecha otermina con un carácter nulo si es necesario.

Códigos de retorno

Apéndice A. Códigos de retorno 395

Page 410: amqwak00

RC2087(2087, X'827') Gestor de colas remoto desconocido.

En una llamada MQOPEN o MQPUT1, se ha producido un error en laresolución de nombre de cola, por una de estas causas:v El campo ODMN está en blanco o es el nombre del gestor de colas local, el

campo ODON es el nombre de una definición local de una cola remota (oun alias de una cola remota), y se cumple una de las condicionessiguientes:– RemoteQMgrName está en blanco o es el nombre del gestor de colas

local. Recuerde que este error se produce incluso si XmitQName no estáen blanco.

– XmitQName está en blanco, pero no se ha definido ninguna cola detransmisión con el nombre RemoteQMgrName, y el atributo DefXmitQNamede gestor de colas está en blanco.

– RemoteQMgrName y RemoteQName especifican una cola de clúster que nose puede resolver satisfactoriamente y el atributo DefXmitQName degestor de colas está en blanco.

v El campo ODMN es el nombre de una definición local de una cola remota(que contiene una definición de alias de gestor de colas), y se cumpleuna de las condiciones siguientes:– RemoteQName no está en blanco.– XmitQName está en blanco, pero no se ha definido ninguna cola de

transmisión con el nombre RemoteQMgrName, y el atributo DefXmitQNamede gestor de colas está en blanco.

v El campo ODMN no:– Está en blanco– Es el nombre del gestor de colas local– Es el nombre de una cola de transmisión– Es el nombre de una definición de alias de gestor de colas (es decir,

una definición local de una cola remota con un atributo RemoteQNameen blanco)

pero el atributo DefXmitQName de gestor de colas está en blanco.v El campo ODMN es el nombre de una cola modelo.v El nombre de la cola se resuelve mediante un directorio de celdas. No

obstante, no se ha definido ninguna cola con el nombre del gestor decolas remoto obtenido del directorio de celdas y el atributo DefXmitQNamede gestor de colas está en blanco.

Acción correctora: compruebe los valores especificados para ODMN y ODON. Sison correctos, compruebe las definiciones de cola.

RC2090(2090, X'82A') El intervalo de espera de MQGMO no es válido.

En la llamada MQGET, el valor especificado para el campo GMWI delparámetro GMO no es válido.

Acción correctora: especifique un valor mayor o igual que cero, o el valorespecial WIULIM si se requiere una espera indefinida.

RC2091(2091, X'82B') La cola de transmisión no es local.

En una llamada MQOPEN o MQPUT1, debe enviarse un mensaje a ungestor de colas remoto. Los campos ODON o ODMN del descriptor de objeto

Códigos de retorno

396 Consulta de programación de aplicaciones (ILE RPG)

Page 411: amqwak00

especifican el nombre de una definición local de una cola remota, pero elatributo XmitQName de la definición cumple una de las condicionessiguientes:v XmitQName no está en blanco, sino que especifica una cola que no es

local.v XmitQName está en blanco, pero RemoteQMgrName especifica una cola que

no es local.

Este código de razón también se da si el nombre de la cola se resuelvemediante un directorio de celdas y el nombre del gestor de colas remotoobtenido de dicho directorio es el nombre de una cola, pero no el de unacola local.

Acción correctora: compruebe los valores especificados para ODON y ODMN. Sison correctos, compruebe las definiciones de cola. Para obtener másinformación sobre las colas de transmisión, consulte el manual MQSeriesApplication Programming Guide.

RC2092(2092, X'82C') Utilización incorrecta de la cola de transmisión.

En una llamada MQOPEN o MQPUT1, se debe enviar un mensaje a ungestor de colas remoto, pero se ha dado una de estas situaciones:v El campo ODMN especifica el nombre de una cola local, pero no tiene un

atributo Usage igual a USTRAN.v Los campos ODON o ODMN del descriptor de objeto especifican el nombre

de una definición local de una cola remota, pero el atributo XmitQName dela definición cumple una de las condiciones siguientes:– XmitQName no está en blanco, pero especifica una cola que no tiene un

atributo Usage igual a USTRAN– XmitQName está en blanco, pero RemoteQMgrName especifica una cola que

no tiene un atributo Usage igual a USTRANv El nombre de la cola se resuelve mediante un directorio de celdas y el

nombre del gestor de colas remoto obtenido de dicho directorio es el deuna cola local, pero no tiene un atributo Usage igual a USTRAN.

Acción correctora: compruebe los valores especificados para ODON y ODMN. Sison correctos, compruebe las definiciones de cola. Para obtener másinformación sobre las colas de transmisión, consulte el manual MQSeriesApplication Programming Guide.

RC2093(2093, X'82D') Cola no abierta para pasar todo el contexto.

Se ha emitido una llamada MQPUT con la opción PMPASA especificada enel parámetro PMO, pero la cola no se ha abierto con la opción OOPASA.

Acción correctora: especifique OOPASA (u otra opción que la implique) alabrir la cola.

RC2094(2094, X'82E') Cola no abierta para pasar el contexto de identidad.

Se ha emitido una llamada MQPUT con la opción PMPASI especificada enel parámetro PMO, pero la cola no se ha abierto con la opción OOPASI.

Acción correctora: especifique OOPASI (u otra opción que la implique) alabrir la cola.

Códigos de retorno

Apéndice A. Códigos de retorno 397

Page 412: amqwak00

RC2095(2095, X'82F') Cola no abierta para establecer todo el contexto.

Se ha emitido una llamada MQPUT con la opción PMSETA especificada enel parámetro PMO, pero la cola no se ha abierto con la opción OOSETA.

Acción correctora: especifique OOSETA cuando se abra la cola.

RC2096(2096, X'830') Cola no abierta para establecer el contexto de identidad.

Se ha emitido una llamada MQPUT con la opción PMSETI especificada enel parámetro PMO, pero la cola no se ha abierto con la opción OOSETI.

Acción correctora: especifique OOSETI (u otra opción que la implique) alabrir la cola.

RC2097(2097, X'831') El asa de cola a la que se hace referencia no salva el contexto.

En una llamada MQPUT o MQPUT1, se ha especificado PMPASI oPMPASA, pero el asa especificada en el campo PMCT del parámetro PMO noes un asa de cola válida, o sí que lo es pero la cola no se ha abierto conOOSAVA.

Acción correctora: especifique OOSAVA cuando se abra la cola a la que sehace referencia.

RC2098(2098, X'832') Contexto no disponible para el asa de cola a la que se hacereferencia.

En una llamada MQPUT o MQPUT1, se ha especificado PMPASI oPMPASA, pero el asa de cola especificada en el campo PMCT del parámetroPMO no tiene ningún contexto asociado a ella. Esto sucede si aún no se harecuperado correctamente ningún mensaje con el asa de cola a la que sehace referencia o si la última llamada MQGET satisfactoria era paraexaminar.

Esta condición no se produce si el último mensaje recuperado no teníacontexto asociado a él.

Acción correctora: asegúrese de que se ha emitido una llamada correcta deobtener que no sea para examinar con el asa de cola a la que se hacereferencia.

RC2100(2100, X'834') El objeto ya existe.

Se ha emitido una llamada MQOPEN para crear una cola dinámica, peroya existe una que tiene el mismo nombre.

Acción correctora: si facilita un nombre completo de cola dinámica,asegúrese de que cumple los convenios de los nombres de colas dinámicas;de ser así, suministre otro nombre o suprima la cola existente si ya no lanecesita. Otra posibilidad es permitir que el gestor de colas genere elnombre.

Si el gestor de colas es el que está generando el nombre (parcial ocompleto), vuelva a emitir la llamada MQOPEN.

RC2101(2101, X'835') Objeto dañado.

Códigos de retorno

398 Consulta de programación de aplicaciones (ILE RPG)

Page 413: amqwak00

El objeto al que ha accedido la llamada está dañado y no puede utilizarse.Por ejemplo, esto puede deberse a que la definición del objeto en elalmacenamiento principal no es coherente o a que difiere de la definicióndel objeto en disco, o a que la definición en disco no puede leerse.

El objeto no podrá utilizarse hasta que el problema se corrija. El objeto sepuede suprimir, aunque tal vez no sea posible suprimir el espacio deusuario asociado.

Acción correctora: quizá deba detener y rearrancar el gestor de colas, orestaurar los datos del gestor de colas a partir del almacenamiento decopia de seguridad.

En el registro de FFST™ obtendrá más información sobre el problema.

RC2102(2102, X'836') No hay suficientes recursos del sistema disponibles.

Los recursos del sistema son insuficientes para realizar la llamadacorrectamente.

Acción correctora: ejecute la aplicación cuando la carga de la máquina seamenor.

En el registro de FFST encontrará más información sobre el problema.

RC2104(2104, X'838') Las opciones de informe del descriptor de mensaje no sereconocen.

Se ha emitido una llamada MQPUT o MQPUT1, pero el campo MDREP deldescriptor de mensaje MQMD contiene una o más opciones que el gestorde colas local no reconoce. Se aceptan las opciones.

Las opciones que pueden provocar que se devuelva este código de razóndependen del destino del mensaje; vea el “Apéndice E. Opciones deinforme” en la página 481 para obtener más detalles.

Acción correctora: si se espera este código de razón, no es necesarianinguna acción correctora.

Si no se espera este código de razón, haga lo siguiente:1. Asegúrese de que el campo MDREP del descriptor de mensaje se

inicializa con un valor cuando se declara, o de que se le ha asignado unvalor antes de realizar la llamada MQPUT o MQPUT1.

2. Asegúrese de que las opciones de informe especificadas son las queestán documentadas en este manual; consulte el campo MDREP descritoen el “Capítulo 10. MQMD - Descriptor de mensaje” en la página 85para conocer las opciones de informe válidas. Elimine las opciones deinforme que no estén documentadas en este manual.

3. Si se establecen múltiples opciones de informe a base de combinaropciones de informe individuales, asegúrese de que no se añade dosveces una misma opción de informe.

4. Compruebe también que no se especifican opciones de informe enconflicto. Por ejemplo, no añada las dos opciones ROEXC y ROEXCD alcampo MDREP; solo puede especificarse una de ellas.

RC2110(2110, X'83E') Formato de mensaje no válido.

En una llamada MQGET con la opción GMCONV incluida en el parámetroGMO, uno o los dos campos MDCSI o MDENC del mensaje son distintos del

Códigos de retorno

Apéndice A. Códigos de retorno 399

Page 414: amqwak00

correspondiente campo del parámetro MSGDSC, pero el mensaje no puedeconvertirse satisfactoriamente debido a un error asociado al formato delmensaje. Entre los posibles errores se cuentan los siguientes:v No puede encontrarse una rutina de salida escrita por usuario que tenga

el nombre especificado por el campo MDFMT del mensaje.v El nombre de formato del mensaje es FMNONE.v El mensaje contiene datos que no son coherentes con la definición del

formato.

El mensaje se devuelve sin convertir a la aplicación que emite la llamadaMQGET, los valores de los campos MDCSI y MDENC del parámetro MSGDSC seestablecen en los del mensaje devuelto, y la llamada se completa conCCWARN.

Si el mensaje consta de varias partes, cada una de ellas descrita por suspropios campos de juego de caracteres y de codificación (por ejemplo, unmensaje con el nombre de formato FMDLH), puede ser que se conviertanalgunas partes y otras no. No obstante, los valores devueltos en losdistintos campos de juego de caracteres y de codificación siempredescriben correctamente los datos de mensaje relevantes.

Acción correctora: compruebe el nombre de formato que se especificó alponer el mensaje. Si este no es uno de los formatos incorporados,compruebe que esté disponible una rutina de salida adecuada que tenga elmismo nombre que el formato para que la cargue el gestor de colas.Compruebe que los datos del mensaje corresponden al formato que esperala rutina de salida.

RC2111(2111, X'83F') El identificador de juego de caracteres codificado origen no esválido.

El identificador de juego de caracteres codificado a partir del cual se van aconvertir los datos de tipo carácter no es válido o no está soportado.

Esto se puede producir en la llamada MQGET cuando la opción GMCONVestá incluida en el parámetro GMO; el identificador de juego de caracterescodificado que tiene el error es el campo MDCSI del mensaje que se estárecuperando. Es este caso, los datos del mensaje se devuelven sin convertir,los valores de los campos MDCSI y MDENC del parámetro MSGDSC se establecenen los del mensaje devuelto y la llamada se completa con CCWARN.

Esta razón también se puede dar en la llamada MQGET cuando el mensajeconsta de una o más de las estructuras de cabecera MQ relacionadas conlos datos (MQCIH, MQDLH, MQIIH, MQRMH), y el campo MDCSI delmensaje especifica un juego de caracteres que no tiene caracteres SBCSpara los caracteres que son válidos como nombres de cola. Las estructurasde cabecera MQ que contienen tales caracteres no son válidas por lo que elmensaje se devuelve sin convertir. El juego de caracteres Unicode UCS-2 esun ejemplo de dichos juegos de caracteres.

Si el mensaje consta de varias partes, cada una de ellas descrita por suspropios campos de juego de caracteres y de codificación (por ejemplo, unmensaje con el nombre de formato FMDLH), puede ser que se conviertanalgunas partes y otras no. No obstante, los valores devueltos en losdistintos campos de juego de caracteres y de codificación siempredescriben correctamente los datos de mensaje relevantes.

Códigos de retorno

400 Consulta de programación de aplicaciones (ILE RPG)

Page 415: amqwak00

Este código de razón también puede darse en la llamada MQXCNVC; elidentificador de juego de caracteres codificado que tiene el error es elparámetro SRCCSI. El parámetro SRCCSI especifica un valor que no esválido o no está soportado, o bien el puntero del parámetro SRCCSI no esválido. (No siempre es posible detectar los punteros de parámetro que noson válidos; si no se detectan, el resultado es imprevisible).

Acción correctora: compruebe el identificador de juego de caracteres que seespecificó cuando se transfirió el mensaje, o que se especificó para elparámetro SRCCSI en la llamada MQXCNVC. Si fuera correcto, compruebeque es tal que para él está soportada la conversión del gestor de colas. Si laconversión del gestor de colas no está soportada para el juego de caracteresespecificado, será la aplicación la que deba llevar a cabo la conversión.

RC2112(2112, X'840') Codificación de entero origen no reconocida.

En una llamada MQGET, con la opción GMCONV incluida en elparámetro GMO, el valor MDENC del mensaje que se está recuperandoespecifica una codificación de entero que no se reconoce. Los datos delmensaje se devuelven sin convertir, los valores de los campos MDCSI yMDENC del parámetro MSGDSC se establecen en los del mensaje devuelto y lallamada se completa con CCWARN.

Si el mensaje consta de varias partes, cada una de ellas descrita por suspropios campos de juego de caracteres y de codificación (por ejemplo, unmensaje con el nombre de formato FMDLH), puede ser que se conviertanalgunas partes y otras no. No obstante, los valores devueltos en losdistintos campos de juego de caracteres y de codificación siempredescriben correctamente los datos de mensaje relevantes.

Este código de razón también puede darse en la llamada MQXCNVC,cuando el parámetro OPTS contiene un valor DCCS* no soportado, ocuando se especifica DCCSUN para una página de códigos UCS2.

Acción correctora: compruebe la codificación de entero que se especificócuando se transfirió el mensaje. Si fuera correcta, compruebe que es tal quepara ella está soportada la conversión del gestor de colas. Si la conversióndel gestor de colas no está soportada para la codificación de enteronecesaria, será la aplicación la que deba llevar a cabo la conversión.

RC2113(2113, X'841') Codificación de decimal empaquetado del mensaje noreconocida.

En una llamada MQGET con la opción GMCONV incluida en el parámetroGMO, el valor MDENC del mensaje que se está recuperando especifica unacodificación de decimal que no se reconoce. Los datos del mensaje sedevuelven sin convertir, los valores de los campos MDCSI y MDENC delparámetro MSGDSC se establecen en los del mensaje devuelto y la llamada secompleta con CCWARN.

Si el mensaje consta de varias partes, cada una de ellas descrita por suspropios campos de juego de caracteres y de codificación (por ejemplo, unmensaje con el nombre de formato FMDLH), puede ser que se conviertanalgunas partes y otras no. No obstante, los valores devueltos en losdistintos campos de juego de caracteres y de codificación siempredescriben correctamente los datos de mensaje relevantes.

Acción correctora: compruebe la codificación de decimal que se especificócuando se transfirió el mensaje. Si fuera correcta, compruebe que es tal que

Códigos de retorno

Apéndice A. Códigos de retorno 401

Page 416: amqwak00

para ella está soportada la conversión del gestor de colas. Si la conversióndel gestor de colas no está soportada para la codificación de decimalnecesaria, será la aplicación la que deba llevar a cabo la conversión.

RC2114(2114, X'842') Codificación de coma flotante del mensaje no reconocida.

En una llamada MQGET, con la opción GMCONV incluida en elparámetro GMO, el valor MDENC del mensaje que se está recuperandoespecifica una codificación de coma flotante que no se reconoce. Los datosdel mensaje se devuelven sin convertir, los valores de los campos MDCSI yMDENC del parámetro MSGDSC se establecen en los del mensaje devuelto y lallamada se completa con CCWARN.

Si el mensaje consta de varias partes, cada una de ellas descrita por suspropios campos de juego de caracteres y de codificación (por ejemplo, unmensaje con el nombre de formato FMDLH), puede ser que se conviertanalgunas partes y otras no. No obstante, los valores devueltos en losdistintos campos de juego de caracteres y de codificación siempredescriben correctamente los datos de mensaje relevantes.

Acción correctora: compruebe la codificación de coma flotante que seespecificó cuando se transfirió el mensaje. Si fuera correcta, compruebe quees tal que para ella está soportada la conversión del gestor de colas. Si laconversión del gestor de colas no está soportada para la codificación decoma flotante necesaria, será la aplicación la que deba llevar a cabo laconversión.

RC2115(2115, X'843') El identificador de juego de caracteres codificado destino noes válido.

El identificador de juego de caracteres codificado al que se van a convertirlos datos de tipo carácter no es válido o no está soportado.

Esto se puede producir en la llamada MQGET, cuando se incluye la opciónGMCONV en el parámetro GMO; el identificador de juego de caracterescodificado que tiene el error es el campo MDCSI del parámetro MSGDSC. Eneste caso, los datos del mensaje se devuelven sin convertir, los valores delos campos MDCSI y MDENC del parámetro MSGDSC se establecen en los delmensaje devuelto y la llamada se completa con CCWARN.

Este código de razón también se pueda dar en la llamada MQGET cuandoel mensaje contiene una o más de las estructuras de cabecera MQrelacionadas con los datos (MQCIH, MQDLH, MQIIH, MQRMH), y elcampo MDCSI del parámetro MSGDSC especifica un juego de caracteres queno tiene caracteres SBCS para los caracteres que son válidos como nombresde cola. El juego de caracteres Unicode UCS-2 es un ejemplo de dichosjuegos de caracteres.

Este código de razón también puede darse en la llamada MQXCNVC; elidentificador de juego de caracteres codificado que tiene el error es elparámetro TGTCSI. El parámetro TGTCSI especifica un valor que no esválido o no está soportado, o bien el puntero del parámetro TGTCSI no esválido. (No siempre es posible detectar los punteros de parámetro que noson válidos; si no se detectan, el resultado es imprevisible).

Acción correctora: compruebe el identificador de juego de caracteresespecificado para el campo MDCSI del parámetro MSGDSC de la llamadaMQGET o el especificado para el parámetro SRCCSI de la llamadaMQXCNVC. Si fuera correcto, compruebe que es tal que para él está

Códigos de retorno

402 Consulta de programación de aplicaciones (ILE RPG)

Page 417: amqwak00

soportada la conversión del gestor de colas. Si la conversión del gestor decolas no está soportada para el juego de caracteres especificado, será laaplicación la que deba llevar a cabo la conversión.

RC2116(2116, X'844') Codificación de entero destino no reconocida.

En una llamada MQGET con la opción GMCONV incluida en el parámetroGMO, el valor MDENC del parámetro MSGDSC especifica una codificación deentero que no se reconoce. Los datos del mensaje no se convierten, losvalores de los campos MDCSI y MDENC del parámetro MSGDSC se establecen enlos del mensaje que se está recuperando y la llamada se completa conCCWARN.

Este código de razón también puede darse en la llamada MQXCNVC,cuando el parámetro OPTS contiene un valor DCCT* no soportado o cuandose especifica DCCTUN para una página de códigos UCS2.

Acción correctora: compruebe la codificación de entero que se especificó. Sifuera correcta, compruebe que es tal que para ella está soportada laconversión del gestor de colas. Si la conversión del gestor de colas no estásoportada para la codificación de entero necesaria, será la aplicación la quedeba llevar a cabo la conversión.

RC2117(2117, X'845') Codificación de decimal empaquetado especificada porreceptor no reconocida.

En una llamada MQGET con la opción GMCONV incluida en el parámetroGMO, el valor MDENC del parámetro MSGDSC especifica una codificación dedecimal que no se reconoce. Los datos del mensaje se devuelven sinconvertir, los valores de los campos MDCSI y MDENC del parámetro MSGDSC seestablecen en los del mensaje devuelto y la llamada se completa conCCWARN.

Acción correctora: compruebe la codificación de decimal que se especificó.Si fuera correcta, compruebe que es tal que para ella está soportada laconversión del gestor de colas. Si la conversión del gestor de colas no estásoportada para la codificación de decimal necesaria, será la aplicación laque deba llevar a cabo la conversión.

RC2118(2118, X'846') Codificación de coma flotante especificada por receptor noreconocida.

En una llamada MQGET con la opción GMCONV incluida en el parámetroGMO, el valor MDENC del parámetro MSGDSC especifica una codificación decoma flotante que no se reconoce. Los datos del mensaje se devuelven sinconvertir, los valores de los campos MDCSI y MDENC del parámetro MSGDSC seestablecen en los del mensaje devuelto y la llamada se completa conCCWARN.

Acción correctora: compruebe la codificación de coma flotante que seespecificó. Si fuera correcta, compruebe que es tal que para ella estásoportada la conversión del gestor de colas. Si la conversión del gestor decolas no está soportada para la codificación de coma flotante necesaria,será la aplicación la que deba llevar a cabo la conversión.

RC2119(2119, X'847') Los datos del mensaje no se han convertido.

Códigos de retorno

Apéndice A. Códigos de retorno 403

Page 418: amqwak00

En una llamada MQGET con la opción GMCONV incluida en el parámetroGMO, se produjo un error durante la conversión de los datos del mensaje.Los datos del mensaje se devuelven sin convertir, los valores de los camposMDCSI y MDENC del parámetro MSGDSC se establecen en los del mensajedevuelto y la llamada se completa con CCWARN.

Si el mensaje consta de varias partes, cada una de ellas descrita por suspropios campos de juego de caracteres y de codificación (por ejemplo, unmensaje con el nombre de formato FMDLH), puede ser que se conviertanalgunas partes y otras no. No obstante, los valores devueltos en losdistintos campos de juego de caracteres y de codificación siempredescriben correctamente los datos de mensaje relevantes.

Este error puede indicar también que un parámetro del servicio deconversión de datos no está soportado.

Acción correctora: compruebe que los datos del mensaje estén descritoscorrectamente por los parámetros MDFMT, MDCSI y MDENC que se especificaroncuando se transfirió el mensaje. Compruebe también que estos valores ylos campos MDCSI y MDENC especificados en el parámetro MSGDSC de lallamada MQGET estén soportados por la conversión del gestor de colas. Sila conversión solicitada no está soportada, esta debería llevarla a cabo laaplicación.

RC2120(2120, X'848') Los datos convertidos son demasiado grandes para elalmacenamiento intermedio.

En una llamada MQGET con la opción GMCONV incluida en el parámetroGMO, los datos del mensaje se expandieron al convertirse y superaron eltamaño del almacenamiento intermedio proporcionado por la aplicación.No obstante, el mensaje ya se había eliminado de la cola porque antes deque se produjera la conversión, los datos pudieron acomodarse en elalmacenamiento intermedio de la aplicación sin truncarse.

El mensaje se devuelve sin convertir, con el parámetro CMPCOD de lallamada MQGET establecido en CCWARN. Si el mensaje consta de variaspartes, cada una de ellas descrita por sus propios campos de juego decaracteres y de codificación (por ejemplo, un mensaje con el nombre deformato FMDLH), puede ser que se conviertan algunas partes y otras no.No obstante, los valores devueltos en los distintos campos de juego decaracteres y de codificación siempre describen correctamente los datos demensaje relevantes.

Este código de razón también se puede producir en la llamadaMQXCNVC, cuando el parámetro TGTBUF es demasiado pequeño para darcabida a la serie convertida y esta ha sido truncada para que quepa en elalmacenamiento intermedio. La longitud de datos válidos devueltos vienedada por el parámetro DATLEN; en el caso de una serie DBCS o mixtaSBCS/DBCS, esta longitud puede ser menor que la longitud de TGTBUF.

Acción correctora: para la llamada MQGET, compruebe que la rutina desalida convierte los datos del mensaje correctamente y que establece lalongitud de salida DATLEN en el valor adecuado. Si es así, la aplicación queemite la llamada MQGET debe facilitar un almacenamiento intermediomayor para el parámetro BUFFER.

Para la llamada MQXCNVC, si la serie debe convertirse sin truncar, faciliteun almacenamiento intermedio de salida mayor.

Códigos de retorno

404 Consulta de programación de aplicaciones (ILE RPG)

Page 419: amqwak00

RC2121(2121, X'849') No se han registrado gestores de recursos participantes.

Se ha emitido una llamada MQBEGIN para iniciar una unidad de trabajocoordinada por el gestor de colas, pero no se ha registrado ningún gestorde recursos participante en el gestor de colas. Por lo tanto, el gestor decolas solo podrá coordinar los cambios que se realicen en los recursos MQen la unidad de trabajo.

Este código de razón se da en los entornos siguientes: AIX, HP-UX, OS/2,OS/400, Sun Solaris, Windows NT.

Acción correctora: si la aplicación no necesita recursos que no sean MQpara participar en la unidad de trabajo, puede hacerse caso omiso de estecódigo de razón o se puede eliminar la llamada MQBEGIN. En casocontrario, consulte con el programador de soporte del sistema la razón deque no se hayan registrado los gestores de recursos necesarios en el gestorde colas; es posible que el error esté en el archivo de configuración delgestor de colas.

RC2122(2122, X'84A') El gestor de recursos participante no está disponible.

Se ha emitido una llamada MQBEGIN para arrancar una unidad de trabajocoordinada por el gestor de colas, pero uno o más de los gestores derecursos participantes registrados en el gestor de colas no estándisponibles. Por lo tanto, los cambios realizados en estos recursos no puedecoordinarlos el gestor de colas en la unidad de trabajo.

Este código de razón se da en los entornos siguientes: AIX, HP-UX, OS/2,OS/400, Sun Solaris, Windows NT.

Acción correctora: si la aplicación no necesita recursos que no sean MQpara participar en la unidad de trabajo, puede hacerse caso omiso de estecódigo de razón. En caso contrario, consulte con el programador desoporte del sistema la razón de que no estén disponibles los gestores derecursos necesarios. Puede ser que el gestor de recursos se haya detenidotemporalmente o que haya un error en el archivo de configuración delgestor de colas.

RC2123(2123, X'84B') Hay una mezcla en el resultado de una operación decompromiso o de restitución.

El gestor de colas hace de coordinador de una unidad de trabajo en la queestán implicados otros gestores de recursos, pero se ha producido una deestas situaciones:v Se ha emitido una llamada MQCMIT o MQDISC para comprometer la

unidad de trabajo, pero uno o varios de los gestores de recursosparticipantes restituyeron la unidad de trabajo en lugar decomprometerla. Por ello, el resultado de la unidad de trabajo es mixto.

v Se ha emitido una llamada MQBACK para restituir una unidad detrabajo, pero uno o varios de los gestores de recursos participantes ya lahabían comprometido.

Este código de razón se da en los entornos siguientes: AIX, HP-UX, OS/2,Sun Solaris, Windows NT.

Acción correctora: vea si en las anotaciones de error del gestor de colas haymensajes que estén relacionados con el resultado mixto; esos mensajes

Códigos de retorno

Apéndice A. Códigos de retorno 405

|

|

Page 420: amqwak00

identifican los gestores de recursos afectados. Utilice procedimientoslocales en los gestores de recursos afectados para resincronizar los recursos.

Nota: Este código de razón no impide que la aplicación pueda iniciar másunidades de trabajo.

RC2124(2124, X'84C') El resultado de una operación de compromiso estápendiente.

El gestor de colas hace de coordinador de una unidad de trabajo en la queestán implicados otros gestores de recursos y se ha emitido una llamadaMQCMIT o MQDISC para comprometer la unidad de trabajo, pero a uno oa varios de los gestores de recursos participantes no se les ha confirmadoque la unidad de trabajo se ha comprometido satisfactoriamente.

La conclusión de la operación de compromiso se producirá más adelante,pero existe la posibilidad de que el resultado sea mixto.

Este código de razón se da en los entornos siguientes: AIX, HP-UX, OS/2,Sun Solaris, Windows NT.

Acción correctora: utilice los mecanismos normales de notificación deerrores para determinar si el resultado ha sido mixto. Si lo ha sido, realicela acción adecuada para resincronizar los recursos.

Nota: Este código de razón no impide que la aplicación pueda iniciar másunidades de trabajo.

RC2125(2125, X'84D') Puente iniciado.

Se ha iniciado el puente IMS.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2126(2126, X'84E') Puente detenido.

Se ha detenido el puente IMS.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2128(2128, X'850') Unidad de trabajo ya iniciada.

Se ha emitido una llamada MQBEGIN para iniciar una unidad de trabajocoordinada por el gestor de colas, pero ya existe una unidad de trabajopara el asa de conexión especificada. Puede tratarse de una unidad detrabajo global iniciada por una llamada MQBEGIN anterior o de unaunidad de trabajo local del gestor de colas o de los gestores de recursosque cooperan. Para un asa de conexión solo puede existirconcurrentemente una unidad de trabajo.

Este código de razón se da en los entornos siguientes: AIX, HP-UX, OS/2,OS/400, Sun Solaris, Windows NT.

Acción correctora: revise la lógica de la aplicación para averiguar por quéya existe una unidad de trabajo. Traslade la llamada MQBEGIN al lugarque le corresponda en la aplicación.

Códigos de retorno

406 Consulta de programación de aplicaciones (ILE RPG)

|

Page 421: amqwak00

RC2134(2134, X'856') La estructura de las opciones de empezar no es válida.

En una llamada MQBEGIN, la estructura de las opciones de empezarMQBO no es válida por una de estas razones:v El nemotécnico de atención BOSID no es BOSIDV.v El campo BOVER no es BOVER1.v El puntero del parámetro no es válido. (No siempre es posible detectar

los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

v El gestor de colas no puede copiar la estructura cambiada en elalmacenamiento de la aplicación, aunque la llamada sea satisfactoria.Esto puede producirse, por ejemplo, si el puntero señala a unalmacenamiento de solo lectura.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura MQBO. Asegúresede que se han establecido correctamente los campos de entradaobligatorios.

RC2135(2135, X'857') La estructura de cabecera de distribución no es válida.

En una llamada MQPUT o MQPUT1, no es válida la estructura de cabecerade distribución MQDH de los datos del mensaje.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura MQDH. Asegúresede que los campos están correctamente establecidos.

RC2136(2136, X'858') Se han devuelto múltiples códigos de razón.

Se ha emitido una llamada MQOPEN, MQPUT o MQPUT1 para abrir unalista de distribución o para poner un mensaje en una lista de distribución,pero el resultado de la llamada no ha sido el mismo para todos losdestinos de la lista. Se ha producido una de las siguientes condiciones:v La llamada ha sido satisfactoria para algunos destinos pero no para

otros. En este caso, el código de terminación es CCWARN.v La llamada ha fallado para todos los destinos, pero por distintos

motivos. En este caso, el código de terminación es CCFAIL.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: examine los registros de respuesta MQRR paraidentificar los destinos en los que ha fallado la llamada y la razón de laanomalía. Asegúrese de que la aplicación proporciona suficientes registrosde respuesta en la llamada para permitir determinar los errores. En el casode la llamada MQPUT1, los registros de respuesta se han de especificar conla estructura MQOD, no con la estructura MQPMO.

RC2137(2137, X'859') El objeto no se ha abierto satisfactoriamente.

Códigos de retorno

Apéndice A. Códigos de retorno 407

|

Page 422: amqwak00

No se ha podido abrir satisfactoriamente una cola u otro objeto de MQ, yel motivo ha sido uno de los siguientes:v Se ha emitido una llamada MQCONN o MQCONNX, pero al gestor de

colas le ha sido imposible abrir un objeto utilizado internamente por elgestor de colas. Por lo tanto, el proceso no puede continuar. En lasanotaciones de error debe figurar el nombre del objeto que no se hapodido abrir.

v Se ha emitido una llamada MQPUT para poner un mensaje en una listade distribución, pero no se pudo enviar el mensaje al destino indicadopor este código de razón, pues la llamada MQOPEN no pudo abrirsatisfactoriamente el destino. Esta razón solo aparece en el campo RRREAdel registro de respuesta MQRR.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora:v Si el error se produjo en la llamada MQCONN o MQCONNX, debe estar

seguro de que existen los objetos necesarios; para ello, ejecute elsiguiente mandato y luego reintente la aplicación:STRMQM -c qmgr

siendo qmgr el nombre del gestor de colas.v Si el error se produjo en la llamada MQPUT, examine los registros de

respuesta MQRR especificados en la llamada MQOPEN para averiguarpor qué razón no se abrió la cola. Asegúrese de que la aplicaciónproporciona suficientes registros de respuesta en la llamada parapermitir determinar los errores.

RC2139(2139, X'85B') La estructura de las opciones de conectar no es válida.

En una llamada MQCONNX, la estructura de las opciones de conectarMQCNO no es válida por una de estas razones:v El nemotécnico de atención CNSID no es CNSIDV.v El campo CNVER no es CNVER1.v El puntero del parámetro no es válido. (No siempre es posible detectar

los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

v El gestor de colas no puede copiar la estructura cambiada en elalmacenamiento de la aplicación, aunque la llamada sea satisfactoria.Esto puede producirse, por ejemplo, si el puntero del parámetro señala aun almacenamiento de solo lectura.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura MQCNO. Asegúresede que se han establecido correctamente los campos de entradaobligatorios.

RC2141(2141, X'85D') La estructura de cabecera de mensajes no entregados no esválida.

Códigos de retorno

408 Consulta de programación de aplicaciones (ILE RPG)

|

Page 423: amqwak00

En una llamada MQPUT o MQPUT1, no es válida la estructura de cabecerade mensajes no entregados MQDLH de los datos del mensaje.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura MQDLH. Asegúresede que los campos están correctamente establecidos.

RC2142(2142, X'85E') La estructura de cabecera de MQ no es válida.

Se ha empleado la llamada MQPUT o MQPUT1 para transferir un mensajeque contiene una estructura de cabecera de MQ, pero la estructura no esválida.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura de cabecera de MQ.Asegúrese de que los campos están correctamente establecidos.

RC2143(2143, X'85F') Parámetro longitud origen no válido.

En la llamada MQXCNVC, el parámetro SRCLEN especifica una longitudmenor que cero o que no es coherente con el juego de caracteres de la serieo con el contenido (por ejemplo, el juego de caracteres es de doble byte,pero la longitud no es un múltiplo de dos). Esta razón se produce tambiénsi el puntero del parámetro SRCLEN no es válido. (No siempre es posibledetectar los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

Este código de razón también se puede producir en la llamada MQGETcuando se especifica la opción GMCONV. En este caso, indica que unallamada MQXCNVC emitida por la rutina de salida de conversión de datosdevolvió la razón RC2143.

Acción correctora: especifique una longitud que sea mayor o igual quecero.

Si el código de razón se produce en la llamada MQGET, vea si es correctala lógica de la rutina de salida de conversión de datos.

RC2144(2144, X'860') Parámetro longitud destino no válido.

En la llamada MQXCNVC, el parámetro TGTLEN no es válido debido a unade estas razones:v TGTLEN es menor que cero.v El puntero del parámetro TGTLEN no es válido. (No siempre es posible

detectar los punteros de parámetro que no son válidos; si no se detectan,el resultado es imprevisible).

v Se ha especificado la opción DCCFIL, pero TGTLEN tiene un valor tal queel almacenamiento intermedio destino no se puede llenar completamentecon caracteres válidos. Esto se puede producir cuando TGTCSI es unjuego de caracteres totalmente DBCS (como UCS-2), pero TGTLENespecifica una longitud que es un número impar de bytes.

Códigos de retorno

Apéndice A. Códigos de retorno 409

Page 424: amqwak00

Este código de razón también se puede producir en la llamada MQGETcuando se especifica la opción GMCONV. En este caso, indica que unallamada MQXCNVC emitida por la rutina de salida de conversión de datosdevolvió la razón RC2144.

Acción correctora: especifique una longitud que sea mayor o igual quecero. Si se especifica la opción DCCFIL, y TGTCSI es un juego de caracterestotalmente DBCS, asegúrese de que TGTLEN indica una longitud que seamúltiplo de dos.

Si el código de razón se produce en la llamada MQGET, vea si es correctala lógica de la rutina de salida de conversión de datos.

RC2145(2145, X'861') Parámetro almacenamiento intermedio origen no válido.

En la llamada MQXCNVC, el puntero de parámetro SRCBUF no es válido oseñala a un almacenamiento al que no puede acceder toda la longitudespecificada por SRCLEN. (No siempre es posible detectar los punteros deparámetro que no son válidos; si no se detectan, el resultado esimprevisible).

Este código de razón también se puede producir en la llamada MQGETcuando se especifica la opción GMCONV. En este caso, indica que unallamada MQXCNVC emitida por la rutina de salida de conversión de datosdevolvió la razón RC2145.

Acción correctora: especifique un almacenamiento intermedio válido.

Si el código de razón se produce en la llamada MQGET, vea si es correctala lógica de la rutina de salida de conversión de datos.

RC2146(2146, X'862') Parámetro almacenamiento intermedio destino no válido.

En la llamada MQXCNVC, el puntero de parámetro TGTBUF no es válido oseñala a un almacenamiento de solo lectura o bien a un almacenamiento alque no puede acceder toda la longitud especificada por TGTLEN. (Nosiempre es posible detectar los punteros de parámetro que no son válidos;si no se detectan, el resultado es imprevisible).

Este código de razón también se puede producir en la llamada MQGETcuando se especifica la opción GMCONV. En este caso, indica que unallamada MQXCNVC emitida por la rutina de salida de conversión de datosdevolvió la razón RC2146.

Acción correctora: especifique un almacenamiento intermedio válido.

Si el código de razón se produce en la llamada MQGET, vea si es correctala lógica de la rutina de salida de conversión de datos.

RC2148(2148, X'864') La estructura de cabecera de información de IMS no esválida.

En una llamada MQPUT o MQPUT1, no es válida la estructura MQIIH decabecera de información de IMS de los datos del mensaje.

Acción correctora: corrija la definición de la estructura MQIIH. Asegúresede que los campos están correctamente establecidos.

RC2149(2149, X'865') Las estructuras PCF no son válidas.

Códigos de retorno

410 Consulta de programación de aplicaciones (ILE RPG)

Page 425: amqwak00

Se ha emitido una llamada MQPUT o MQPUT1 para transferir un mensajeque contenía datos PCF, pero la longitud del mensaje no es igual a la sumade las longitudes de las estructuras PCF que hay en el mensaje. Esto puedeproducirse en los mensajes que tengan los siguientes nombres de formato:

FMADMNFMEVNTFMPCF

Acción correctora: asegúrese de que la longitud del mensaje especificadoen la llamada MQPUT o MQPUT1 sea igual a la suma de las longitudes delas estructuras que hay en los datos del mensaje.

RC2150(2150, X'866') La serie DBCS no es válida.

En la llamada MQXCNVC, el parámetro SRCCSI especifica el identificadorde un juego de caracteres de doble byte (DBCS), pero el parámetro SRCBUFno contiene una serie DBCS válida. Esto puede ocurrir porque la seriecontenga caracteres que no son caracteres DBCS válidos, o porque sea unaserie mixta SBCS/DBCS y los caracteres de desplazamiento a tecladoideológico/desplazamiento a teclado estándar no estén emparejadoscorrectamente.

Este código de razón también se puede producir en la llamada MQGETcuando se especifica la opción GMCONV. En este caso, indica que unallamada MQXCNVC emitida por la rutina de salida de conversión de datosdevolvió la razón RC2150.

Acción correctora: especifique una serie válida.

Si el código de razón se produce en la llamada MQGET, vea si son válidoslos datos del mensaje y si es correcta la lógica de la rutina de salida deconversión de datos.

RC2152(2152, X'868') El nombre de objeto no es válido.

Se ha emitido una llamada MQOPEN o MQPUT1 para abrir una lista dedistribución (es decir, el campo ODREC de MQOD es mayor que cero), peroel campo ODON no es ni un blanco ni la serie nula.

Acción correctora: si lo que se pretende es abrir una lista de distribución,establezca el campo ODON en blancos o en la serie nula. En caso contrario,establezca el campo ODREC en cero.

RC2153(2153, X'869') El nombre de gestor de colas de objeto no es válido.

Se ha emitido una llamada MQOPEN o MQPUT1 para abrir una lista dedistribución (es decir, el campo ODREC de MQOD es mayor que cero), peroel campo ODMN no es ni blancos ni la serie nula.

Acción correctora: si lo que se pretende es abrir una lista de distribución,establezca el campo ODMN en blancos o en la serie nula. En caso contrario,establezca el campo ODREC en cero.

RC2154(2154, X'86A') El número de registros presentes no es válido.

Se ha emitido una llamada MQOPEN o MQPUT1, pero la llamada hafallado por uno de estos motivos:v ODREC de MQOD es menor que cero.

Códigos de retorno

Apéndice A. Códigos de retorno 411

Page 426: amqwak00

v ODOT de MQOD no es OTQ, y ODREC no es cero. ODREC debe ser cero si elobjeto que se va a abrir no es una cola.

Acción correctora: si lo que se pretende es abrir una lista de distribución,establezca el campo ODOT en OTQ y ODREC en el número de destinos de lalista. En caso contrario, establezca el campo ODREC en cero.

RC2155(2155, X'86B') Los registros de objeto no son válidos.

Se ha emitido una llamada MQOPEN o MQPUT1 para abrir una lista dedistribución (es decir, el campo ODREC de MQOD es mayor que cero), perolos registros de objeto MQOR no se han especificado correctamente. Se haproducido una de las siguientes condiciones:v ODORO es cero y ODORP es el puntero nulo o cero.v ODORO no es cero y ODORP no es ni el puntero nulo ni cero.v ODORP no es un puntero válido.v ODORP o ODORO señala a un almacenamiento no accesible.

Acción correctora: asegúrese de que uno de los valores ODORO y ODORP seacero y el otro distinto de cero. Asegúrese de que el campo utilizado señalaa un almacenamiento accesible.

RC2156(2156, X'86C') Los registros de respuesta no son válidos.

Se ha emitido una llamada MQOPEN o MQPUT1 para abrir una lista dedistribución (es decir, el campo ODREC de MQOD es mayor que cero), perolos registros de respuesta MQRR no se han especificado correctamente. Seha producido una de las siguientes condiciones:v ODRRO no es cero y ODRRP no es ni el puntero nulo ni cero.v ODRRP no es un puntero válido.v ODRRP o ODRRO señala a un almacenamiento no accesible.

Acción correctora: asegúrese de que sea cero al menos uno de los valoresODRRO y ODRRP. Asegúrese de que el campo utilizado señala a unalmacenamiento accesible.

RC2158(2158, X'86E') No son válidos los distintivos de los registros para ponermensaje.

Se ha emitido una llamada MQPUT o MQPUT1 para poner un mensaje,pero el campo PMPRF de la estructura MQPMO no es válido debido a unade estas razones:v El campo contiene distintivos que no son válidos.v El mensaje se va a poner en una lista de distribución, y se han

proporcionado registros para poner el mensaje (es decir, PMREC es mayorque cero, y uno de los valores PMPRO o PMPRP es distinto de cero), peroPMPRF tiene el valor PFNONE.

v Se ha especificado PFACC sin PMSETI o PMSETA.

Acción correctora: asegúrese de que PMPRF se establece con los distintivosPF* adecuados para indicar qué campos están presentes en los registros

Códigos de retorno

412 Consulta de programación de aplicaciones (ILE RPG)

Page 427: amqwak00

para poner el mensaje. Si se especifica PFACC, se debe especificarasimismo PMSETI o PMSETA. Alternativamente, establezca PMPRO y PMPRPen cero.

RC2159(2159, X'86F') No son válidos los registros para poner mensaje.

Se ha emitido una llamada MQPUT o MQPUT1 para poner un mensaje enuna lista de distribución, pero no se han especificado correctamente losregistros para poner mensaje MQPMR. Se ha producido una de lassiguientes condiciones:v PMPRO no es cero y PMPRP no es ni el puntero nulo ni cero.v PMPRP no es un puntero válido.v PMPRP o PMPRO señala a un almacenamiento no accesible.

Acción correctora: asegúrese de que sea cero al menos uno de los valoresPMPRO y PMPRP. Asegúrese de que el campo utilizado señala a unalmacenamiento accesible.

RC2161(2161, X'871') El gestor de colas está en reposo.

La aplicación ha intentado conectarse al gestor de colas, pero este está enestado de reposo.v En OS/400, la aplicación ha emitido la llamada MQCONN, o bien ha

emitido la llamada MQOPEN cuando no se había establecido ningunaconexión.

Este código de razón también se produce si el gestor de colas está enestado de reposo y la aplicación emite una de estas llamadas:v MQOPEN, con OOFIQ incluido en el parámetro OPTS

v MQGET, con GMFIQ incluido en el campo GMOPT del parámetro GMO

v MQPUT o MQPUT1, con PMFIQ incluido en el campo PMOPT delparámetro PMO

Acción correctora: la aplicación debe ponerlo todo en orden y detenerse. Sino se utilizan las opciones OOFIQ, PMFIQ ni GMFIQ, la aplicación tal vezsiga trabajando para completar y comprometer la unidad de trabajo actual;pero no debe empezar otra unidad de trabajo.

RC2162(2162, X'872') Se está cerrando el gestor de colas.

Se ha emitido una llamada cuando el gestor de colas se estaba cerrando. Sila llamada es MQGET con la opción GMWT, la espera se ha cancelado. Nopueden emitirse más llamadas de gestión de colas de mensajes.

Acción correctora: la aplicación debe ponerlo todo en orden y detenerse.Las aplicaciones deben asegurar que se restituyen todas las actualizacionesque no se hayan comprometido; las unidades de trabajo coordinadas por elgestor de colas se restituyen automáticamente.

RC2173(2173, X'87D') La estructura de las opciones de poner mensaje no es válida.

En una llamada MQPUT o MQPUT1, la estructura MQPMO no es válida.No es correcto el nemotécnico de atención PMSID o no se ha reconocido elvalor de PMVER.

Códigos de retorno

Apéndice A. Códigos de retorno 413

Page 428: amqwak00

Esta razón también se produce si:v El puntero del parámetro no es válido. (No siempre es posible detectar

los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

v El gestor de colas no puede copiar la estructura cambiada en elalmacenamiento de la aplicación, aunque la llamada sea satisfactoria.Esto puede producirse, por ejemplo, si el puntero señala a unalmacenamiento de solo lectura.

Acción correctora: corrija la definición de la estructura MQPMO. Asegúresede que se han establecido correctamente los campos de entradaobligatorios.

RC2184(2184, X'888') El nombre de la cola remota no es válido.

En una llamada MQOPEN o MQPUT1, se ha producido una de estassituaciones:v Se ha especificado una definición local (o un alias) de una cola remota,

pero el atributo RemoteQName de la definición de cola remota estácompletamente en blanco. Recuerde que este error se produce incluso siel atributo XmitQName de la definición no está en blanco.

v El campo ODMN del descriptor de objeto no estaba en blanco ni era elnombre del gestor de colas local, pero el campo ODON está en blanco.

Acción correctora: modifique la definición local de la cola remota y faciliteun nombre de cola remota válido, o facilite un valor de ODON que no sea enblanco en el descriptor de objeto, según corresponda.

RC2185(2185, X'889') Especificación de permanencia incoherente.

Se ha emitido la llamada MQPUT para poner un mensaje que, en el campoMDPER de MQMD, tiene un valor distinto del que tenía la llamada anteriorde poner mensaje utilizando esa asa de cola. Esto no está permitidocuando se especifica la opción PMLOGO y ya hay un grupo de mensajesactual o un mensaje lógico. Los mensajes de un grupo y los segmentos deun mensaje lógico deben ser o todos permanentes o todos no permanentes.

Acción correctora: modifique la aplicación para asegurar que todos losmensajes de un grupo o de un mensaje lógico se pongan con el mismovalor del campo MDPER de MQMD.

RC2186(2186, X'88A') No es válida la estructura de las opciones de obtenermensaje.

En una llamada MQGET, no es válida la estructura MQGMO. O no esválido el nemotécnico de atención GMSID o no se ha reconocido el valor deGMVER.

Esta razón también se produce si:v El puntero del parámetro no es válido. (No siempre es posible detectar

los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

Códigos de retorno

414 Consulta de programación de aplicaciones (ILE RPG)

Page 429: amqwak00

v El gestor de colas no puede copiar la estructura cambiada en elalmacenamiento de la aplicación, aunque la llamada sea satisfactoria.Esto puede producirse, por ejemplo, si el puntero señala a unalmacenamiento de solo lectura.

Acción correctora: corrija la definición de la estructura MQGMO.Asegúrese de que se han establecido correctamente los campos de entradaobligatorios.

RC2187(2187, X'88B') La función solicitada no está soportada por el puente CICS.

No está permitido usar la MQI desde las transacciones de usuario que seejecutan en un entorno de puente MQSeries-CICS, cuando la rutina desalida del puente también utiliza la MQI. Falla la petición de la MQI. Siesto se produce en la rutina de salida del puente, la transacción terminaráde forma anómala (abend). Si esto se produce en la transacción de usuario,la transacción podría terminar de forma anómala (abend).

Acción correctora: no se puede ejecutar la transacción utilizando el puenteMQSeries-CICS. En el correspondiente manual CICS hallará informaciónacerca de las restricciones del entorno del puente MQSeries-CICS.

RC2188(2188, X'88C') Llamada rechazada por la rutina de salida de carga detrabajo de clúster.

Se ha emitido una llamada MQOPEN, MQPUT o MQPUT1 para abrir unacola de clúster o poner un mensaje en ella, pero la rutina de salida decarga de trabajo del clúster ha rechazado la llamada.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/390, OS/2, OS/400, Sun Solaris, cliente Windows, WindowsNT.

Acción correctora: compruebe la rutina de salida de carga de trabajo delclúster para ver si está bien escrita. Averigüe por qué rechazó la llamada ycorrija el problema.

RC2189(2189, X'88D') Ha fallado la resolución del nombre de clúster.

Se ha emitido una llamada MQOPEN, MQPUT o MQPUT1 para abrir unacola de clúster o poner un mensaje en ella, pero no se pudo resolvercorrectamente la definición de cola, porque se requería una respuesta delgestor del depósito y no había ninguna.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/390, OS/2, OS/400, Sun Solaris, cliente Windows, WindowsNT.

Acción correctora: vea si está funcionando el gestor del depósito y si soncorrectas las definiciones de cola y de canal.

RC2190(2190, X'88E') La serie convertida es demasiado grande para el campo.

En una llamada MQGET con la opción GMCONV incluida en el parámetroGMO, había una serie en un campo de longitud fija del mensaje; pero la seriese expandió durante la conversión de datos y su tamaño superó el delcampo. Cuando sucede esto, el gestor de colas intenta descartar los blancos

Códigos de retorno

Apéndice A. Códigos de retorno 415

|

|

Page 430: amqwak00

finales y los caracteres que siguen al primer carácter nulo, con el objeto delograr que quepa la serie; pero en este caso no había suficientes caracteresque descartar.

Este código de razón también se puede producir en los mensajes cuyonombre de formato es FMIMVS. Cuando ello sucede, indica que la serievariable de IMS se expande de tal forma que su longitud supera lacapacidad del campo de longitud binaria de 2 bytes contenido dentro de laestructura de la serie variable de IMS. (El gestor de colas no descartanunca los blancos finales de una serie variable de IMS).

El mensaje se devuelve sin convertir, con el parámetro CMPCOD de lallamada MQGET establecido en CCWARN. Si el mensaje consta de variaspartes, cada una de ellas descrita por sus propios campos de juego decaracteres y de codificación (por ejemplo, un mensaje con el nombre deformato FMDLH), puede ser que se conviertan algunas partes y otras no.No obstante, los valores devueltos en los distintos campos de juego decaracteres y de codificación siempre describen correctamente los datos demensaje relevantes.

Este código de razón no aparece si es posible hacer que la serie quepa abase de descartar los caracteres blancos finales.

Acción correctora: compruebe si los campos del mensaje contienen losvalores correctos y si son correctos los identificadores de juego decaracteres especificados por el emisor y el receptor del mensaje. Si lo son,es preciso modificar el diseño de los datos del mensaje, aumentando laslongitudes de los campos para que así haya espacio suficiente parapermitir que las series se expandan al convertirse.

RC2191(2191, X'88F') La estructura de mensaje desencadenante de tipo carácter noes válida.

En una llamada MQPUT o MQPUT1, no es válida la estructura de mensajedesencadenante de tipo carácter MQTMC de los datos del mensaje.

Acción correctora: corrija la definición de la estructura MQTMC. Asegúresede que los campos están correctamente establecidos.

RC2194(2194, X'892') El nombre de objeto no es válido para el tipo de objeto.

Se ha emitido una llamada MQOPEN para abrir la definición de gestor decolas, pero el campo ODON del parámetro OBJDSC no está en blanco.

Acción correctora: asegúrese de que el campo ODON se establece en blancos.

RC2195(2195, X'893') Se ha producido un error inesperado.

La llamada ha sido rechazada porque se ha producido un error inesperado.

Acción correctora: compruebe la lista de parámetros de la aplicación paraasegurarse de que, por ejemplo, se ha pasado el número correcto deparámetros y de que son válidos los punteros de datos y las claves dealmacenamiento. Si el problema no se puede resolver, póngase en contactocon el programador del sistema.

En el registro de FFST encontrará más información sobre el problema.

RC2196(2196, X'894') Cola de transmisión desconocida.

Códigos de retorno

416 Consulta de programación de aplicaciones (ILE RPG)

Page 431: amqwak00

En una llamada MQOPEN o MQPUT1, se debe enviar un mensaje a ungestor de colas remoto. ODON o ODMN del descriptor de objeto especifica elnombre de una definición local de una cola remota (en el último caso seutiliza la creación de alias de gestor de colas), pero el atributo XmitQNamede la definición no está en blanco o no es el nombre de una cola definidalocalmente.

Acción correctora: compruebe los valores especificados para ODON y ODMN. Sison correctos, compruebe las definiciones de cola. Para obtener másinformación sobre las colas de transmisión, consulte la publicaciónMQSeries Application Programming Guide.

RC2197(2197, X'895') Cola de transmisión por omisión desconocida.

Se ha emitido una llamada MQOPEN o MQPUT1 que especificaba unacola remota como destino. Si se ha especificado una definición local de lacola remota o se está resolviendo un alias de gestor de colas, el atributoXmitQName de la definición local está en blanco.

Debido a que no hay ninguna cola definida que tenga el mismo nombreque el gestor de colas destino, el gestor de colas ha intentado utilizar lacola de transmisión por omisión. No obstante, el nombre definido por elatributo DefXmitQName del gestor de colas no es el nombre de una coladefinida localmente.

Acción correctora: corrija las definiciones de cola o el atributo del gestor decolas. Puede obtener más información en el manual MQSeries ApplicationProgramming Guide.

RC2198(2198, X'896') La cola de transmisión por omisión no es local.

Se ha emitido una llamada MQOPEN o MQPUT1 que especificaba unacola remota como destino. Se ha especificado una definición local de lacola remota o se está resolviendo un alias de gestor de colas, pero en losdos casos el atributo XmitQName de la definición local está en blanco.

Debido a que no hay ninguna cola de transmisión definida que tenga elmismo nombre que el gestor de colas destino, el gestor de colas local haintentado utilizar la cola de transmisión por omisión. Sin embargo, aunquehay una cola definida por el atributo DefXmitQName del gestor de colas, esacola no es local.

Acción correctora: realice una de estas acciones:v Especifique una cola de transmisión local como valor del atributo

XmitQName en la definición local de la cola remota.v Defina una cola de transmisión local cuyo nombre sea el del gestor de

colas remoto.v Especifique una cola de transmisión local como valor del atributo

DefXmitQName del gestor de colas.

Puede obtener más información en el manual MQSeries ApplicationProgramming Guide.

RC2199(2199, X'897') Error de utilización de la cola de transmisión por omisión.

Se ha emitido una llamada MQOPEN o MQPUT1 que especificaba unacola remota como destino. Se ha especificado una definición local de la

Códigos de retorno

Apéndice A. Códigos de retorno 417

Page 432: amqwak00

cola remota o se está resolviendo un alias de gestor de colas, pero en losdos casos el atributo XmitQName de la definición local está en blanco.

Debido a que no hay definida ninguna cola de transmisión cuyo nombresea el del gestor de colas destino, el gestor de colas local ha intentadoutilizar la cola de transmisión por omisión. Sin embargo, la cola definidapor el atributo DefXmitQName del gestor de colas no tiene un atributo Usageque sea igual a USTRAN.

Acción correctora: realice una de estas acciones:v Especifique una cola de transmisión local como valor del atributo

XmitQName en la definición local de la cola remota.v Defina una cola de transmisión local que tenga el nombre del gestor de

colas remoto.v Especifique otra cola de transmisión local como valor del atributo

DefXmitQName del gestor de colas.v Cambie el atributo Usage de la cola DefXmitQName por USTRAN.

Puede obtener más información en el manual MQSeries ApplicationProgramming Guide.

RC2206(2206, X'89E') Error de identificador de mensaje.

En una llamada MQGET, el campo MDMID no es cero. No está soportada larecuperación selectiva por identificador de mensaje.

Acción correctora: asegúrese de que el valor del campo MDMID es cero.

RC2207(2207, X'89F') Error de identificador de correlación.

En una llamada MQGET, el campo MDCID no es cero. No está soportada larecuperación selectiva por identificador de correlación.

Acción correctora: asegúrese de que el valor del campo MDCID es cero.

RC2208(2208, X'8A0') Error de sistema de archivos.

Se ha recibido un retorno inesperado desde el sistema de archivos, alintentar una operación en una cola.

Este código de razón solo se produce en VSE/ESA.

Acción correctora: vea si en la definición del sistema de archivos seencuentra la cola a la que se estaba accediendo. Si se trata de un archivoVSAM, compruebe si el intervalo de control es suficiente para la longitudmáxima de mensaje permitida en la cola.

RC2209(2209, X'8A1') No hay ningún mensaje bloqueado.

Se ha emitido una llamada MQGET con la opción GMUNLK, pero en esemomento no había ningún mensaje bloqueado.

Acción correctora: compruebe que una llamada MQGET anterior con laopción GMLK bloqueó un mensaje para la misma asa y que no ha habidoninguna llamada intermedia que haya desbloqueado el mensaje.

RC2218(2218, X'8AA') La longitud del mensaje es mayor que la longitud máximadel canal.

Códigos de retorno

418 Consulta de programación de aplicaciones (ILE RPG)

Page 433: amqwak00

Se ha puesto un mensaje en una cola remota, pero es más largo que lalongitud máxima permitida por el canal. Este código de razón se devuelveen el campo MDFB del descriptor de un mensaje de informe.

Acción correctora: compruebe las definiciones de canal. Aumente lalongitud máxima de mensaje que pueda aceptar el canal o desglose elmensaje en varios mensajes más cortos.

RC2219(2219, X'8AB') La llamada MQI ha reentrado antes de que se completara lallamada anterior.

La aplicación ha emitido una llamada MQI mientras ya se estabaprocesando otra llamada MQI para esa conexión. Solo se puede procesaruna llamada por conexión de aplicación al mismo tiempo.

Las llamadas concurrentes solo pueden aparecer en ciertas situacionesespecializadas, como en una rutina de salida invocada como parte delproceso de una llamada MQI. Por ejemplo, se puede invocar la rutina desalida de conversión de datos como parte del proceso de la llamadaMQGET.

Acción correctora: asegúrese de que no sea posible emitir una llamadaMQI mientras haya otra que esté activa. No emita llamadas MQI desdedentro de una rutina de salida de conversión de datos.

RC2220(2220, X'8AC') La estructura de cabecera de mensaje de referencia no esválida.

En una llamada MQPUT o MQPUT1, no es válida la estructura de lacabecera de mensaje de referencia MQRMH de los datos del mensaje.

Acción correctora: corrija la definición de la estructura MQRMH. Asegúresede que los campos están correctamente establecidos.

RC2222(2222, X'8AE') Se ha creado el gestor de colas.

Se detecta esta condición cuando se activa un gestor de colas.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2223(2223, X'8AE') Gestor de colas no disponible.

Esta condición se detecta cuando se solicita a un gestor de colas que sedetenga o que adquiera el estado de reposo.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2224(2224, X'8B0') Se ha alcanzado o se ha excedido el límite de profundidadmáxima de cola.

Debido a una llamada MQPUT o MQPUT1, la profundidad de cola haaumentado hasta igualar o superar el límite especificado en el atributoQDepthHighLimit.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

Códigos de retorno

Apéndice A. Códigos de retorno 419

Page 434: amqwak00

RC2225(2225, X'8B1') Se ha alcanzado o se ha excedido el límite de profundidadmínimo de cola.

Debido a una llamada MQGET, la profundidad de cola ha disminuidohasta igualar o situarse por debajo del límite especificado en el atributoQDepthLowLimit.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2226(2226, X'8B2') El intervalo de servicio de cola es alto.

No se han detectado llamadas de obtener ni de poner satisfactorias duranteun intervalo que supera el límite especificado en el atributoQServiceInterval.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2227(2227, X'8B3') El intervalo de servicio de cola es correcto.

Se ha detectado una obtención satisfactoria durante un intervalo que esinferior o igual al límite especificado en el atributo QServiceInterval.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2232(2232, X'8B8') La unidad de trabajo no se ha iniciado.

Se ha emitido una llamada MQGET, MQPUT o MQPUT1 para obtener oponer un mensaje dentro de una unidad de trabajo, pero no se ha iniciadoninguna transacción TM/MP. Si no se ha especificado GMNSYP enMQGET, o si no se ha especificado PMNSYP en MQPUT o MQPUT1 (elvalor por omisión), la llamada requiere una unidad de trabajo.

Acción correctora: asegúrese de que está disponible una transacciónTM/MP o emita la llamada MQGET con la opción GMNSYP, o bien lallamada MQPUT o MQPUT1 con la opción PMNSYP, para que así se inicieautomáticamente una transacción.

RC2233(2233, X'8B9') Definición automática de canal satisfactoria.

Se detecta esta condición cuando es satisfactoria la definición automáticade un canal. El MCA (agente de canal de mensajes) es el que define elcanal.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2234(2234, X'8BA') Ha fallado la definición automática de canal.

Esta condición se detecta cuando falla la definición automática de un canal;puede suceder por haberse producido un error durante el proceso dedefinición o porque la rutina de salida de definición automática de canalhaya inhibido la definición. En el mensaje de suceso se devuelveinformación adicional que indica el motivo de la anomalía.

Códigos de retorno

420 Consulta de programación de aplicaciones (ILE RPG)

Page 435: amqwak00

Acción correctora: examine la información adicional devuelta en el mensajede suceso para averiguar la razón de la anomalía.

RC2235(2235, X'8BB') La estructura de cabecera de PCF no es válida.

En una llamada MQPUT o MQPUT1, no es válida la estructura de cabecerade PCF (que se llama MQCFH) de los datos del mensaje.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura MQCFH. Asegúresede que los campos están correctamente establecidos.

RC2236(2236, X'8BC') No es válida la estructura de parámetro lista de tipo enteroPCF.

En una llamada MQPUT o MQPUT1, no es válida la estructura deparámetro lista de tipo entero PCF (que se llama MQCFIL) de los datos delmensaje.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura MQCFIL. Asegúresede que los campos están correctamente establecidos.

RC2237(2237, X'8BD') No es válida la estructura de parámetro de tipo entero PCF.

En una llamada MQPUT o MQPUT1, no es válida la estructura deparámetro de tipo entero PCF (que se llama MQCFIN) de los datos delmensaje.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura MQCFIN. Asegúresede que los campos están correctamente establecidos.

RC2238(2238, X'8BE') No es válida la estructura de parámetro lista de tipo seriePCF.

En una llamada MQPUT o MQPUT1, no es válida la estructura deparámetro lista de tipo serie de PCF (que se llama MQCFSL) de los datosdel mensaje.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Acción correctora: corrija la definición de la estructura MQCFSL. Asegúresede que los campos están correctamente establecidos.

RC2239(2239, X'8BF') No es válida la estructura de parámetro de tipo serie de PCF.

En una llamada MQPUT o MQPUT1, no es válida la estructura deparámetro de tipo serie de PCF (que se llama MQCFST) de los datos delmensaje.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Códigos de retorno

Apéndice A. Códigos de retorno 421

Page 436: amqwak00

Acción correctora: corrija la definición de la estructura MQCFST. Asegúresede que los campos están correctamente establecidos.

RC2241(2241, X'8C1') El grupo de mensajes no está completo.

Se ha intentado una operación en una cola utilizando un asa de cola quetenía un grupo de mensajes incompleto. Las situaciones que pueden darlugar a este código de razón son las siguientes:v En la llamada MQPUT, cuando la aplicación intenta poner un mensaje

que no está en el grupo y especifica PMLOGO. La llamada falla en estecaso.

v En la llamada MQPUT, cuando la aplicación intenta poner un mensajeque no es el siguiente del grupo, no especifica PMLOGO, pero lallamada MQPUT anterior del asa de cola sí especificaba PMLOGO. Eneste caso, la llamada es satisfactoria y devuelve el código de terminaciónCCWARN.

v En la llamada MQGET, cuando la aplicación intenta obtener un mensajeque no es el siguiente del grupo, no especifica GMLOGO, pero lallamada MQGET anterior del asa de cola sí especificaba GMLOGO. Eneste caso, la llamada es satisfactoria y devuelve el código de terminaciónCCWARN.

v En la llamada MQCLOSE, cuando la aplicación intenta cerrar la colacuyo grupo de mensajes es incompleto. La llamada es satisfactoria ydevuelve el código de terminación CCWARN.

Si, además del grupo de mensajes incompleto, hay un mensaje lógicoincompleto, se devuelve el código de razón RC2242 en lugar del código derazón RC2241.

Acción correctora: si este código de razón es el que se esperaba, no esnecesaria ninguna acción correctora. En caso contrario, asegúrese de que lallamada MQPUT del último mensaje del grupo especifica MFLMIG.

RC2242(2242, X'8C2') El mensaje lógico no está completo.

Se ha intentado una operación en una cola utilizando un asa de cola quetenía un mensaje lógico incompleto. Las situaciones que pueden dar lugara este código de razón son las siguientes:v En la llamada MQPUT, cuando la aplicación intenta poner un mensaje

que no es un segmento y especifica PMLOGO. La llamada falla en estecaso.

v En la llamada MQPUT, cuando la aplicación intenta poner un mensajeque no es el siguiente segmento, no especifica PMLOGO, pero la llamadaMQPUT anterior del asa de cola sí especificaba PMLOGO. En este caso,la llamada es satisfactoria y devuelve el código de terminaciónCCWARN.

v En la llamada MQGET, cuando la aplicación intenta obtener un mensajeque no es el siguiente segmento, no especifica GMLOGO, pero lallamada MQGET anterior del asa de cola sí especificaba GMLOGO. Eneste caso, la llamada es satisfactoria y devuelve el código de terminaciónCCWARN.

v En la llamada MQCLOSE, cuando la aplicación intenta cerrar la colacuyo mensaje lógico está incompleto. La llamada es satisfactoria ydevuelve el código de terminación CCWARN.

Códigos de retorno

422 Consulta de programación de aplicaciones (ILE RPG)

Page 437: amqwak00

Acción correctora: si este código de razón es el que se esperaba, no esnecesaria ninguna acción correctora. En caso contrario, asegúrese de que lallamada MQPUT del último segmento especifica MFLSEG.

RC2243(2243, X'8C3') Los segmentos del mensaje tienen distintos CCSID.

Se ha emitido una llamada MQGET que especificaba la opción GMCMPM,pero el mensaje que se ha de recuperar consta de dos o más segmentos quetienen distintos valores en el campo MDCSI de MQMD. Esto puede sucedercuando los segmentos toman distintas vías a través de la red y algunas deellas tienen habilitada la conversión de emisor de MCA. La llamada essatisfactoria y devuelve el código de terminación CCWARN, pero solo sedevuelven los primeros segmentos cuyos identificadores de juego decaracteres sean idénticos.

Acción correctora: elimine la opción GMCMPM de la llamada MQGET yrecupere los demás segmentos del mensaje uno por uno.

RC2244(2244, X'8C4') Los segmentos del mensaje tienen distintas codificaciones.

Se ha emitido una llamada MQGET que especificaba la opción GMCMPM,pero el mensaje que se ha de recuperar consta de dos o más segmentos quetienen distintos valores en el campo MDENC de MQMD. Esto puede sucedercuando los segmentos toman distintas vías a través de la red y algunas deellas tienen habilitada la conversión de emisor de MCA. La llamada essatisfactoria y devuelve el código de terminación CCWARN, pero solo sedevuelven los primeros segmentos cuyas codificaciones sean idénticas.

Acción correctora: elimine la opción GMCMPM de la llamada MQGET yrecupere los demás segmentos del mensaje uno por uno.

RC2245(2245, X'8C5') Especificación incoherente de unidad de trabajo.

Se ha producido una de las siguientes condiciones:v Se ha emitido una llamada MQPUT para poner un mensaje en un grupo

o en un segmento de un mensaje lógico, pero el valor que se haespecificado o tomado por omisión en la opción PMSYP no es coherentecon el grupo actual ni con la información de segmento retenida por elgestor de colas del asa de cola.La llamada falla si la llamada actual especifica PMLOGO. Si la llamadaactual no especifica PMLOGO, pero sí lo hizo la llamada MQPUTanterior del asa de cola, la llamada es satisfactoria y devuelve el códigode terminación CCWARN.

v Se ha emitido una llamada MQGET para eliminar de la cola un mensajedel grupo o un segmento de un mensaje lógico, pero el valorespecificado o tomado por omisión en la opción GMSYP no es coherentecon el grupo actual ni con la información de segmento retenido por elgestor de colas del asa de cola.La llamada falla si la llamada actual especifica GMLOGO. Si la llamadaactual no especifica GMLOGO, pero sí lo hizo la llamada MQGETanterior del asa de cola, la llamada es satisfactoria y devuelve el códigode terminación CCWARN.

Acción correctora: modifique la aplicación para asegurarse de que se utilizala misma especificación de unidad de trabajo para todos los mensajes delgrupo o para todos los segmentos del mensaje lógico.

Códigos de retorno

Apéndice A. Códigos de retorno 423

Page 438: amqwak00

RC2246(2246, X'8C6') El mensaje bajo cursor no es válido para recuperación.

Se ha emitido una llamada MQGET que especificaba la opción GMCMPMcon GMMUC o GMBRWC, pero el mensaje que está bajo el cursor tieneuna estructura MQMD con un campo MDOFF que es mayor que cero.Debido a que se ha especificado GMCMPM, el mensaje no es válido pararecuperación.

Acción correctora: vuelva a situar el cursor de examinar para que secoloque en un mensaje cuyo campo MDOFF de MQMD sea cero. Otrasolución sería eliminar la opción GMCMPM.

RC2247(2247, X'8C7') Las opciones de emparejar no son válidas.

Se ha emitido una llamada MQGET, pero no es válido el valor del campoGMMO del parámetro GMO. Se ha especificado ya sea una opción no definida obien una opción definida que no es válida en las circunstancias actuales.En este último caso, se cumplen todas estas condiciones:v Se ha especificado GMLOGO.v Hay un grupo de mensajes o un mensaje lógico actual para el asa de

cola.v No se ha especificado ninguna de estas opciones:

GMBRWCGMMUC

v Se ha especificado una o varias de las opciones de tipo MO*.v Los valores de los campos del parámetro MSGDSC que se corresponden

con las opciones de tipo MO* especificadas son distintos de los valoresque tienen esos mismos campos en la estructura MQMD del siguientemensaje que se ha de devolver.

Acción correctora: asegúrese de que solo se especifican opciones válidaspara el campo.

RC2248(2248, X'8C8') La extensión de descriptor de mensaje no es válida.

La estructura MQMDE que hay al principio de los datos del mensaje deaplicación no es válida por una de estas razones:v El nemotécnico de atención MESID no es MESIDV.v El campo MEVER es menor que MEVER2.v El campo MELEN es menor que MELEN2 o (solo para MEVER igual a

MEVER2) mayor que MELEN2.

Acción correctora: corrija la definición de la extensión del descriptor demensaje. Asegúrese de que se han establecido correctamente los campos deentrada obligatorios.

RC2249(2249, X'8C9') Los distintivos de mensaje no son válidos.

Se ha emitido una llamada MQPUT o MQPUT1, pero el campo MDMFL deldescriptor de mensaje MQMD contiene uno o varios distintivos de mensajeno reconocidos por el gestor de colas local. Los distintivos de mensaje quepueden provocar que se devuelva este código de razón dependen deldestino del mensaje; en el “Apéndice E. Opciones de informe” en lapágina 481 encontrará más detalles.

Códigos de retorno

424 Consulta de programación de aplicaciones (ILE RPG)

Page 439: amqwak00

Este código de razón también aparece en el campo MDFB del MQMD de unmensaje de informe o en el campo DLREA de la estructura MQDLH de unmensaje de la cola de mensajes no entregados; en los dos casos, indica queel gestor de colas destino no da soporte a uno o a varios de los distintivosde mensaje especificados por el emisor del mensaje.

Acción correctora: realice lo siguiente:1. Asegúrese de que el campo MDMFL del descriptor de mensaje se

inicializa con un valor al declarar el descriptor de mensaje o que se leasigna un valor antes de la llamada MQPUT o MQPUT1.Especifique MFNONE si no se necesita ningún distintivo de mensaje.

2. Asegúrese de que los distintivos de mensaje especificados esténdocumentados en este manual; en el campo MDMFL descrito en el“Capítulo 10. MQMD - Descriptor de mensaje” en la página 85 hallarálos distintivos válidos para los mensajes. Elimine los distintivos demensaje que no estén documentados en este manual.

3. Si se van a establecer múltiples distintivos de mensaje a base decombinar los distintivos de mensaje individuales, asegúrese de que nose añade dos veces un mismo distintivo de mensaje.

RC2250(2250, X'8CA') El número de secuencia de mensaje no es válido.

Se ha emitido una llamada MQGET, MQPUT o MQPUT1, pero el valor delcampo MDSEQ de la estructura MQMD o MQMDE es menor que uno omayor que 999.999.999.

Este error también se puede producir en la llamada MQPUT si, aconsecuencia de la llamada, el campo MDSEQ se hiciera mayor que999.999.999.

Acción correctora: especifique un valor que esté comprendido entre 1 y999.999.999. No intente crear un grupo de mensajes que contenga más de999.999.999 mensajes.

RC2251(2251, X'8CB') El desplazamiento de segmento del mensaje no es válido.

Se ha emitido una llamada MQPUT o MQPUT1, pero el valor del campoMDOFF de la estructura MQMD o MQMDE es menor que cero o mayor que999.999.999.

Este error también se puede producir en la llamada MQPUT si, aconsecuencia de la llamada, el campo MDOFF se hiciera mayor que999.999.999.

Acción correctora: especifique un valor que esté comprendido entre 0 y999.999.999. No intente crear un segmento de mensaje cuyo desplazamientosea mayor que 999.999.999.

RC2252(2252, X'8CC') La longitud original no es válida.

Se ha emitido una llamada MQPUT o MQPUT1 para poner un mensaje deinforme que notifica sobre un segmento, pero el campo MDOLN de laestructura MQMD o MQMDE es:v Menor que uno (para un segmento que no sea el último) o bienv Menor que cero (para un segmento que sea el último)

Códigos de retorno

Apéndice A. Códigos de retorno 425

Page 440: amqwak00

Acción correctora: especifique un valor mayor que cero. Solo es válidoespecificar cero para el último segmento.

RC2253(2253, X'8CD') La longitud de los datos del segmento de mensaje es cero.

Se ha emitido una llamada MQPUT o MQPUT1 para transferir el primersegmento o un segmento intermedio de un mensaje lógico, pero la longitudde los datos de mensaje de aplicación que hay en el segmento (excluidaslas cabeceras MQ que pueda haber) es cero. La longitud debe ser al menosuno para el primer segmento o para un segmento intermedio.

Acción correctora: compruebe la lógica de la aplicación para asegurar quelos segmentos se transfieren con una longitud igual o mayor que uno. Elúltimo segmento de un mensaje lógico es el único que puede tener lalongitud igual a cero.

RC2255(2255, X'8CF') La unidad de trabajo no está disponible para que la utilice elgestor de colas.

Se ha emitido una llamada MQGET, MQPUT o MQPUT1 para obtener otransferir un mensaje fuera de la unidad de trabajo, pero las opcionesespecificadas en la llamada requerían que el gestor de colas procesase lallamada dentro de una unidad de trabajo. Debido a que ya existe unaunidad de trabajo definida por el usuario, el gestor de colas no ha podidocrear una unidad de trabajo temporal mientras durase la llamada.

Las circunstancias que dan lugar a esta razón son las siguientes:v En una llamada MQGET, cuando se especifica la opción GMCMPM en

MQGMO y el mensaje lógico que se ha de recuperar es permanente yconsta de dos o más segmentos.

v En una llamada MQPUT o MQPUT1, cuando se especifica el distintivoMFSEGA en MQMD y el mensaje requiere segmentación.

Acción correctora: emita la llamada MQGET, MQPUT o MQPUT1 dentrode la unidad de trabajo definida por el usuario. Alternativamente, para lallamada MQPUT o MQPUT1, reduzca el tamaño del mensaje de tal formaque el gestor de colas no tenga que segmentarlo.

RC2256(2256, X'8D0') Se ha suministrado una versión equivocada de MQGMO.

Se ha emitido una llamada MQGET que especificaba opciones querequerían una estructura MQGMO cuyo número de versión no fuesemenor que GMVER2, pero la estructura MQGMO suministrada nosatisfacía esta condición.

Acción correctora: modifique la aplicación para que pase una estructuraMQGMO de la versión 2. Compruebe la lógica de la aplicación paraasegurar que el campo GMVER de la estructura MQGMO se ha establecidoen GMVER2. Otra solución sería eliminar la opción que requiere laestructura MQGMO de la versión 2.

RC2257(2257, X'8D1') Se ha suministrado una versión equivocada de MQMD.

Se ha emitido una llamada MQGET, MQPUT o MQPUT1 que especificabaopciones que requerían una estructura MQMD cuyo número de versión nofuese menor que MDVER2, pero la estructura MQMD suministrada nosatisfacía esta condición.

Códigos de retorno

426 Consulta de programación de aplicaciones (ILE RPG)

Page 441: amqwak00

Acción correctora: modifique la aplicación para que pase una estructuraMQMD de la versión 2. Compruebe la lógica de la aplicación paraasegurar que el campo MDVER de la estructura MQMD se ha establecido enMDVER2. Otra solución sería eliminar la opción que requiere la estructuraMQMD de la versión 2.

RC2258(2258, X'8D2') El identificador de grupo no es válido.

Se ha emitido una llamada MQPUT o MQPUT1 para poner un mensaje delista de distribución que es además un mensaje de un grupo, un segmentode mensaje o cuya segmentación está permitida, pero se ha especificadouna combinación no válida de opciones y valores. Se cumplen todas estascondiciones:v No se ha especificado PMLOGO en el campo PMOPT de MQPMO.v La estructura MQPMO ha proporcionado un número demasiado

pequeño de registros MQPMR o bien el campo PRGID no está presente enlos registros MQPMR.

v Se ha especificado uno o más de estos distintivos en el campo MDMFL deMQMD o MQMDE:

MFSEGAMF*MIGMF*SEG

v El campo MDGID de MQMD o MQMDE no es GINONE.

Esta combinación de opciones y valores haría que se utilizase un mismoidentificador de grupo para todos los destinos de la lista de distribución; elgestor de colas no permite que esto ocurra.

Acción correctora: especifique GINONE para el campo MDGID de MQMD oMQMDE. Otra solución consiste en que, si la llamada es MQPUT,especifique PMLOGO en el campo PMOPT de MQPMO.

RC2259(2259, X'8D3') La especificación de examinar es incoherente.

Se ha emitido una llamada MQGET que especificaba la opción GMBRWN,pero la especificación de la opción GMLOGO en la llamada es distinta dela especificación de esa misma opción en la llamada anterior del asa decola. Las dos llamadas deben especificar GMLOGO o ninguna de ellasdebe especificar GMLOGO.

Acción correctora: añada o elimine la opción GMLOGO según convenga.Otra solución es que, para conmutar entre el orden lógico y el orden físico,especifique la opción GMBRWF para reiniciar la exploración desde elprincipio de la cola y que omita o especifique GMLOGO según desee.

RC2260(2260, X'8D4') La estructura de cabecera de cola de transmisión no esválida.

En una llamada MQPUT o MQPUT1, no es válida la estructura de cabecerade cola de transmisión MQXQH de los datos del mensaje.

Acción correctora: corrija la definición de la estructura MQXQH. Asegúresede que los campos están correctamente establecidos.

RC2261(2261, X'8D5') Error de datos de entorno origen.

Códigos de retorno

Apéndice A. Códigos de retorno 427

Page 442: amqwak00

Se da esta razón cuando una rutina de salida de canal que procesamensajes de referencia detecta un error en los datos de entorno origen deuna cabecera de mensaje de referencia (MQRMH). Se ha producido una delas siguientes condiciones:v RMSEL es menor que cero.v RMSEL es mayor que cero, pero no hay datos de entorno origen.v RMSEL es mayor que cero, pero RMSEO es negativo, cero o menor que la

longitud de la parte fija de MQRMH.v RMSEL es mayor que cero, pero RMSEO más RMSEL es mayor que RMLEN.

La rutina de salida devuelve esta razón en el campo CXFB de la estructuraMQCXP. Si se solicita un informe de excepción, este se copia en el campoCXFB de la estructura MQMD asociada al informe.

Acción correctora: especifique correctamente los datos de entorno origen.

RC2262(2262, X'8D6') Error de datos de nombre origen.

Se da esta razón cuando una rutina de salida de canal que procesamensajes de referencia detecta un error en los datos de nombre origen deuna cabecera de mensaje de referencia (MQRMH). Se ha producido una delas siguientes condiciones:v RMSNL es menor que cero.v RMSNL es mayor que cero, pero no hay datos de nombre origen.v RMSNL es mayor que cero, pero RMSNO es negativo, cero o menor que la

longitud de la parte fija de MQRMH.v RMSNL es mayor que cero, pero RMSNO más RMSNL es mayor que RMLEN.

La rutina de salida devuelve esta razón en el campo CXFB de la estructuraMQCXP. Si se solicita un informe de excepción, este se copia en el campoCXFB de la estructura MQMD asociada al informe.

Acción correctora: especifique correctamente los datos de nombre origen.

RC2263(2263, X'8D7') Error de datos de entorno destino.

Se da esta razón cuando una rutina de salida de canal que procesamensajes de referencia detecta un error en los datos de entorno destino deuna cabecera de mensaje de referencia (MQRMH). Se ha producido una delas siguientes condiciones:v RMDEL es menor que cero.v RMDEL es mayor que cero, pero no hay datos de entorno destino.v RMDEL es mayor que cero, pero RMDEO es negativo, cero o menor que la

longitud de la parte fija de MQRMH.v RMDEL es mayor que cero, pero RMDEO más RMDEL es mayor que RMLEN.

La rutina de salida devuelve esta razón en el campo CXFB de la estructuraMQCXP. Si se solicita un informe de excepción, este se copia en el campoCXFB de la estructura MQMD asociada al informe.

Acción correctora: especifique correctamente datos de entorno destino.

RC2264(2264, X'8D8') Error de datos de nombre destino.

Códigos de retorno

428 Consulta de programación de aplicaciones (ILE RPG)

||

|

||

|

||

|

Page 443: amqwak00

Se da esta razón cuando una rutina de salida de canal que procesamensajes de referencia detecta un error en los datos de nombre destino deuna cabecera de mensaje de referencia (MQRMH). Se ha producido una delas siguientes condiciones:v RMDNL es menor que cero.v RMDNL es mayor que cero, pero no hay datos de nombre destino.v RMDNL es mayor que cero, pero RMDNO es negativo, cero o menor que la

longitud de la parte fija de MQRMH.v RMDNL es mayor que cero, pero RMDNO más RMDNL es mayor que RMLEN.

La rutina de salida devuelve esta razón en el campo CXFB de la estructuraMQCXP. Si se solicita un informe de excepción, este se copia en el campoCXFB de la estructura MQMD asociada al informe.

Acción correctora: especifique correctamente los datos de nombre destino.

RC2265(2265, X'8D9') La estructura de mensaje desencadenante no es válida.

En una llamada MQPUT o MQPUT1, no es válida la estructura de mensajedesencadenante MQTM de los datos del mensaje.

Acción correctora: corrija la definición de la estructura MQTM. Asegúresede que los campos están correctamente establecidos.

RC2266(2266, X'8DA') Ha fallado la rutina de salida de carga de trabajo de clúster.

Se ha emitido una llamada MQOPEN, MQPUT o MQPUT1 para abrir unacola de clúster o para poner un mensaje en ella, pero la rutina de salida decarga de trabajo de clúster definida por el atributo ClusterWorkloadExitdel gestor de colas sufrió una anomalía inesperada o no respondió atiempo. Las llamadas MQOPEN, MQPUT y MQPUT1 ulteriores de esta asade cola se procesan como si el atributo ClusterWorkloadExit estuviese enblanco.v En OS/390, se graba en las anotaciones del sistema un mensaje que

facilita más información; por ejemplo, el mensaje CSQV455E oCSQV456E.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/390, OS/2, OS/400, Sun Solaris, cliente Windows, WindowsNT.

Acción correctora: compruebe la rutina de salida de carga de trabajo delclúster para ver si está bien escrita.

RC2267(2267, X'8DB') No se ha podido cargar la rutina de salida de carga detrabajo de clúster.

Se ha emitido una llamada MQCONN para establecer conexión con ungestor de colas, pero la llamada no ha sido satisfactoria porque no se pudocargar la rutina de salida de carga de trabajo de clúster definida por elatributo ClusterWorkloadExit del gestor de colas.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/2, OS/400, Sun Solaris, cliente Windows, Windows NT.

Códigos de retorno

Apéndice A. Códigos de retorno 429

||

|

|

|||

|

|

Page 444: amqwak00

Acción correctora: asegúrese de que la rutina de salida de carga de trabajodel clúster se ha instalado en la ubicación correcta.

RC2268(2268, X'8DC') Las llamadas de poner están inhibidas para todas las colasdel clúster.

Se ha emitido para una cola de clúster una llamada MQOPEN que tenía envigor las opciones OOOUT y OOBNDO, pero todas las instancias de lacola del clúster están actualmente inhibidas para poner; es decir, todas lasinstancias de cola tienen el atributo InhibitPut establecido en QAPUTI.Debido a que no hay ninguna instancia de cola que esté disponible pararecibir mensajes, la llamada MQOPEN no se puede llevar a cabo.

Nota: Solo se da este código de razón cuando se cumplen estas doscondiciones:v No hay ninguna instancia local de la cola. (Si hay una instancia

local, la llamada MQOPEN es satisfactoria, aunque la instancialocal esté inhibida para poner).

v No hay ninguna rutina de salida de carga de trabajo de clústerpara la cola o, la hay, pero no eligió una instancia de cola. (Si larutina de salida de carga de trabajo de clúster elige una instanciade cola, la llamada MQOPEN es satisfactoria, aunque esainstancia esté inhibida para poner).

Si se especifica la opción OOBNDN en la llamada MQOPEN, la llamadapuede realizarse satisfactoriamente aunque todas las colas del clúster esténinhibidas para poner. Sin embargo, podría fallar una llamada MQPUTulterior si todas las colas todavía estuviesen inhibidas para poner en elmomento de la llamada MQPUT.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/390, OS/2, OS/400, Sun Solaris, cliente Windows, WindowsNT.

Acción correctora: si el diseño del sistema permite que se inhibanpeticiones de poner durante períodos cortos, reintente la operación másadelante. Si el problema sigue produciéndose, averigüe por qué estáninhibidas para poner todas las colas del clúster.

RC2269(2269, X'8DD') Error de recurso de clúster.

Se ha emitido una llamada MQOPEN, MQPUT o MQPUT1 dirigida a unacola del clúster, pero se produjo un error mientras se intentaba utilizar unrecurso necesario para la gestión de clústeres.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/390, OS/2, OS/400, Sun Solaris, cliente Windows, WindowsNT.

Acción correctora: realice lo siguiente:v Compruebe que las colas de tipo SYSTEM.CLUSTER.* no están inhibidas

para poner ni llenas.v Vea si en las colas de sucesos hay alguno que esté relacionado con las

colas de tipo SYSTEM.CLUSTER.*, ya que esos sucesos podrían darleuna orientación sobre la naturaleza de la anomalía.

v Compruebe que el gestor de colas del depósito está disponible.

Códigos de retorno

430 Consulta de programación de aplicaciones (ILE RPG)

|

|

Page 445: amqwak00

RC2270(2270, X'8DE') No hay ninguna cola destino que esté disponible.

Se ha emitido una llamada MQPUT o MQPUT1 para poner un mensaje enuna cola de clúster, pero en el momento de la llamada ya no había ningunainstancia de la cola en el clúster. Por eso no se pudo enviar el mensaje.

Puede darse esta situación cuando se especifica OOBNDN en la llamadaMQOPEN que abre la cola o cuando se utiliza MQPUT1 para poner elmensaje.

Este código de razón se da en los entornos siguientes: AIX, cliente DOS,HP-UX, OS/390, OS/2, OS/400, Sun Solaris, cliente Windows, WindowsNT.

Acción correctora: compruebe la definición de cola y el estado de la colapara averiguar por qué se eliminaron del clúster todas las instancias de lacola. Corrija el problema y vuelva a ejecutar la aplicación.

RC2273(2273, X'8E1') Error al procesar la llamada MQCONN.

La llamada MQCONN no fue satisfactoria por una de estas razones:v El módulo de parámetros del sistema no tiene el mismo nivel de release

que el gestor de colas.v El gestor de colas detectó un error interno.

Este código de razón solo se produce en OS/390.

Acción correctora: vuelva a editar los enlaces del módulo de parámetrosdel sistema (CSQZPARM) para asegurar que su nivel es correcto. Si elproblema sigue produciéndose, póngase en contacto con el centro desoporte de IBM.

RC2277(2277, X'8E5') La definición de canal no es válida.

Se ha emitido una llamada MQCONNX para establecer conexión con ungestor de colas, pero la estructura de definición de canal MQCD a la quehacía referencia el campo CNCCO o CNCCP de MQCNO contiene datos que noson válidos. En las anotaciones de error de MQSeries hallará másinformación sobre la naturaleza del error.

Acción correctora: asegúrese de que se han establecido correctamente loscampos de entrada obligatorios de la estructura MQCD.

RC2278(2278, X'8E6') Los campos de conexión de cliente no son válidos.

Se ha emitido una llamada MQCONNX para establecer conexión con ungestor de colas, pero no se ha especificado correctamente la estructura dedefinición de canal MQCD. Se ha producido una de las siguientescondiciones:v CNCCO no es cero y CNCCP no es ni el puntero nulo ni cero.v CNCCP no es un puntero válido.v CNCCP o CNCCO señala a un almacenamiento no accesible.

Acción correctora: asegúrese de que sea cero al menos uno de los valoresCNCCO y CNCCP. Asegúrese de que el campo utilizado señala a unalmacenamiento accesible.

Códigos de retorno

Apéndice A. Códigos de retorno 431

|

Page 446: amqwak00

RC2279(2279, X'8E7') Canal detenido por el usuario.

Se detecta esta condición cuando un operador detiene el canal. Elcalificador de la razón identifica los motivos de la detención.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2282(2282, X'8EA') Canal iniciado.

Se ha producido una de las siguientes condiciones:v Un operador ha emitido un mandato Start Channel (iniciar canal).v Se ha establecido satisfactoriamente una instancia de un canal.

Se detecta esta condición cuando se completa la negociación de datosiniciales y se efectúa la resincronización donde sea necesario para que latransferencia del mensaje pueda continuar.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2283(2283, X'8EB') Canal detenido.

Se detecta esta condición cuando se ha detenido el canal. El calificador dela razón identifica los motivos de la detención.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2284(2284, X'8EC') Error de conversión de canal.

Se detecta esta condición cuando un canal no puede hacer la conversión dedatos y se produce un error de conversión de datos en la llamada MQGETpara obtener un mensaje de la cola de transmisión. El código de razón dela conversión identifica la causa de la anomalía.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2295(2295, X'8F7') Canal activado.

Se detecta esta condición cuando un canal ha estado en espera de activarsey para él se ha generado el suceso ″canal no activado″, pero ahora ya sepuede activar porque otro canal ha liberado una ranura activa.

Este suceso no se genera si un canal puede activarse sin esperar a que selibere una ranura activa.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2296(2296, X'8F8') El canal no se puede activar.

Se detecta esta condición cuando es preciso que se active un canal, ya seaporque se está iniciando o porque está a punto de realizar otro intento deestablecer conexión con su interlocutor. No obstante, no lo logra porque seha llegado al límite de número de canales activos. El canal espera hasta

Códigos de retorno

432 Consulta de programación de aplicaciones (ILE RPG)

Page 447: amqwak00

que puede ocupar una ranura activa liberada cuando otro canal deja deestar activo. En ese momento se genera un suceso ″canal activado″.

Acción correctora: ninguna. Este código de razón solo se utiliza paraidentificar el correspondiente mensaje de suceso.

RC2299(2299, X'8FB') El tipo de datos del selector no es válido.

El parámetro Selector tiene un tipo de datos equivocado; debe ser de tipoLong.

Acción correctora: declare el parámetro Selector como Long.

RC2300(2300, X'8FC') El tipo de mandato no es válido.

Se ha emitido la llamada mqExecute, pero el valor del elemento de datosMQIASY_TYPE del paquete de administración no esMQCFT_COMMAND.

Acción correctora: asegúrese de que el elemento de datos MQIASY_TYPEdel paquete de administración tiene el valor MQCFT_COMMAND.

RC2301(2301, X'8FD') No es válido especificar varias instancias del elemento dedatos del sistema.

El parámetro Selector especifica un selector del sistema (uno de losvalores de tipo MQIASY_*), pero el valor del parámetro ItemIndex no esMQIND_NONE. En el paquete solo puede haber una instancia de cadaselector del sistema.

Acción correctora: especifique MQIND_NONE para el parámetroItemIndex.

RC2302(2302, X'8FE') El elemento de datos del sistema es de solo lectura y nopuede modificarse.

Se ha emitido una llamada para modificar un elemento de datos delsistema que está en un paquete (un elemento de datos con uno de losselectores de tipo MQIASY_*), pero la llamada ha fallado porque laaplicación no puede modificar ese elemento de datos.

Acción correctora: especifique el selector de un elemento de datos definidopor el usuario o elimine la llamada.

RC2303(2303, X'8FF') No se han podido convertir los datos en un paquete.

Se ha emitido la llamada mqBufferToBag o mqGetBag, pero los datos delalmacenamiento intermedio o del mensaje no se han podido convertir enun paquete. Esto sucede cuando los datos que deben convertirse no son unPCF válido.

Acción correctora: compruebe la lógica de la aplicación que ha creado elalmacenamiento intermedio o el mensaje para asegurarse de que elalmacenamiento intermedio o el mensaje contiene un PCF válido.

Si el mensaje contiene un PCF que no es válido, ese mensaje no se puederecuperar con la llamada mqGetBag:v Si se ha especificado una de las opciones de tipo GMBRW*, el mensaje

se queda en la cola y se puede recuperar con la llamada MQGET.

Códigos de retorno

Apéndice A. Códigos de retorno 433

Page 448: amqwak00

v En los demás casos, el mensaje ya se ha eliminado de la cola y se hadescartado. Si el mensaje se ha recuperado dentro de una unidad detrabajo, se puede restituir la unidad de trabajo y recuperar el mensajecon la llamada MQGET.

RC2304(2304, X'900') El selector no está comprendido en el rango válido de lallamada.

El parámetro Selector tiene un valor que no está comprendido en el rangoválido de la llamada. Si el paquete se ha creado con la opciónMQCBO_CHECK_SELECTORS:v Para la llamada mqAddInteger, el valor debe estar comprendido entre

MQIA_FIRST y MQIA_LAST.v Para la llamada mqAddString, el valor debe estar comprendido entre

MQCA_FIRST y MQCA_LAST.

Si el paquete no se ha creado con la opciónMQCBO_CHECK_SELECTORS:v El valor debe ser mayor o igual que cero.

Acción correctora: especifique un valor válido.

RC2305(2305, X'901') Hay más de una aparición del selector en el paquete.

El parámetro ItemIndex tiene el valor MQIND_NONE, pero el paquetecontiene más de un elemento de datos con el valor de selector especificadopor el parámetro Selector. MQIND_NONE requiere que el paquete solocontenga una aparición del selector especificado.

Este código de razón también se produce en la llamada mqExecute cuandoel paquete de administración contiene dos o más apariciones de un selectorpara un parámetro obligatorio que solo permite una aparición.

Acción correctora: compruebe la lógica de la aplicación que ha creado elpaquete. Si es correcta, especifique para el parámetro ItemIndex un valorque sea igual o mayor que cero y añada la lógica de aplicación necesariapara procesar todas las apariciones del selector en el paquete.

Revise la descripción del mandato de administración que se está emitiendoy asegúrese de que todos los parámetros obligatorios están bien definidosen el paquete.

RC2306(2306, X'902') No se ha encontrado el índice.

El índice especificado no está presente:v Si se trata de un paquete, esto significa que el paquete contiene uno o

más elementos de datos que tienen el valor de selector especificado porel parámetro Selector, pero ninguno de ellos tiene el valor de índiceespecificado por el parámetro ItemIndex. El elemento de datosidentificado por los parámetros Selector e ItemIndex debe existir en elpaquete.

v Si se trata de una lista de nombres, esto significa que el valor delparámetro índice es demasiado grande y no está comprendido en elrango de valores válidos.

Códigos de retorno

434 Consulta de programación de aplicaciones (ILE RPG)

Page 449: amqwak00

Acción correctora: especifique el índice de un elemento de datos que existaen el paquete o en la lista de nombres. Utilice la llamada mqCountItemspara averiguar cuántos elementos de datos del paquete tienen el selectorespecificado o utilice el método nameCount para averiguar la cantidad denombres de la lista.

RC2307(2307, X'903') El parámetro de tipo serie no es válido.

El parámetro String no es válido. El puntero del parámetro no es válido oseñala a un almacenamiento de solo lectura. (No siempre es posibledetectar los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

Acción correctora: corrija el parámetro.

RC2308(2308, X'904') Codificación no soportada.

El campo MDENC del descriptor de mensaje MQMD contiene un valor nosoportado:v Para la llamada mqPutBag, el campo no válido reside en el parámetro

MsgDesc de la llamada.v Para la llamada mqGetBag, el campo no válido reside en:

– El parámetro MsgDesc de la llamada, si se ha especificado la opciónGMCONV.

– El descriptor de mensaje que se va a recuperar, si no se haespecificado GMCONV.

Acción correctora: el valor debe ser ENNAT.

Si no es válido el valor del campo MDENC del mensaje, este no se puederecuperar utilizando la llamada mqGetBag:v Si se ha especificado una de las opciones de tipo GMBRW*, el mensaje

se queda en la cola y se puede recuperar con la llamada MQGET.v En los demás casos, el mensaje ya se ha eliminado de la cola y se ha

descartado. Si el mensaje se ha recuperado dentro de una unidad detrabajo, se puede restituir la unidad de trabajo y recuperar el mensajecon la llamada MQGET.

RC2309(2309, X'905') El selector no está en el paquete.

El parámetro Selector especifica un selector que no existe en el paquete.

Acción correctora: especifique un selector que sí exista en el paquete.

RC2310(2310, X'906') El parámetro OutSelector no es válido.

El parámetro OutSelector no es válido. El puntero del parámetro no esválido o señala a un almacenamiento de solo lectura. (No siempre esposible detectar los punteros de parámetro que no son válidos; si no sedetectan, el resultado es imprevisible).

Acción correctora: corrija el parámetro.

RC2311(2311, X'907') La serie se ha truncado (demasiado larga para elalmacenamiento intermedio de salida).

Códigos de retorno

Apéndice A. Códigos de retorno 435

Page 450: amqwak00

La serie devuelta por la llamada es demasiado larga y no cabe en elalmacenamiento intermedio proporcionado. La serie se ha truncado deforma que quepa en el almacenamiento intermedio.

Acción correctora: si es necesaria toda la serie, proporcione unalmacenamiento intermedio más grande. En la llamada mqInquireString, lallamada establece el parámetro StringLength de manera que indique eltamaño del almacenamiento intermedio necesario para dar cabida a la seriesin que se trunque.

RC2312(2312, X'908') El selector toma un tipo de datos que no es válido para lallamada.

En el paquete hay un elemento de datos que tiene el selector especificado,pero su tipo de datos está en conflicto con el tipo de datos implícito en lallamada que se está utilizando. Por ejemplo, el elemento de datos puedetener datos de tipo entero, pero la llamada que se utiliza puede sermqSetString, que implica datos de tipo carácter.

Este código de razón también se produce con las llamadas mqBagToBuffer,mqExecute y mqPutBag cuando se ha utilizado mqAddString omqSetString para añadir el elemento de datos MQIACF_INQUIRY alpaquete.

Acción correctora: para las llamadas mqSetInteger y mqSetString,especifique MQIND_ALL para el parámetro ItemIndex con el fin desuprimir del paquete todas las apariciones existentes del selectorespecificado, antes de crear la nueva aparición con el tipo de datosnecesario.

Para las llamadas mqInquireBag, mqInquireInteger y mqInquireString,utilice la llamada mqInquireItemInfo para averiguar el tipo de datos delelemento que tiene el selector especificado, y después utilice la llamadaadecuada para averiguar el valor del elemento de datos.

Para las llamadas mqBagToBuffer, mqExecute y mqPutBag, asegúrese deañadir el elemento de datos MQIACF_INQUIRY al paquete utilizando lasllamadas mqAddInteger o mqSetInteger.

RC2313(2313, X'909') El tipo de datos del elemento no concuerda con el de laaparición anterior del selector.

Se ha emitido la llamada mqAddInteger o mqAddString para añadir alpaquete otra aparición del selector especificado, pero el tipo de datos deesta aparición es distinto del tipo de datos de la primera.

Este código de razón también se puede producir en las llamadasmqBufferToBag y mqGetBag, donde indica que el PCF del almacenamientointermedio o del mensaje contiene un selector que aparece más de una vez,pero con tipos de datos incoherentes.

Acción correctora: para las llamadas mqAddInteger y mqAddString, utilicela llamada que corresponda al tipo de datos de la primera aparición de eseselector en el paquete.

Para las llamadas mqBufferToBag y mqGetBag, compruebe la lógica de laaplicación que ha creado el almacenamiento intermedio o ha enviado elmensaje para asegurar que los selectores que aparecen múltiples veces lo

Códigos de retorno

436 Consulta de programación de aplicaciones (ILE RPG)

Page 451: amqwak00

hagan con un solo tipo de datos. Un mensaje que contenga unacombinación de tipos de datos para un selector no se puede recuperarutilizando la llamada mqGetBag:v Si se ha especificado una de las opciones de tipo GMBRW*, el mensaje

se queda en la cola y se puede recuperar con la llamada MQGET.v En los demás casos, el mensaje ya se ha eliminado de la cola y se ha

descartado. Si el mensaje se ha recuperado dentro de una unidad detrabajo, se puede restituir la unidad de trabajo y recuperar el mensajecon la llamada MQGET.

RC2314(2314, X'90A') El índice no es válido.

Un parámetro índice de una llamada o de un método tiene un valor queno es válido. El valor debe ser mayor o igual que cero. Para las llamadasde paquete, también se pueden especificar ciertos valores de tipoMQIND_*:v Para las llamadas mqDeleteItem, mqSetInteger y mqSetString, son

válidos los valores MQIND_ALL y MQIND_NONE.v Para las llamadas mqInquireBag, mqInquireInteger, mqInquireString y

mqInquireItemInfo, es válido el valor MQIND_NONE.

Acción correctora: especifique un valor válido.

RC2315(2315, X'90B') El paquete del sistema es de solo lectura y no puedemodificarse.

Se ha emitido una llamada para añadir un elemento de datos a unpaquete, modificar el valor de un elemento de datos existente en unpaquete o recuperar un mensaje de un paquete, pero la llamada ha falladoporque se trata de un paquete creado por el sistema como resultado deuna llamada mqExecute anterior. La aplicación no puede modificarpaquetes del sistema.

Acción correctora: especifique el asa de un paquete creado por laaplicación o elimine la llamada.

RC2316(2316, X'90C') El parámetro ItemCount no es válido.

Se ha emitido la llamada mqTruncateBag, pero el parámetro ItemCountespecifica un valor que no es válido. El valor es menor que cero o mayorque el número de elementos de datos definidos por usuario que hay en elpaquete.

Esto también sucede en la llamada mqCountItems si el puntero delparámetro no es válido o señala a un almacenamiento de solo lectura. (Nosiempre es posible detectar los punteros de parámetro que no son válidos;si no se detectan, el resultado es imprevisible).

Acción correctora: especifique un valor válido. Utilice la llamadamqCountItems para averiguar el número de datos definidos por usuarioque hay en el paquete.

RC2317(2317, X'90D') Formato no soportado.

El campo MDFMT del descriptor de mensaje MQMD contiene un valor nosoportado:

Códigos de retorno

Apéndice A. Códigos de retorno 437

Page 452: amqwak00

v Para la llamada mqPutBag, el campo no válido reside en el parámetroMsgDesc de la llamada.

v Para la llamada mqGetBag, el campo no válido reside en el descriptor demensaje que se va a recuperar.

Acción correctora: el valor debe ser uno de los siguientes:FMADMNFMEVNTFMPCF

Si el valor del campo MDFMT del mensaje no es ninguno de estos valores, nose puede recuperar el mensaje utilizando la llamada mqGetBag:v Si se ha especificado una de las opciones de tipo GMBRW*, el mensaje

se queda en la cola y se puede recuperar con la llamada MQGET.v En los demás casos, el mensaje ya se ha eliminado de la cola y se ha

descartado. Si el mensaje se ha recuperado dentro de una unidad detrabajo, se puede restituir la unidad de trabajo y recuperar el mensajecon la llamada MQGET.

RC2318(2318, X'90E') El selector del sistema no está soportado.

El parámetro Selector especifica un valor que es un selector del sistema(un valor que es negativo), pero el selector del sistema no es ninguno delos soportados por la llamada.

Acción correctora: especifique un valor de selector que esté soportado.

RC2319(2319, X'90F') El parámetro ItemValue no es válido.

Se ha emitido la llamada mqInquireBag o mqInquireInteger, pero elparámetro ItemValue no es válido. El puntero del parámetro no es válido oseñala a un almacenamiento de solo lectura. (No siempre es posibledetectar los punteros de parámetro que no son válidos; si no se detectan, elresultado es imprevisible).

Acción correctora: corrija el parámetro.

RC2320(2320, X'910') El asa de paquete no es válida.

Se ha emitido una llamada con un parámetro que es un asa de paquete,pero el asa no es válida. Para parámetros de salida, esta razón solo seproduce si el puntero de parámetro no es válido o señala a unalmacenamiento de solo lectura. (No siempre es posible detectar lospunteros de parámetro que no son válidos; si no se detectan, el resultadoes imprevisible).

Acción correctora: corrija el parámetro.

RC2321(2321, X'911') Falta un parámetro.

Un mensaje de administración requiere un parámetro que no está en elpaquete de administración. Este código de razón solo se produce con lospaquetes creados con las opciones MQCBO_ADMIN_BAG oMQCBO_REORDER_AS_REQUIRED.

Códigos de retorno

438 Consulta de programación de aplicaciones (ILE RPG)

Page 453: amqwak00

Acción correctora: revise la descripción del mandato de administración quese está emitiendo y asegúrese de que todos los parámetros obligatoriosestán en el paquete.

RC2322(2322, X'912') El servidor de mandatos no está disponible.

El servidor de mandatos que procesa los mandatos de administración noestá disponible.

Acción correctora: arranque el servidor de mandatos.

RC2323(2323, X'913') El parámetro StringLength no es válido.

El parámetro StringLength no es válido. El puntero del parámetro no esválido o señala a un almacenamiento de solo lectura. (No siempre esposible detectar los punteros de parámetro que no son válidos; si no sedetectan, el resultado es imprevisible).

Acción correctora: corrija el parámetro.

RC2324(2324, X'914') El código de mandato no es un mandato de consultareconocido.

Se ha utilizado anteriormente la llamada mqAddInquiry para añadirselectores de atributos al paquete, pero no se reconoce el código demandato que se ha de utilizar para las llamadas mqBagToBuffer,mqExecute o mqPutBag. Como resultado, no se puede generar el mensajePCF correcto.

Acción correctora: elimine las llamadas mqAddInquiry y en su lugar utilicela llamada mqAddInteger con los selectores MQIACF_*_ATTRS oMQIACH_*_ATTRS adecuados.

RC2325(2325, X'915') El paquete de entrada contiene uno o más paquetes anidados.

Un paquete de entrada de la llamada contiene paquetes anidados. Lospaquetes anidados solo están soportados en los paquetes de salida de lallamada.

Acción correctora: utilice otro paquete como entrada de la llamada.

RC2326(2326, X'916') El tipo de paquete no es válido para el uso previsto.

El parámetro Bag especifica el asa de un paquete cuyo tipo no es válidopara la llamada. El paquete debe ser un paquete de administración, esdecir, debe haberse creado con la opción MQCBO_ADMIN_BAGespecificada en la llamada mqCreateBag.

Acción correctora: especifique la opción MQCBO_ADMIN_BAG al crear elpaquete.

RC2327(2327, X'917') El parámetro ItemType no es válido.

Se ha emitido la llamada mqInquireItemInfo, pero el parámetro ItemTypeno es válido. El puntero del parámetro no es válido o señala a unalmacenamiento de solo lectura. (No siempre es posible detectar lospunteros de parámetro que no son válidos; si no se detectan, el resultadoes imprevisible).

Códigos de retorno

Apéndice A. Códigos de retorno 439

Page 454: amqwak00

Acción correctora: corrija el parámetro.

RC2328(2328, X'918') El paquete del sistema es de solo lectura y no puedesuprimirse.

Se ha emitido una llamada mqDeleteBag para suprimir un paquete, pero lallamada ha fallado porque se trata de un paquete creado por el sistemacomo resultado de una llamada mqExecute anterior. La aplicación nopuede suprimir paquetes del sistema.

Acción correctora: especifique el asa de un paquete creado por laaplicación o elimine la llamada.

RC2329(2329, X'919') El elemento de datos del sistema es de solo lectura y nopuede suprimirse.

Se ha emitido una llamada para suprimir de un paquete un elemento dedatos del sistema (un elemento de datos con uno de los selectores de tipoMQIASY_*), pero la llamada ha fallado debido a que la aplicación nopuede suprimir ese elemento de datos.

Acción correctora: especifique el selector de un elemento de datos definidopor el usuario o elimine la llamada.

RC2330(2330, X'91A') El parámetro identificador de juego de caracteres codificadono es válido.

El parámetro CodedCharSetId no es válido. El puntero del parámetro no esválido o señala a un almacenamiento de solo lectura. (No siempre esposible detectar los punteros de parámetro que no son válidos; si no sedetectan, el resultado es imprevisible).

Acción correctora: corrija el parámetro.

RC2334(2334, X'91E') La estructura MQRFH no es válida.

El mensaje contiene una estructura MQRFH que no es válida.

Acción correctora: modifique la aplicación que generó el mensaje paraasegurar que coloque una estructura MQRFH válida en los datos delmensaje.

RC2335(2335, X'91F') El campo RFNVS no es válido.

No es válido el contenido del campo RFNVS de la estructura MQRFH. Elcampo RFNVS debe ajustarse a estas normas:v La serie debe constar de cero o más pares de nombre/valor separados

entre sí mediante uno o varios blancos; los blancos no son significativos.v Un nombre o un valor, si contiene blancos que son significativos, debe

encerrarse entre comillas dobles.v Si el nombre o el valor contiene él mismo uno o varios caracteres que

sean comillas dobles, ese nombre o valor debe estar entre comillasdobles y cada carácter de comillas dobles intercalado debe estarrepetido.

v Un nombre o un valor puede contener cualquier carácter, salvo el nulo,que hace de delimitador. No se tienen en cuenta el nulo ni los caracteresque le siguen hasta completar la longitud definida de RFNVS.

Códigos de retorno

440 Consulta de programación de aplicaciones (ILE RPG)

Page 455: amqwak00

A continuación figura un ejemplo válido de RFNVS:Famous_Words "El programa visualizó ""Hola a todos"""

Acción correctora: modifique la aplicación que generó el mensaje paraasegurar que coloque en el campo RFNVS datos que se ajusten a las normasantes indicadas. Compruebe si el campo RFLEN se ha establecido en el valorcorrecto.

RC2336(2336, X'920') Mandato no válido.

El mensaje contiene una estructura MQRFH, pero no es válido el nombrede mandato que está en el campo RFNVS.

Acción correctora: modifique la aplicación que generó el mensaje paraasegurar que coloque un nombre de mandato válido en el campo RFNVS.

RC2337(2337, X'921') El parámetro no es válido.

El mensaje contiene una estructura MQRFH, pero el nombre de parámetroque hay en el campo RFNVS no es válido para el mandato especificado.

Acción correctora: modifique la aplicación que generó el mensaje paraasegurar que solo coloque en el campo RFNVS parámetros que sean válidospara el mandato especificado.

RC2338(2338, X'922') Parámetro duplicado.

El mensaje contiene una estructura MQRFH, pero hay un parámetro queaparece más de una vez en el campo RFNVS y el mandato especificado solopermite que aparezca una vez.

Acción correctora: modifique la aplicación que generó el mensaje paraasegurar que coloque el parámetro una sola vez en el campo RFNVS.

RC2339(2339, X'923') Falta un parámetro.

El mensaje contiene una estructura MQRFH, pero al mandato especificadoen el campo RFNVS le falta un parámetro obligatorio.

Acción correctora: modifique la aplicación que generó el mensaje paraasegurar que coloque en el campo RFNVS todos los parámetros necesariospara el mandato especificado.

Códigos de retorno

Apéndice A. Códigos de retorno 441

Page 456: amqwak00

Códigos de retorno

442 Consulta de programación de aplicaciones (ILE RPG)

Page 457: amqwak00

Apéndice B. Constantes de MQSeries

NotaLos nombres de las constantes de MQI se listan en este capítulo en la formaen que aparecen en el archivo RPG COPY. El archivo de copia se llamaCMQR.

En este capítulo se especifican los valores de todas las constantes con nombreutilizadas en la MQI, exceptuando las utilizadas por C++. Puede encontrar loscódigos de retorno de C++ en el manual MQSeries Using C++.

Las constantes se han agrupado según el parámetro o el campo con el que estánrelacionadas. Todos los nombres de las constantes de un grupo empiezan por unprefijo común que tiene la forma “XX” y que indica el parámetro o el campo con elque están relacionados los valores. Las constantes están ordenadas alfabéticamentepor este prefijo.

Notas:

1. Las constantes que tienen valores numéricos se indican en formato decimal yhexadecimal.

2. Los valores hexadecimales se representan mediante la notación X'hhhh', dondecada “h” indica un solo dígito hexadecimal.

3. Los valores de tipo carácter aparecen delimitados por apóstrofos que no formanparte del valor.

4. Los blancos de los valores de tipo carácter se representan mediante una ovarias apariciones del símbolo “b”.

5. Si el valor se muestra como “(variable)”, ello indica que el valor de laconstante depende del entorno en el que se esté ejecutando la aplicación.

Lista de constantesEn la siguiente sección se muestra una lista de todas las constantes con nombremencionadas en este manual y de sus valores.

LN* (Longitudes de campos de tipo serie de caracteres y detipo byte)

Vea el parámetro CHRATR descrito en el “Capítulo 31. MQINQ - Consultar losatributos de objeto” en la página 251 y en el “Capítulo 35. MQSET - Estableceratributos de objeto” en la página 295.

LNABNC 4 X'00000004'

LNACCT 32 X'00000020'

LNAIDD 32 X'00000020'

LNAORD 4 X'00000004'

LNATID 4 X'00000004'

LNAUTH 8 X'00000008'

LNCID 24 X'00000018'

LNCLUN 48 X'00000030'

LNCNCL 4 X'00000004'

LNCRTD 12 X'0000000C'

© Copyright IBM Corp. 1994, 2000 443

||

|||

Page 458: amqwak00

LNCRTT 8 X'00000008'

LNDATE 12 X'0000000C'

LNEXN 20 X'00000014'

LNFAC 8 X'00000008'

LNFACL 4 X'00000004'

LNFMT 8 X'00000008'

LNFUNC 4 X'00000004'

LNGID 24 X'00000018'

LNLTOV 8 X'00000008'

LNMFMN 8 X'00000008'

LNMHD 4000 X'00000FA0'

LNMID 24 X'00000018'

LNMTOK 16 X'00000010'

LNNLD 64 X'00000040'

LNNLN 48 X'00000030'

LNOBJN 48 X'00000030'

LNOIID 24 X'00000018'

LNPAN 28 X'0000001C'

LNPDAT 8 X'00000008'

LNPROA 256 X'00000100'

LNPROD 64 X'00000040'

LNPROE 128 X'00000080'

LNPRON 48 X'00000030'

LNPROU 128 X'00000080'

LNPTIM 8 X'00000008'

LNQD 64 X'00000040'

LNQMD 64 X'00000040'

LNQMID 48 X'00000030'

LNQMN 48 X'00000030'

LNQN 48 X'00000030'

LNRSID 4 X'00000004'

LNSTCO 4 X'00000004'

LNSTGC 8 X'00000008'

LNSVNM 32 X'00000020'

LNSVST 8 X'00000008'

LNTIID 16 X'00000010'

LNTIME 8 X'00000008'

LNTRGD 64 X'00000040'

LNTRID 4 X'00000004'

LNUID 12 X'0000000C'

AC* (Símbolo de contabilidad)Vea el campo MDACC descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

ACNONE X'00...00' (32 nulos)

ATT* (Tipo de símbolo de contabilidad)Vea el campo MDACC descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

ATTUNK X'00'

ATTCIC X'01'

ATTOS2 X'04'

ATTDOS X'05'

ATTUNX X'06'

Constantes de MQSeries

444 Consulta de programación de aplicaciones (ILE RPG)

|||

|||

|||

|||

||||||

|||

|

||

|||||||||||

Page 459: amqwak00

ATT400 X'08'

ATTWIN X'09'

ATTWNT X'0B'

ATTUSR X'19'

AT* (Tipo de aplicación)Vea el campo MDPAT descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85, y el atributo ApplType descrito en el “Capítulo 42. Atributos de las

definiciones de proceso” en la página 333.

ATUNK -1 X'FFFFFFFF'

ATNCON 0 X'00000000'

ATCICS 1 X'00000001'

ATMVS 2 X'00000002'

AT390 2 X'00000002'

ATIMS 3 X'00000003'

ATOS2 4 X'00000004'

ATDOS 5 X'00000005'

ATAIX 6 X'00000006'

ATUNIX 6 X'00000006'

ATQM 7 X'00000007'

AT400 8 X'00000008'

ATDEF 8 X'00000008'

ATWIN 9 X'00000009'

ATVSE 10 X'0000000A'

ATWINT 11 X'0000000B'

ATVMS 12 X'0000000C'

ATGUAR 13 X'0000000D'

ATNSK 13 X'0000000D'

ATVOS 14 X'0000000E'

ATIMSB 19 X'00000013'

ATXCF 20 X'00000014'

ATCICB 21 X'00000015'

ATNOTE 22 X'00000016'

ATBRKR 26 X'0000001A'

ATJAVA 28 X'0000001C'

ATUFST 65536 X'00010000'

ATULST 999999999 X'3B9AC9FF'

BND* (Enlace)Vea el atributo DefBind descrito en el “Capítulo 37. Atributos de todas las colas” enla página 305.

BNDOPN 0 X'00000000'

BNDNOT 1 X'00000001'

BO* (Opciones de empezar)Vea el campo BOOPT descrito en el “Capítulo 3. MQBO - Opciones de empezar” enla página 15.

BONONE 0 X'00000000'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 445

|||||||||

|

|||

|||

||||||||

|

Page 460: amqwak00

BO* (Identificador de estructura de opciones de empezar)Vea el campo BOSID descrito en el “Capítulo 3. MQBO - Opciones de empezar” enla página 15.

BOSIDV 'BObb'

BO* (Versión de opciones de empezar)Vea el campo BOVER descrito en el “Capítulo 3. MQBO - Opciones de empezar” enla página 15.

BOVER1 1 X'00000001'

BOVERC 1 X'00000001'

CA* (Selector de atributo de tipo carácter)Vea el parámetro SELS descrito en el “Capítulo 31. MQINQ - Consultar los atributosde objeto” en la página 251 y en el “Capítulo 35. MQSET - Establecer atributos deobjeto” en la página 295.

CAFRST 2001 X'000007D1'

CAAPPI 2001 X'000007D1'

CABASQ 2002 X'000007D2'

CACMDQ 2003 X'000007D3'

CACRTD 2004 X'000007D4'

CACRTT 2005 X'000007D5'

CADLQ 2006 X'000007D6'

CAENVD 2007 X'000007D7'

CAINIQ 2008 X'000007D8'

CALSTD 2009 X'000007D9'

CALSTN 2010 X'000007DA'

CAPROD 2011 X'000007DB'

CAPRON 2012 X'000007DC'

CAQD 2013 X'000007DD'

CAQMD 2014 X'000007DE'

CAQMN 2015 X'000007DF'

CAQN 2016 X'000007E0'

CARQMN 2017 X'000007E1'

CARQN 2018 X'000007E2'

CABRQN 2019 X'000007E3'

CANAMS 2020 X'000007E4'

CAUSRD 2021 X'000007E5'

CASTGC 2022 X'000007E6'

CATRGD 2023 X'000007E7'

CAXQN 2024 X'000007E8'

CADXQN 2025 X'000007E9'

CACADX 2026 X'000007EA'

CAALTD 2027 X'000007EB'

CAALTT 2028 X'000007EC'

CACLN 2029 X'000007ED'

CACLNL 2030 X'000007EE'

CACLQM 2031 X'000007EF'

CAQMID 2032 X'000007F0'

CACLWX 2033 X'000007F1'

CACLWD 2034 X'000007F2'

CARPN 2035 X'000007F3'

CARPNL 2036 X'000007F4'

CACLD 2037 X'000007F5'

Constantes de MQSeries

446 Consulta de programación de aplicaciones (ILE RPG)

|||||||||||||||||||||||||||||||||

Page 461: amqwak00

CACLT 2038 X'000007F6'

CAUSER 4000 X'00000FA0'

CALAST 4000 X'00000FA0'

CALSTU (variable)

AD* (Descriptor ADS de cabecera CICS)Vea el campo CIADS descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

ADNONE 0 X'00000000'

ADSEND 1 X'00000001'

ADRECV 16 X'00000010'

ADMSGF 256 X'00000100'

CC* (Código de terminación)Vea el parámetro CMPCOD descrito en cada una de las llamadas MQI.

CCOK 0 X'00000000'

CCWARN 1 X'00000001'

CCFAIL 2 X'00000002'

CS* (Identificador de juego de caracteres codificado)Vea el campo MDCSI descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85 y en otras estructuras.

CT* (Tarea conversacional de cabecera CICS)Vea el campo CICT descrito en el “Capítulo 4. MQCIH - Cabecera de puente CICS”en la página 17.

CTNO 0 X'00000000'

CTYES 1 X'00000001'

FC* (Recurso de cabecera CICS)Vea el campo CIFAC descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

FCNONE X'00...00' (8 nulos)

CF* (Nombre de función de cabecera CICS)Vea el campo CIFNC descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

CFCONN 'CONN'

CFGET 'GETb'

CFINQ 'INQb'

CFOPEN 'OPEN'

CFPUT 'PUTb'

CFPUT1 'PUT1'

CFNONE 'bbbb'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 447

||||||

|||

Page 462: amqwak00

WI* (Intervalo de espera de obtener de cabecera CICS)Vea el campo CIGWI descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

WIDFLT -2 X'FFFFFFFE'

CI* (Identificador de correlación)Vea el campo MDCID descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

CINONE X'00...00' (24 nulos)

CINEWS X'414D51214E45575F534553...'

MQ* (Identificador de llamada)MQCONN 1 X'00000001'

MQDISC 2 X'00000002'

MQOPEN 3 X'00000003'

MQCLOS 4 X'00000004'

MQGET 5 X'00000005'

MQPUT 6 X'00000006'

MQPUT1 7 X'00000007'

MQINQ 8 X'00000008'

MQSET 9 X'00000009'

MQXCVC 12 X'0000000C'

CIF* (Distintivos de cabecera CICS)Vea el campo CIFLG descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

CIFNON 0 X'00000000'

CI* (Longitud de cabecera CICS)Vea el campo CILEN descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

CILEN1 164 X'000000A4'

CILEN2 180 X'000000B4'

CILENC 180 X'000000B4'

CI* (Identificador de estructura de cabecera CICS)Vea el campo CISID descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

CISIDV 'CIHb'

CI* (Versión de cabecera CICS)Vea el campo CIVER descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

CIVER1 1 X'00000001'

Constantes de MQSeries

448 Consulta de programación de aplicaciones (ILE RPG)

||||||

Page 463: amqwak00

CIVER2 2 X'00000002'

CIVERC 2 X'00000002'

LT* (Tipo de enlace de cabecera CICS)Vea el campo CILT descrito en el “Capítulo 4. MQCIH - Cabecera de puente CICS”en la página 17.

LTPROG 1 X'00000001'

LTTRAN 2 X'00000002'

CMLV* (Nivel de mandato)Vea el atributo CommandLevel descrito en el “Capítulo 43. Atributos del gestor decolas” en la página 337.

CMLVL1 100 X'00000064'

CML320 320 X'00000140'

CML420 420 X'000001A4'

CML510 510 X'000001FE'

CN* (Opciones de conectar)Vea el campo CNOPT descrito en el “Capítulo 5. MQCNO - Opciones de conectar” enla página 31.

CNSBND 0 X'00000000'

CNFBND 1 X'00000001'

CNNONE 0 X'00000000'

CN* (Identificador de estructura de opciones de conectar)Vea el campo CNSID descrito en el “Capítulo 5. MQCNO - Opciones de conectar” enla página 31.

CNSIDV 'CNOb'

CN* (Versión de opciones de conectar)Vea el campo CNVER descrito en el “Capítulo 5. MQCNO - Opciones de conectar” enla página 31.

CNVER1 1 X'00000001'

CNVER2 2 X'00000002'

CNVERC 2 X'00000002'

CO* (Opciones de cerrar)Vea el parámetro OPTS descrito en el “Capítulo 25. MQCLOSE - Cerrar objeto” en lapágina 221.

CONONE 0 X'00000000'

CODEL 1 X'00000001'

COPURG 2 X'00000002'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 449

|||

|||

||||||

|||

Page 464: amqwak00

OL* (Longitud de datos de salida de cabecera CICS)Vea el campo CIODL descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

OLINPT -1 X'FFFFFFFF'

CRC* (Código de retorno de cabecera CICS)Vea el campo CIRET descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

CRC000 0 X'00000000'

CRC001 1 X'00000001'

CRC002 2 X'00000002'

CRC003 3 X'00000003'

CRC004 4 X'00000004'

CRC005 5 X'00000005'

CRC006 6 X'00000006'

CRC007 7 X'00000007'

CRC008 8 X'00000008'

CRC009 9 X'00000009'

SC* (Código de inicio de transacción de cabecera CICS)Vea el campo CISC descrito en el “Capítulo 4. MQCIH - Cabecera de puente CICS”en la página 17.

SCSTRT 'Sbbb'

SCDATA 'SDbb'

SCTERM 'TDbb'

SCNONE 'bbbb'

TE* (Estado de final de tarea de cabecera CICS)Vea el campo CITES descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

TENOSY 0 X'00000000'

TECMIT 256 X'00000100'

TEBACK 4352 X'00001100'

TEENDT 65536 X'00010000'

CU* (Control de unidad de trabajo de cabecera CICS)Vea el campo CIUOW descrito en el “Capítulo 4. MQCIH - Cabecera de puenteCICS” en la página 17.

CUMIDL 16 X'00000010'

CUFRST 17 X'00000011'

CUCMIT 256 X'00000100'

CULAST 272 X'00000110'

CUONLY 273 X'00000111'

CUBACK 4352 X'00001100'

CUCONT 65536 X'00010000'

Constantes de MQSeries

450 Consulta de programación de aplicaciones (ILE RPG)

|||

Page 465: amqwak00

DCC* (Máscaras y factores de convertir caracteres)Vea el parámetro OPTS descrito en “MQXCNVC - Convertir caracteres” en lapágina 499.

DCCSMA 240 X'000000F0'

DCCTMA 3840 X'00000F00'

DCCSFA 16 X'00000010'

DCCTFA 256 X'00000100'

DCC* (Opciones de convertir caracteres)Vea el parámetro OPTS descrito en “MQXCNVC - Convertir caracteres” en lapágina 499.

DCCSUN 0 X'00000000'

DCCTUN 0 X'00000000'

DCCNON 0 X'00000000'

DCCDEF 1 X'00000001'

DCCFIL 2 X'00000002'

DCCSNA 16 X'00000010'

DCCSNO 16 X'00000010'

DCCSRE 32 X'00000020'

DCCTNA 256 X'00000100'

DCCTNO 256 X'00000100'

DCCTRE 512 X'00000200'

DH* (Identificador de estructura de cabecera de distribución)Vea el campo DHSID descrito en el “Capítulo 6. MQDH - Cabecera de distribución”en la página 37.

DHSIDV 'DHbb'

DH* (Versión de cabecera de distribución)Vea el campo DHVER descrito en el “Capítulo 6. MQDH - Cabecera de distribución”en la página 37.

DHVER1 1 X'00000001'

DHVERC 1 X'00000001'

DHF* (Distintivos de cabecera de distribución)Vea el campo DHFLG descrito en el “Capítulo 6. MQDH - Cabecera de distribución”en la página 37.

DHFNON 0 X'00000000'

DHFNEW 1 X'00000001'

DL* (Soporte de lista de distribución)Vea los atributos DistLists descritos en el “Capítulo 43. Atributos del gestor decolas” en la página 337 y en el “Capítulo 38. Atributos de colas locales y colasmodelo” en la página 311.

DLNSUP 0 X'00000000'

DLSUPP 1 X'00000001'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 451

|||

Page 466: amqwak00

DL* (Identificador de estructura de cabecera de mensaje noentregado)

Vea el campo DLSID descrito en el “Capítulo 7. MQDLH - Cabecera de mensaje noentregado” en la página 43.

DLSIDV 'DLHb'

DL* (Versión de cabecera de mensaje no entregado)Vea el campo DLVER descrito en el “Capítulo 7. MQDLH - Cabecera de mensaje noentregado” en la página 43.

DLVER1 1 X'00000001'

DLVERC 1 X'00000001'

DX* (Identificador de estructura de parámetro de rutina desalida de conversión de datos)

Vea el campo DXSID descrito en “MQDXP – Parámetro de rutina de salida deconversión de datos” en la página 493.

DXSIDV 'DXPb'

DX* (Versión de estructura de parámetro de rutina de salidade conversión de datos)

Vea el campo DXVER descrito en “MQDXP – Parámetro de rutina de salida deconversión de datos” en la página 493.

DXVER1 1 X'00000001'

DXVERC 1 X'00000001'

EI* (Intervalo de caducidad)Vea el campo MDEXP descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

EIULIM -1 X'FFFFFFFF'

EN* (Codificación)Vea el campo MDENC descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

ENNAT 273 X'00000111'

EN* (Máscaras de codificación)Vea el “Apéndice D. Codificaciones de máquina” en la página 477.

ENIMSK 15 X'0000000F'

ENDMSK 240 X'000000F0'

ENFMSK 3840 X'00000F00'

Constantes de MQSeries

452 Consulta de programación de aplicaciones (ILE RPG)

Page 467: amqwak00

ENRMSK -4096 X'FFFFF000'

EN* (Codificación para enteros decimales empaquetados)Vea el “Apéndice D. Codificaciones de máquina” en la página 477.

ENDUND 0 X'00000000'

ENDNOR 16 X'00000010'

ENDREV 32 X'00000020'

EN* (Codificación para números de coma flotante)Vea el “Apéndice D. Codificaciones de máquina” en la página 477.

ENFUND 0 X'00000000'

ENFNOR 256 X'00000100'

ENFREV 512 X'00000200'

ENF390 768 X'00000300'

EN* (Codificación para enteros binarios)Vea el “Apéndice D. Codificaciones de máquina” en la página 477.

ENIUND 0 X'00000000'

ENINOR 1 X'00000001'

ENIREV 2 X'00000002'

EV* (Notificación de sucesos)Vea los atributos QDepthHighEvent, QDepthLowEvent y QDepthMaxEvent descritos enel “Capítulo 38. Atributos de colas locales y colas modelo” en la página 311 y losatributos AuthorityEvent, ChannelAutoDefEvent, InhibitEvent, LocalEvent,PerformanceEvent, RemoteEvent y StartStopEvent descritos en el “Capítulo 43.Atributos del gestor de colas” en la página 337.

EVRDIS 0 X'00000000'

EVRENA 1 X'00000001'

FB* (Información de retorno)Vea el campo MDFB descrito en el “Capítulo 10. MQMD - Descriptor de mensaje” enla página 85 y el campo DLREA descrito en el “Capítulo 7. MQDLH - Cabecera demensaje no entregado” en la página 43; vea asimismo los valores de RC*.

FBNONE 0 X'00000000'

FBSFST 1 X'00000001'

FBQUIT 256 X'00000100'

FBEXP 258 X'00000102'

FBCOA 259 X'00000103'

FBCOD 260 X'00000104'

FBABEG 265 X'00000109'

FBTM 266 X'0000010A'

FBATYP 267 X'0000010B'

FBSBMX 268 X'0000010C'

FBXQME 271 X'0000010F'

FBPAN 275 X'00000113'

FBNAN 276 X'00000114'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 453

Page 468: amqwak00

FBSBCX 277 X'00000115'

FBSBPS 279 X'00000117'

FBNARM 280 X'00000118'

FBDLZ 291 X'00000123'

FBDLN 292 X'00000124'

FBDLTB 293 X'00000125'

FBBUFO 294 X'00000126'

FBLOB1 295 X'00000127'

FBIIH 296 X'00000128'

FBNAFI 298 X'0000012A'

FBIERR 300 X'0000012C'

FBIFST 301 X'0000012D'

FBILST 399 X'0000018F'

FBCINE 401 X'00000191'

FBCNTA 402 X'00000192'

FBCBRF 403 X'00000193'

FBCCIE 404 X'00000194'

FBCCSE 405 X'00000195'

FBCENE 406 X'00000196'

FBCIHE 407 X'00000197'

FBCUWE 408 X'00000198'

FBCCAE 409 X'00000199'

FBCANS 410 X'0000019A'

FBCAAB 411 X'0000019B'

FBCDLQ 412 X'0000019C'

FBCUBO 413 X'0000019D'

FBSLST 65535 X'0000FFFF'

FBAFST 65536 X'00010000'

FBALST 999999999 X'3B9AC9FF'

FM* (Formato)Vea el campo MDFMT descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85 y en otras estructuras.

FMNONE 'bbbbbbbb'

FMADMN 'MQADMINb'

FMCICS 'MQCICSbb'

FMCMD1 'MQCMD1bb'

FMCMD2 'MQCMD2bb'

FMDLH 'MQDEADbb'

FMDH 'MQHDISTb'

FMEVNT 'MQEVENTb'

FMIMS 'MQIMSbbb'

FMIMVS 'MQIMSVSb'

FMMDE 'MQHMDEbb'

FMPCF 'MQPCFbbb'

FMRMH 'MQHREFbb'

FMRFH 'MQHRFbbb'

FMSTR 'MQSTRbbb'

FMTM 'MQTRIGbb'

FMWIH 'MQHWIHbb'

FMXQH 'MQXMITbb'

GI* (Identificador de grupo)Vea el campo MDGID descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

Constantes de MQSeries

454 Consulta de programación de aplicaciones (ILE RPG)

|||||||||

||

||

Page 469: amqwak00

GINONE X'00...00' (24 nulos)

GM* (Opciones de obtener mensaje)Vea el campo GMOPT descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

GMNWT 0 X'00000000'

GMNONE 0 X'00000000'

GMWT 1 X'00000001'

GMSYP 2 X'00000002'

GMNSYP 4 X'00000004'

GMBRWF 16 X'00000010'

GMBRWN 32 X'00000020'

GMATM 64 X'00000040'

GMMUC 256 X'00000100'

GMLK 512 X'00000200'

GMUNLK 1024 X'00000400'

GMBRWC 2048 X'00000800'

GMPSYP 4096 X'00001000'

GMFIQ 8192 X'00002000'

GMCONV 16384 X'00004000'

GMLOGO 32768 X'00008000'

GMCMPM 65536 X'00010000'

GMAMSA 131072 X'00020000'

GMASGA 262144 X'00040000'

GM* (Identificador de estructura de opciones de obtenermensaje)

Vea el campo GMSID descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

GMSIDV 'GMOb'

GM* (Versión de opciones de obtener mensaje)Vea el campo GMVER descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

GMVER1 1 X'00000001'

GMVER2 2 X'00000002'

GMVER3 3 X'00000003'

GMVERC (variable)

GS* (Estado de grupo)Vea el campo GMGST descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

GSNIG 'b'

GSMIG 'G'

GSLMIG 'L'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 455

|||

Page 470: amqwak00

HC* (Asa de conexión)Vea el parámetro HCONN descrito en el “Capítulo 27. MQCONN - Conectar gestor decolas” en la página 231 y en el “Capítulo 29. MQDISC - Desconectar gestor decolas” en la página 239.

HCUNUH -1 X'FFFFFFFF'

HCDEFH 0 X'00000000'

HO* (Asa de objeto)Vea el parámetro HOBJ descrito en el “Capítulo 25. MQCLOSE - Cerrar objeto” en lapágina 221.

IA* (Selector de atributo de tipo entero)Vea el parámetro SELS descrito en el “Capítulo 31. MQINQ - Consultar los atributosde objeto” en la página 251 y en el “Capítulo 35. MQSET - Establecer atributos deobjeto” en la página 295.

IAFRST 1 X'00000001'

IAAPPT 1 X'00000001'

IACCSI 2 X'00000002'

IACDEP 3 X'00000003'

IADINP 4 X'00000004'

IADPER 5 X'00000005'

IADPRI 6 X'00000006'

IADEFT 7 X'00000007'

IAHGB 8 X'00000008'

IAIGET 9 X'00000009'

IAIPUT 10 X'0000000A'

IAMHND 11 X'0000000B'

IAUSAG 12 X'0000000C'

IAMLEN 13 X'0000000D'

IAMPRI 14 X'0000000E'

IAMDEP 15 X'0000000F'

IAMDS 16 X'00000010'

IAOIC 17 X'00000011'

IAOOC 18 X'00000012'

IANAMC 19 X'00000013'

IAQTYP 20 X'00000014'

IARINT 21 X'00000015'

IABTHR 22 X'00000016'

IASHAR 23 X'00000017'

IATRGC 24 X'00000018'

IATRGI 25 X'00000019'

IATRGP 26 X'0000001A'

IATRGT 28 X'0000001C'

IATRGD 29 X'0000001D'

IASYNC 30 X'0000001E'

IACMDL 31 X'0000001F'

IAPLAT 32 X'00000020'

IAMUNC 33 X'00000021'

IADIST 34 X'00000022'

IATSR 35 X'00000023'

IAHQD 36 X'00000024'

IAMEC 37 X'00000025'

IAMDC 38 X'00000026'

IAQDHL 40 X'00000028'

Constantes de MQSeries

456 Consulta de programación de aplicaciones (ILE RPG)

Page 471: amqwak00

IAQDLL 41 X'00000029'

IAQDME 42 X'0000002A'

IAQDHE 43 X'0000002B'

IAQDLE 44 X'0000002C'

IASCOP 45 X'0000002D'

IAQSIE 46 X'0000002E'

IAAUTE 47 X'0000002F'

IAINHE 48 X'00000030'

IALCLE 49 X'00000031'

IARMTE 50 X'00000032'

IASSE 52 X'00000034'

IAPFME 53 X'00000035'

IAQSI 54 X'00000036'

IACAD 55 X'00000037'

IACADE 56 X'00000038'

IAINDT 57 X'00000039'

IACLWL 58 X'0000003A'

IACLQT 59 X'0000003B'

IAARCH 60 X'0000003C'

IADBND 61 X'0000003D'

IAUSER 2000 X'000007D0'

IALAST 2000 X'000007D0'

IALSTU (variable)

IAU* (Autenticador IMS)Vea el campo IIAUT descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

IAUNON 'bbbbbbbb'

IAV* (Valor de atributo de tipo entero)Vea el parámetro INTATR descrito en el “Capítulo 31. MQINQ - Consultar losatributos de objeto” en la página 251.

IAVUND -2 X'FFFFFFFE'

IAVNA -1 X'FFFFFFFF'

ICM* (Modalidad de compromiso IMS)Vea el campo IICMT descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

ICMCTS '0'

ICMSTC '1'

II* (Distintivos de cabecera IMS)Vea el campo IIFLG descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

IINONE 0 X'00000000'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 457

|||||||||||||||

Page 472: amqwak00

II* (Longitud de cabecera IMS)Vea el campo IILEN descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

IILEN1 84 X'00000054'

II* (Identificador de estructura de cabecera IMS)Vea el campo IISID descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

IISIDV 'IIHb'

II* (Versión de cabecera IMS)Vea el campo IIVER descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

IIVER1 1 X'00000001'

IIVERC 1 X'00000001'

ISS* (Ámbito de seguridad IMS)Vea el campo IISEC descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

ISSCHK 'C'

ISSFUL 'F'

ITI* (Identificador de instancia de transacción IMS)Vea el campo IITID descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

ITINON X'00...00' (16 nulos)

ITS* (Estado de transacción IMS)Vea el campo IITST descrito en el “Capítulo 9. MQIIH - Cabecera de puente IMS”en la página 79.

ITSIC 'C'

ITSNIC ' '

ITSARC 'A'

MD* (Identificador de estructura de descriptor de mensaje)Vea el campo MDSID descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

MDSIDV 'MDbb'

MD* (Versión de descriptor de mensaje)Vea el campo MDVER descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

Constantes de MQSeries

458 Consulta de programación de aplicaciones (ILE RPG)

Page 473: amqwak00

MDVER1 1 X'00000001'

MDVER2 2 X'00000002'

MDVERC (variable)

ME* (Longitud de extensión de descriptor de mensaje)Vea el campo MELEN descrito en el “Capítulo 11. MQMDE - Extensión de descriptorde mensaje” en la página 137.

MELEN2 72 X'00000048'

ME* (Identificador de estructura de extensión de descriptor demensaje)

Vea el campo MESID descrito en el “Capítulo 11. MQMDE - Extensión de descriptorde mensaje” en la página 137.

MESIDV 'MDEb'

ME* (Versión de extensión de descriptor de mensaje)Vea el campo MEVER descrito en el “Capítulo 11. MQMDE - Extensión de descriptorde mensaje” en la página 137.

MEVER2 2 X'00000002'

MEVERC 2 X'00000002'

MEF* (Distintivos de extensión de descriptor de mensaje)Vea el campo MEFLG descrito en el “Capítulo 11. MQMDE - Extensión de descriptorde mensaje” en la página 137.

MEFNON 0 X'00000000'

MS* (Secuencia de entrega de mensajes)Vea el atributo MsgDeliverySequence descrito en el “Capítulo 38. Atributos de colaslocales y colas modelo” en la página 311.

MSPRIO 0 X'00000000'

MSFIFO 1 X'00000001'

MF* (Distintivos de mensaje)Vea el campo MDMFL descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

MFSEGI 0 X'00000000'

MFNONE 0 X'00000000'

MFSEGA 1 X'00000001'

MFSEG 2 X'00000002'

MFLSEG 4 X'00000004'

MFMIG 8 X'00000008'

MFLMIG 16 X'00000010'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 459

Page 474: amqwak00

MF* (Máscaras de distintivos de mensaje)Vea el “Apéndice E. Opciones de informe” en la página 481.

MFAUM -1048576 X'FFF00000'

MFAUXM 1044480 X'000FF000'

MFRUM 4095 X'00000FFF'

MI* (Identificador de mensaje)Vea el campo MDMID descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

MINONE X'00...00' (24 nulos)

MO* (Opciones de emparejar)Vea el campo GMMO descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

MONONE 0 X'00000000'

MOMSGI 1 X'00000001'

MOCORI 2 X'00000002'

MOGRPI 4 X'00000004'

MOSEQN 8 X'00000008'

MOOFFS 16 X'00000010'

MT* (Tipo de mensaje)Vea el campo MDMT descrito en el “Capítulo 10. MQMD - Descriptor de mensaje” enla página 85.

MTSFST 1 X'00000001'

MTRQST 1 X'00000001'

MTRPLY 2 X'00000002'

MTRPRT 4 X'00000004'

MTDGRM 8 X'00000008'

MTSLST 65535 X'0000FFFF'

MTAFST 65536 X'00010000'

MTALST 999999999 X'3B9AC9FF'

MTK* (Símbolo de mensaje)Vea los campos GMTOK descritos en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51 y en el “Capítulo 20. MQWIH - Cabecera de informaciónde trabajo” en la página 199.

MTKNON X'00...00' (16 nulos)

NC* (Cuenta de nombres)Vea el atributo NameCount descrito en el “Capítulo 41. Atributos de las listas denombres” en la página 331.

NCMXNL 256 X'00000100'

Constantes de MQSeries

460 Consulta de programación de aplicaciones (ILE RPG)

|

|||

||||

|

||

|||||

Page 475: amqwak00

OD* (Longitud de descriptor de objeto)Vea el “Capítulo 12. MQOD - Descriptor de objeto” en la página 143.

ODLENC 336 X'00000150'

OD* (Identificador de estructura de descriptor de objeto)Vea el campo ODSID descrito en el “Capítulo 12. MQOD - Descriptor de objeto” enla página 143.

ODSIDV 'ODbb'

OD* (Versión de descriptor de objeto)Vea el campo ODVER descrito en el “Capítulo 12. MQOD - Descriptor de objeto” enla página 143.

ODVER1 1 X'00000001'

ODVER2 2 X'00000002'

ODVER3 3 X'00000003'

ODVERC (variable)

OII* (Identificador de instancia de objeto)Vea el campo RMOII descrito en el “Capítulo 16. MQRMH - Cabecera de mensaje dereferencia” en la página 177.

OIINON X'00...00' (24 nulos)

OL* (Longitud original)Vea el campo MDOLN descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

OLUNDF -1 X'FFFFFFFF'

OO* (Opciones de abrir)Vea el parámetro OPTS descrito en el “Capítulo 32. MQOPEN - Abrir objeto” en lapágina 261.

OOBNDQ 0 X'00000000'

OOINPQ 1 X'00000001'

OOINPS 2 X'00000002'

OOINPX 4 X'00000004'

OOBRW 8 X'00000008'

OOOUT 16 X'00000010'

OOINQ 32 X'00000020'

OOSET 64 X'00000040'

OOSAVA 128 X'00000080'

OOPASI 256 X'00000100'

OOPASA 512 X'00000200'

OOSETI 1024 X'00000400'

OOSETA 2048 X'00000800'

OOALTU 4096 X'00001000'

OOFIQ 8192 X'00002000'

OOBNDO 16384 X'00004000'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 461

|

|||

|||

Page 476: amqwak00

OOBNDN 32768 X'00008000'

OT* (Tipo de objeto)Vea el campo ODOT descrito en el “Capítulo 12. MQOD - Descriptor de objeto” en lapágina 143.

OTQ 1 X'00000001'

OTNLST 2 X'00000002'

OTPRO 3 X'00000003'

OTQM 5 X'00000005'

PE* (Permanencia)Vea el campo MDPER descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85 y el atributo DefPersistence descrito en el “Capítulo 37. Atributosde todas las colas” en la página 305.

PENPER 0 X'00000000'

PEPER 1 X'00000001'

PL* (Plataforma)Vea el atributo Platform descrito en el “Capítulo 43. Atributos del gestor de colas”en la página 337.

PLMVS 1 X'00000001'

PL390 1 X'00000001'

PLOS2 2 X'00000002'

PLAIX 3 X'00000003'

PLUNIX 3 X'00000003'

PL400 4 X'00000004'

PLWIN 5 X'00000005'

PLWINT 11 X'0000000B'

PLVMS 12 X'0000000C'

PLNSK 13 X'0000000D'

PM* (Opciones de poner mensaje)Vea el campo PMOPT descrito en el “Capítulo 14. MQPMO - Opciones de ponermensaje” en la página 155.

PMNONE 0 X'00000000'

PMSYP 2 X'00000002'

PMNSYP 4 X'00000004'

PMDEFC 32 X'00000020'

PMNMID 64 X'00000040'

PMNCID 128 X'00000080'

PMPASI 256 X'00000100'

PMPASA 512 X'00000200'

PMSETI 1024 X'00000400'

PMSETA 2048 X'00000800'

PMALTU 4096 X'00001000'

PMFIQ 8192 X'00002000'

PMNOC 16384 X'00004000'

PMLOGO 32768 X'00008000'

Constantes de MQSeries

462 Consulta de programación de aplicaciones (ILE RPG)

|||

|||

Page 477: amqwak00

PM* (Longitud de estructura de opciones de poner mensaje)Vea el “Capítulo 14. MQPMO - Opciones de poner mensaje” en la página 155.

PMLENC 152 X'00000098'

PM* (Identificador de estructura de opciones de ponermensaje)

Vea el campo PMSID descrito en el “Capítulo 14. MQPMO - Opciones de ponermensaje” en la página 155.

PMSIDV 'PMOb'

PM* (Versión de opciones de poner mensaje)Vea el campo PMVER descrito en el “Capítulo 14. MQPMO - Opciones de ponermensaje” en la página 155.

PMVER1 1 X'00000001'

PMVER2 2 X'00000002'

PMVERC (variable)

PF* (Distintivos de campo de registro de poner mensaje)Vea el campo DHPRF descrito en el “Capítulo 6. MQDH - Cabecera de distribución”en la página 37.

PFNONE 0 X'00000000'

PFMID 1 X'00000001'

PFCID 2 X'00000002'

PFGID 4 X'00000004'

PFFB 8 X'00000008'

PFACC 16 X'00000010'

PR* (Prioridad)Vea el campo MDPRI descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

PRQDEF -1 X'FFFFFFFF'

QA* (Inhibir obtener)Vea el atributo InhibitGet descrito en el “Capítulo 37. Atributos de todas las colas”en la página 305.

QAGETA 0 X'00000000'

QAGETI 1 X'00000001'

QA* (Inhibir poner)Vea el atributo InhibitPut descrito en el “Capítulo 37. Atributos de todas las colas”en la página 305.

QAPUTA 0 X'00000000'

QAPUTI 1 X'00000001'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 463

Page 478: amqwak00

QA* (Memorización de restitución)Vea el atributo HardenGetBackout descrito en el “Capítulo 38. Atributos de colaslocales y colas modelo” en la página 311.

QABNH 0 X'00000000'

QABH 1 X'00000001'

QA* (Compartibilidad de cola)Vea el atributo Shareability descrito en el “Capítulo 38. Atributos de colas localesy colas modelo” en la página 311.

QANSHR 0 X'00000000'

QASHR 1 X'00000001'

QD* (Tipo de definición de cola)Vea el atributo DefinitionType descrito en el “Capítulo 38. Atributos de colaslocales y colas modelo” en la página 311.

QDPRE 1 X'00000001'

QDPERM 2 X'00000002'

QDTEMP 3 X'00000003'

QSIE* (Sucesos de intervalo de servicio)Vea el atributo QServiceIntervalEvent descrito en el “Capítulo 38. Atributos decolas locales y colas modelo” en la página 311.

QSIENO 0 X'00000000'

QSIEHI 1 X'00000001'

QSIEOK 2 X'00000002'

QT* (Tipo de cola)Vea el atributo QType descrito en el “Capítulo 37. Atributos de todas las colas” en lapágina 305.

QTLOC 1 X'00000001'

QTMOD 2 X'00000002'

QTALS 3 X'00000003'

QTREM 6 X'00000006'

QTCLUS 7 X'00000007'

RC* (Código de razón)Vea el “Apéndice A. Códigos de retorno” en la página 373 y el campo MDFB descritoen el “Capítulo 10. MQMD - Descriptor de mensaje” en la página 85. Nota: lasiguiente lista está por orden numérico.

RCNONE 0 X'00000000'

RC0900 900 X'00000384'

RC0999 999 X'000003E7'

RC2001 2001 X'000007D1'

RC2002 2002 X'000007D2'

RC2003 2003 X'000007D3'

RC2004 2004 X'000007D4'

Constantes de MQSeries

464 Consulta de programación de aplicaciones (ILE RPG)

|||

||||||

Page 479: amqwak00

RC2005 2005 X'000007D5'

RC2006 2006 X'000007D6'

RC2007 2007 X'000007D7'

RC2008 2008 X'000007D8'

RC2009 2009 X'000007D9'

RC2010 2010 X'000007DA'

RC2011 2011 X'000007DB'

RC2013 2013 X'000007DD'

RC2014 2014 X'000007DE'

RC2016 2016 X'000007E0'

RC2017 2017 X'000007E1'

RC2018 2018 X'000007E2'

RC2019 2019 X'000007E3'

RC2020 2020 X'000007E4'

RC2021 2021 X'000007E5'

RC2022 2022 X'000007E6'

RC2023 2023 X'000007E7'

RC2024 2024 X'000007E8'

RC2026 2026 X'000007EA'

RC2027 2027 X'000007EB'

RC2029 2029 X'000007ED'

RC2030 2030 X'000007EE'

RC2031 2031 X'000007EF'

RC2033 2033 X'000007F1'

RC2034 2034 X'000007F2'

RC2035 2035 X'000007F3'

RC2036 2036 X'000007F4'

RC2037 2037 X'000007F5'

RC2038 2038 X'000007F6'

RC2039 2039 X'000007F7'

RC2040 2040 X'000007F8'

RC2041 2041 X'000007F9'

RC2042 2042 X'000007FA'

RC2043 2043 X'000007FB'

RC2044 2044 X'000007FC'

RC2045 2045 X'000007FD'

RC2046 2046 X'000007FE'

RC2047 2047 X'000007FF'

RC2048 2048 X'00000800'

RC2049 2049 X'00000801'

RC2050 2050 X'00000802'

RC2051 2051 X'00000803'

RC2052 2052 X'00000804'

RC2053 2053 X'00000805'

RC2055 2055 X'00000807'

RC2056 2056 X'00000808'

RC2057 2057 X'00000809'

RC2058 2058 X'0000080A'

RC2059 2059 X'0000080B'

RC2061 2061 X'0000080D'

RC2063 2063 X'0000080F'

RC2065 2065 X'00000811'

RC2066 2066 X'00000812'

RC2067 2067 X'00000813'

RC2068 2068 X'00000814'

RC2071 2071 X'00000817'

RC2072 2072 X'00000818'

RC2075 2075 X'0000081B'

RC2076 2076 X'0000081C'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 465

Page 480: amqwak00

RC2077 2077 X'0000081D'

RC2078 2078 X'0000081E'

RC2079 2079 X'0000081F'

RC2080 2080 X'00000820'

RC2082 2082 X'00000822'

RC2085 2085 X'00000825'

RC2086 2086 X'00000826'

RC2087 2087 X'00000827'

RC2090 2090 X'0000082A'

RC2091 2091 X'0000082B'

RC2092 2092 X'0000082C'

RC2093 2093 X'0000082D'

RC2094 2094 X'0000082E'

RC2095 2095 X'0000082F'

RC2096 2096 X'00000830'

RC2097 2097 X'00000831'

RC2098 2098 X'00000832'

RC2100 2100 X'00000834'

RC2101 2101 X'00000835'

RC2102 2102 X'00000836'

RC2104 2104 X'00000838'

RC2110 2110 X'0000083E'

RC2111 2111 X'0000083F'

RC2112 2112 X'00000840'

RC2113 2113 X'00000841'

RC2114 2114 X'00000842'

RC2115 2115 X'00000843'

RC2116 2116 X'00000844'

RC2117 2117 X'00000845'

RC2118 2118 X'00000846'

RC2119 2119 X'00000847'

RC2120 2120 X'00000848'

RC2123 2123 X'0000084B'

RC2124 2124 X'0000084C'

RC2125 2125 X'0000084D'

RC2126 2126 X'0000084E'

RC2135 2135 X'00000857'

RC2136 2136 X'00000858'

RC2137 2137 X'00000859'

RC2139 2139 X'0000085B'

RC2141 2141 X'0000085D'

RC2142 2142 X'0000085E'

RC2143 2143 X'0000085F'

RC2144 2144 X'00000860'

RC2145 2145 X'00000861'

RC2146 2146 X'00000862'

RC2148 2148 X'00000864'

RC2149 2149 X'00000865'

RC2150 2150 X'00000866'

RC2152 2152 X'00000868'

RC2153 2153 X'00000869'

RC2154 2154 X'0000086A'

RC2155 2155 X'0000086B'

RC2156 2156 X'0000086C'

RC2158 2158 X'0000086E'

RC2159 2159 X'0000086F'

RC2161 2161 X'00000871'

RC2162 2162 X'00000872'

RC2173 2173 X'0000087D'

Constantes de MQSeries

466 Consulta de programación de aplicaciones (ILE RPG)

Page 481: amqwak00

RC2184 2184 X'00000888'

RC2185 2185 X'00000889'

RC2186 2186 X'0000088A'

RC2187 2187 X'0000088B'

RC2188 2188 X'0000088C'

RC2189 2189 X'0000088D'

RC2190 2190 X'0000088E'

RC2191 2191 X'0000088F'

RC2194 2194 X'00000892'

RC2195 2195 X'00000893'

RC2196 2196 X'00000894'

RC2197 2197 X'00000895'

RC2198 2198 X'00000896'

RC2199 2199 X'00000897'

RC2206 2206 X'0000089E'

RC2207 2207 X'0000089F'

RC2208 2208 X'000008A0'

RC2209 2209 X'000008A1'

RC2218 2218 X'000008AA'

RC2219 2219 X'000008AB'

RC2220 2220 X'000008AC'

RC2222 2222 X'000008AE'

RC2223 2223 X'000008AF'

RC2224 2224 X'000008B0'

RC2225 2225 X'000008B1'

RC2226 2226 X'000008B2'

RC2227 2227 X'000008B3'

RC2232 2232 X'000008B8'

RC2233 2233 X'000008B9'

RC2234 2234 X'000008BA'

RC2235 2235 X'000008BB'

RC2236 2236 X'000008BC'

RC2237 2237 X'000008BD'

RC2238 2238 X'000008BE'

RC2239 2239 X'000008BF'

RC2241 2241 X'000008C1'

RC2242 2242 X'000008C2'

RC2243 2243 X'000008C3'

RC2244 2244 X'000008C4'

RC2245 2245 X'000008C5'

RC2246 2246 X'000008C6'

RC2247 2247 X'000008C7'

RC2248 2248 X'000008C8'

RC2249 2249 X'000008C9'

RC2250 2250 X'000008CA'

RC2251 2251 X'000008CB'

RC2252 2252 X'000008CC'

RC2253 2253 X'000008CD'

RC2255 2255 X'000008CF'

RC2256 2256 X'000008D0'

RC2257 2257 X'000008D1'

RC2258 2258 X'000008D2'

RC2259 2259 X'000008D3'

RC2260 2260 X'000008D4'

RC2261 2261 X'000008D5'

RC2262 2262 X'000008D6'

RC2263 2263 X'000008D7'

RC2264 2264 X'000008D8'

RC2265 2265 X'000008D9'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 467

|||||||||

|||||||||

Page 482: amqwak00

RC2266 2266 X'000008DA'

RC2267 2267 X'000008DB'

RC2268 2268 X'000008DC'

RC2269 2269 X'000008DD'

RC2270 2270 X'000008DE'

RC2273 2273 X'000008E1'

RC2277 2277 X'000008E5'

RC2278 2278 X'000008E6'

RC2279 2279 X'000008E7'

RC2282 2282 X'000008EA'

RC2283 2283 X'000008EB'

RC2284 2284 X'000008EC'

RC2295 2295 X'000008F7'

RC2296 2296 X'000008F8'

RC2299 2299 X'000008FB'

RC2300 2300 X'000008FC'

RC2301 2301 X'000008FD'

RC2302 2302 X'000008FE'

RC2303 2303 X'000008FF'

RC2304 2304 X'00000900'

RC2305 2305 X'00000901'

RC2306 2306 X'00000902'

RC2307 2307 X'00000903'

RC2308 2308 X'00000904'

RC2309 2309 X'00000905'

RC2310 2310 X'00000906'

RC2311 2311 X'00000907'

RC2312 2312 X'00000908'

RC2313 2313 X'00000909'

RC2314 2314 X'0000090A'

RC2315 2315 X'0000090B'

RC2316 2316 X'0000090C'

RC2317 2317 X'0000090D'

RC2318 2318 X'0000090E'

RC2319 2319 X'0000090F'

RC2320 2320 X'00000910'

RC2321 2321 X'00000911'

RC2322 2322 X'00000912'

RC2323 2323 X'00000913'

RC2324 2324 X'00000914'

RC2325 2325 X'00000915'

RC2326 2326 X'00000916'

RC2327 2327 X'00000917'

RC2328 2328 X'00000918'

RC2329 2329 X'00000919'

RC2330 2330 X'0000091A'

RC2334 2334 X'0000091E'

RC2335 2335 X'0000091F'

RC2336 2336 X'00000920'

RC2337 2337 X'00000921'

RC2338 2338 X'00000922'

RC2339 2339 X'00000923'

RL* (Longitud devuelta)Vea el campo GMRL descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

RLUNDF -1 X'FFFFFFFF'

Constantes de MQSeries

468 Consulta de programación de aplicaciones (ILE RPG)

||||||

|||||||||||||||

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

|

||

||||

Page 483: amqwak00

RM* (Identificador de estructura de cabecera de mensaje dereferencia)

Vea el campo RMSID descrito en el “Capítulo 16. MQRMH - Cabecera de mensaje dereferencia” en la página 177.

RMSIDV 'RMHb'

RM* (Versión de cabecera de mensaje de referencia)Vea el campo RMVER descrito en el “Capítulo 16. MQRMH - Cabecera de mensaje dereferencia” en la página 177.

RMVER1 1 X'00000001'

RMVERC 1 X'00000001'

RM* (Distintivos de cabecera de mensaje de referencia)Vea el campo RMFLG descrito en el “Capítulo 16. MQRMH - Cabecera de mensaje dereferencia” en la página 177.

RMNLST 0 X'00000000'

RMLAST 1 X'00000001'

RO* (Opciones de informe)Vea el campo MDREP descrito en el “Capítulo 10. MQMD - Descriptor de mensaje”en la página 85.

RONMI 0 X'00000000'

ROCMTC 0 X'00000000'

RODLQ 0 X'00000000'

RONONE 0 X'00000000'

ROPAN 1 X'00000001'

RONAN 2 X'00000002'

ROPCI 64 X'00000040'

ROPMI 128 X'00000080'

ROCOA 256 X'00000100'

ROCOAD 768 X'00000300'

ROCOAF 1792 X'00000700'

ROCOD 2048 X'00000800'

ROCODD 6144 X'00001800'

ROCODF 14336 X'00003800'

ROEXP 2097152 X'00200000'

ROEXPD 6291456 X'00600000'

ROEXPF 14680064 X'00E00000'

ROEXC 16777216 X'01000000'

ROEXCD 50331648 X'03000000'

ROEXCF 117440512 X'07000000'

RODISC 134217728 X'08000000'

RO* (Máscaras de opciones de informe)Vea el “Apéndice E. Opciones de informe” en la página 481.

RORUM 270270464 X'101C0000'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 469

|

|

Page 484: amqwak00

ROAUM -270532353 X'EFE000FF'

ROAUXM 261888 X'0003FF00'

SCO* (Ámbito de cola)Vea el atributo Scope descrito en el “Capítulo 37. Atributos de todas las colas” en lapágina 305.

SCOQM 1 X'00000001'

SCOCEL 2 X'00000002'

SEG* (Segmentación)Vea el campo GMSEG descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

SEGIHB 'b'

SEGALW 'A'

SI* (Identificador de seguridad)Vea el campo ODASI descrito en el “Capítulo 12. MQOD - Descriptor de objeto” enla página 143.

SINONE X'00...00' (40 nulos)

SIT* (Tipo de identificador de seguridad)Vea el campo ODASI descrito en el “Capítulo 12. MQOD - Descriptor de objeto” enla página 143.

SITNON X'00'

SITWNT X'01'

SP* (Punto de sincronismo)Vea el atributo SyncPoint descrito en el “Capítulo 43. Atributos del gestor de colas”en la página 337.

SPNAVL 0 X'00000000'

SPAVL 1 X'00000001'

SS* (Estado de segmento)Vea el campo GMSST descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

SSNSEG 'b'

SSLSEG 'L'

SSSEG 'S'

TC* (Control de desencadenamiento)Vea el atributo TriggerControl descrito en el “Capítulo 38. Atributos de colaslocales y colas modelo” en la página 311.

Constantes de MQSeries

470 Consulta de programación de aplicaciones (ILE RPG)

|

||

||||

|

||

||||||

|

Page 485: amqwak00

TCOFF 0 X'00000000'

TCON 1 X'00000001'

TM* (Identificador de estructura de mensaje desencadenante)Vea el campo TMSID descrito en el “Capítulo 18. MQTM - Mensaje desencadenante”en la página 189.

TMSIDV 'TMbb'

TM* (Versión de mensaje desencadenante)Vea el campo TMVER descrito en el “Capítulo 18. MQTM - Mensaje desencadenante”en la página 189.

TMVER1 1 X'00000001'

TMVERC 1 X'00000001'

TC* (Identificador de estructura de formato de tipo carácter demensaje desencadenante)

Vea el campo TC2SID descrito en el “Capítulo 19. MQTMC2 - Mensajedesencadenante (formato de caracteres)” en la página 195.

TCSIDV 'TMCb'

TC* (Versión de formato de tipo carácter de mensajedesencadenante)

Vea el campo TC2VER descrito en el “Capítulo 19. MQTMC2 - Mensajedesencadenante (formato de caracteres)” en la página 195.

TT* (Tipo de desencadenante)Vea el atributo TriggerType descrito en el “Capítulo 38. Atributos de colas locales ycolas modelo” en la página 311.

TTNONE 0 X'00000000'

TTFRST 1 X'00000001'

TTEVRY 2 X'00000002'

TTDPTH 3 X'00000003'

US* (Utilización)Vea el atributo Usage descrito en el “Capítulo 38. Atributos de colas locales y colasmodelo” en la página 311.

USNORM 0 X'00000000'

USTRAN 1 X'00000001'

WI* (Intervalo de espera)Vea el campo GMWI descrito en el “Capítulo 8. MQGMO - Opciones de obtenermensaje” en la página 51.

WIULIM -1 X'FFFFFFFF'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 471

Page 486: amqwak00

WI* (Distintivos de cabecera de información de carga detrabajo)

Vea el campo WIFLG descrito en el “Capítulo 20. MQWIH - Cabecera deinformación de trabajo” en la página 199.

WINONE 0 X'00000000'

WI* (Longitud de estructura de cabecera de información decarga de trabajo)

Vea el campo WILEN descrito en el “Capítulo 20. MQWIH - Cabecera deinformación de trabajo” en la página 199.

WILEN1 120 X'00000078'

WILENC 120 X'00000078'

WI* (Identificador de estructura de cabecera de informaciónde carga de trabajo)

Vea el campo WISID descrito en el “Capítulo 20. MQWIH - Cabecera deinformación de trabajo” en la página 199.

WISIDV 'WIHb'

WI* (Versión de cabecera de información de carga de trabajo)Vea el campo WIVER descrito en el “Capítulo 20. MQWIH - Cabecera deinformación de trabajo” en la página 199.

WIVER1 1 X'00000001'

WIVERC 1 X'00000001'

XR* (Respuesta de rutina de salida de conversión de datos)Vea el campo DXRES descrito en “MQDXP – Parámetro de rutina de salida deconversión de datos” en la página 493.

XROK 0 X'00000000'

XRFAIL 1 X'00000001'

XQ* (Identificador de estructura de cabecera de cola detransmisión)

Vea el campo XQSID descrito en el “Capítulo 21. MQXQH - Cabecera de cola detransmisión” en la página 203.

XQSIDV 'XQHb'

Constantes de MQSeries

472 Consulta de programación de aplicaciones (ILE RPG)

|

|

||

|||||

|

|

||

||||||||

|

|

||

||||

|

||

||||||||

|

Page 487: amqwak00

XQ* (Versión de cabecera de cola de transmisión)Vea el campo XQVER descrito en el “Capítulo 21. MQXQH - Cabecera de cola detransmisión” en la página 203.

XQVER1 1 X'00000001'

XQVERC 1 X'00000001'

Constantes de MQSeries

Apéndice B. Constantes de MQSeries 473

Page 488: amqwak00

Constantes de MQSeries

474 Consulta de programación de aplicaciones (ILE RPG)

Page 489: amqwak00

Apéndice C. Normas para validar las opciones de la MQI

Este apéndice facilita una lista de las situaciones que dan lugar al código de razónRC2046 procedente de una llamada MQOPEN, MQPUT, MQPUT1, MQGET oMQCLOSE.

Llamada MQOPENPara las opciones de la llamada MQOPEN:v Debe especificarse uno de los siguientes valores como mínimo:

OOBRWOOINPQOOINPXOOINPSOOINQOOOUTOOSET

v Solo se permite uno de los siguientes valores:OOINPQOOINPXOOINPS

v Solo se permite uno de los siguientes valores:OOBNDOOOBNDNOOBNDQ

Nota: Las opciones listadas más arriba se excluyen mutuamente. Sin embargo,debido a que el valor de OOBNDQ es cero, si se especifica este valor conuna de las otras dos opciones de enlazar, no se devuelve el código derazón RC2046. Se proporciona la opción OOBNDQ como ayuda para ladocumentación del programa.

v Si se especifica OOSAVA, debe especificarse asimismo una de las opcionesOOINP*.

v Si se especifica una de las opciones OOSET* o OOPAS*, también es precisoespecificar OOOUT.

Llamada MQPUTPara las opciones de poner mensaje:v No está permitida la combinación formada por PMSYP y PMNSYP.v Solo se permite uno de los siguientes valores:

PMDEFCPMNOCPMPASAPMPASIPMSETAPMSETI

v La opción PMALTU no está permitida (solo es válida en la llamada MQPUT1).

© Copyright IBM Corp. 1994, 2000 475

||||

|||||

|

Page 490: amqwak00

Llamada MQPUT1En el caso de las opciones de poner mensaje, las normas son iguales que para lallamada MQPUT, salvo que:v Está permitida la opción PMALTU.v No está permitida la opción PMLOGO.

Llamada MQGETPara las opciones de obtener mensaje:v Solo se permite uno de los siguientes valores:

GMNSYPGMSYPGMPSYP

v Solo se permite uno de los siguientes valores:GMBRWFGMBRWCGMBRWNGMMUC

v La opción GMSYP no está permitida con ninguna de las siguientes opciones:GMBRWFGMBRWCGMBRWNGMLKGMUNLK

v La opción GMPSYP no está permitida con ninguna de las siguientes opciones:GMBRWFGMBRWCGMBRWNGMCMPMGMUNLK

v Si se especifica GMLK, es preciso especificar asimismo una de estas opciones:GMBRWFGMBRWCGMBRWN

v Si se especifica GMUNLK, solo están permitidas las siguientes opciones:GMNSYPGMNWT

Llamada MQCLOSEPara las opciones de la llamada MQCLOSE:v No está permitida la combinación formada por CODEL y COPURG.

Opciones de la MQI

476 Consulta de programación de aplicaciones (ILE RPG)

|

Page 491: amqwak00

Apéndice D. Codificaciones de máquina

En este apéndice se describe la estructura del campo MDENC del descriptor demensaje (vea el “Capítulo 10. MQMD - Descriptor de mensaje” en la página 85).

El campo MDENC es un entero de 32 bits dividido en cuatro subcampos distintos,cada uno de los cuales identifica:v La codificación utilizada para enteros binariosv La codificación utilizada para enteros decimales empaquetadosv La codificación utilizada para números de coma flotantev Bits reservados

Cada subcampo se identifica mediante una máscara de bits que tiene bits 1 en lasposiciones que corresponden al subcampo y bits 0 en los demás lugares. Los bitsestán numerados de modo que el bit 0 sea el más significativo y el bit 31 el menossignificativo. Están definidas las máscaras siguientes:

ENIMSKMáscara para codificación de entero binario.

Este subcampo ocupa las posiciones de bit de 28 a 31 dentro del campoMDENC.

ENDMSKMáscara para codificación de entero decimal empaquetado.

Este subcampo ocupa las posiciones de bit de 24 a 27 dentro del campoMDENC.

ENFMSKMáscara para codificación de coma flotante.

Este subcampo ocupa las posiciones de bit de 20 a 23 dentro del campoMDENC.

ENRMSKMáscara para bits reservados.

Este subcampo ocupa las posiciones de bit de 0 a 19 dentro del campoMDENC.

Codificación de entero binarioLos valores válidos para la codificación de enteros binarios son los siguientes:

ENIUNDCodificación de entero no definida.

Los enteros se representan utilizando una codificación que no estádefinida.

ENINORCodificación normal de entero.

Los enteros binarios se representan de forma convencional:v El byte menos significativo del número tiene la dirección más alta de

todos los bytes del número; el byte más significativo tiene la direcciónmás baja.

© Copyright IBM Corp. 1994, 2000 477

Page 492: amqwak00

v El bit menos significativo de cada byte es el adyacente al byte que tienela siguiente dirección más alta; el bit más significativo de cada byte es eladyacente al byte que tiene la siguiente dirección más baja.

ENIREVCodificación inversa de entero.

Los enteros binarios se representan igual que ENINOR, pero con los bytesdispuestos en orden inverso. Los bits de cada byte están ordenados igualque ENINOR.

Codificación de entero decimal empaquetadoLos valores válidos para la codificación de enteros decimales empaquetados son lossiguientes:

ENDUNDCodificación no definida de decimal empaquetado.

Los enteros decimales empaquetados se representan utilizando unacodificación no definida.

ENDNORCodificación normal de decimal empaquetado.

Los enteros decimales empaquetados se representan de formaconvencional:v Cada dígito decimal del formato imprimible del número se representa

como decimal empaquetado mediante un solo dígito hexadecimal delX'0' al X'9'. Cada dígito hexadecimal ocupa cuatro bits, y cada byte delnúmero decimal empaquetado representa dos dígitos decimales en elformato imprimible del número.

v El byte menos significativo del número decimal empaquetado es el byteque contiene el dígito decimal menos significativo. Dentro de dicho byte,los cuatro bits más significativos contienen el dígito decimal menossignificativo, y los cuatro bits menos significativos contienen el signo. Elsigno es X'C' (positivo), X'D' (negativo) o X'F' (sin signo).

v El byte menos significativo del número tiene la dirección más alta detodos los bytes del número; el byte más significativo tiene la direcciónmás baja.

v El bit menos significativo de cada byte es el adyacente al byte que tienela siguiente dirección más alta; el bit más significativo de cada byte es eladyacente al byte que tiene la siguiente dirección más baja.

ENDREVCodificación inversa de decimal empaquetado.

Los enteros decimales empaquetados se representan del mismo modo queen ENDNOR, pero con los bytes dispuestos en orden inverso. Los bits decada byte están ordenados igual que en ENDNOR.

Codificación de coma flotanteLos valores válidos para la codificación de coma flotante son los siguientes:

ENFUNDCodificación no definida de números de coma flotante.

Los números de coma flotante se representan utilizando una codificaciónno definida.

Codificaciones de máquina

478 Consulta de programación de aplicaciones (ILE RPG)

Page 493: amqwak00

ENFNORCodificación normal de números de coma flotante del IEEE.

Los números de coma flotante se representan utilizando el formatoestándar de números de coma flotante del IEEE 2, con los bytes ordenadosde esta forma:v El byte menos significativo de la mantisa tiene la dirección más alta de

todos los bytes del número; el byte que contiene el exponente es aquelcuya dirección es más baja

v El bit menos significativo de cada byte es el adyacente al byte que tienela siguiente dirección más alta; el bit más significativo de cada byte es eladyacente al byte que tiene la siguiente dirección más baja.

En el estándar 754 del IEEE encontrará más detalles sobre la codificaciónde coma flotante del IEEE.

ENFREVCodificación inversa de números de coma flotante del IEEE.

Los números de coma flotante se representan de la misma forma que enENFNOR, pero con los bytes en orden inverso. Los bits de cada byte estánordenados igual que en ENFNOR.

ENF390Codificación de números de coma flotante de la arquitectura System/390®.

Los números de coma flotante se representan utilizando el formatoestándar de números de coma flotante de System/390; esto también esválido para System/370®.

Construcción de codificacionesPara construir un valor para el campo MDENC de la estructura MQMD, se han deañadir las constantes pertinentes que describen las codificaciones requeridas. Espreciso combinar únicamente una de las codificaciones ENI* con una de lascodificaciones END* y una de las codificaciones ENF*.

Análisis de codificacionesEl campo MDENC contiene subcampos; por ello, las aplicaciones que tengan queexaminar la codificación de entero, de decimal empaquetado o de coma flotante,deben utilizar la técnica descrita a continuación.

Utilización de la aritméticaLos pasos que siguen se realizan con la aritmética de los números enteros:1. Seleccione un valor en la tabla siguiente, de acuerdo con la codificación

necesaria:

Codificación necesariaValor que se ha de usar

Entero binario1

Entero decimal empaquetado16

2. Institute of Electrical and Electronics Engineers

Codificaciones de máquina

Apéndice D. Codificaciones de máquina 479

Page 494: amqwak00

Número de coma flotante256

Llame al valor A.2. Divida el valor del campo MDENC por A y llame a este resultado B.3. Divida B por 16 y llame al resultado C.4. Multiplique C por 16 y reste el resultado a B; llame a este resultado D.5. Multiplique D por A y llame al resultado E.6. E es la codificación necesaria; se puede probar para saber si es igual que cada

uno de los valores válidos para ese tipo de codificación.

Resumen de las codificaciones de arquitectura de máquinaLas codificaciones correspondientes a las arquitecturas de máquina están indicadasen la Tabla 58.

Tabla 58. Resumen de codificaciones de arquitecturas de máquina

Arquitectura demáquina

Codificación deentero binario

Codificación deentero decimalempaquetado

Codificación decoma flotante

AS/400 normal normal IEEE normal

Intel® x86 inverso inverso IEEE inverso

PowerPC normal normal IEEE normal

System/390 normal normal System/390

Codificaciones de máquina

480 Consulta de programación de aplicaciones (ILE RPG)

Page 495: amqwak00

Apéndice E. Opciones de informe

Este apéndice trata sobre los campos MDREP y MDMFL que forman parte deldescriptor de mensaje MQMD especificado en las llamadas MQGET, MQPUT yMQPUT1 (vea el “Capítulo 10. MQMD - Descriptor de mensaje” en la página 85).Este apéndice describe:v La estructura del campo de informe y cómo lo procesa el gestor de colasv De qué manera debe la aplicación analizar el campo de informev La estructura del campo de distintivos de mensaje

Estructura del campo de informeEl campo MDREP es un entero de 32 bits que se divide en tres subcampos aparte.Estos subcampos identifican:v Las opciones de informe que se rechazan si el gestor de colas local no las

reconocev Las opciones de informe que se aceptan siempre, incluso si el gestor de colas

local no las reconocev Las opciones de informe que solo se aceptan si se satisfacen ciertas condiciones

Cada subcampo se identifica mediante una máscara de bits que tiene bits 1 en lasposiciones que corresponden al subcampo y bits 0 en los demás lugares. Observeque los bits de un subcampo no son necesariamente adyacentes. Los bits estánnumerados de tal modo que el bit 0 es el más significativo y el bit 31, el menossignificativo. Para identificar los subcampos, se definen estas máscaras:

RORUMMáscara de las opciones de informe no soportadas que se rechazan.

Esta máscara identifica las posiciones de bit dentro del campo MDREP en lasque las opciones de informe no soportadas por el gestor de colas localharán que falle la llamada MQPUT o MQPUT1 con el código determinación CCFAIL y el código de razón RC2061.

Este subcampo ocupa las posiciones de bit 3 y de la 11 a la 13.

ROAUMMáscara de las opciones de informe no soportadas que se aceptan.

Esta máscara identifica las posiciones de bit dentro del campo MDREP en lasque las opciones no soportadas por el gestor de colas local sí se aceptaránen las llamadas MQPUT o MQPUT1. En este caso, se devuelve el códigode terminación CCWARN junto con el código de razón RC2104.

Este subcampo ocupa las posiciones de bit de la 0 a la 2, de la 4 a la 10 yde la 24 a la 31.

En este subcampo se incluyen las siguientes opciones de informe:ROCMTCRODLQRODISCROEXCROEXCDROEXCFROEXP

© Copyright IBM Corp. 1994, 2000 481

Page 496: amqwak00

ROEXPDROEXPFRONANRONMIRONONEROPANROPCIROPMI

ROAUXMMáscara de las opciones de informe no soportadas que solo se aceptan enciertas circunstancias.

Esta máscara identifica las posiciones de bit dentro del campo MDREP en lasque las opciones de informe no soportadas por el gestor de colas local sí seaceptarán en las llamadas MQPUT o MQPUT1, siempre y cuando sesatisfagan estas dos condiciones:v El mensaje está destinado a un gestor de colas remoto.v La aplicación no va a poner el mensaje directamente en una cola de

transmisión local (es decir, la cola identificada por los campos ODMN yODON del descriptor de objeto especificado en la llamada MQOPEN oMQPUT1 no es una cola de transmisión local).

Se devuelve el código de terminación CCWARN junto con el código derazón RC2104 si se satisfacen estas condiciones; si no se satisfacen, sedevuelve el código de terminación CCFAIL junto con el código de razónRC2061.

Este subcampo ocupa las posiciones de bit de la 14 a la 23.

En este subcampo se incluyen las siguientes opciones de informe:ROCOAROCOADROCOAFROCODROCODDROCODF

Si hubiera alguna opción especificada en el campo MDREP que el gestor de colas noreconociera, este comprobará cada subcampo por turno, utilizando la operaciónAND a nivel de bit para combinar el campo MDREP con la máscara de esesubcampo. Si el resultado de esa operación no es cero, se devuelven el código determinación y los códigos de razón antes descritos.

Si se devuelve CCWARN, no queda definido qué código de razón se ha dedevolver si se dan otras condiciones de aviso.

La capacidad para especificar y lograr que se acepten las opciones de informe noreconocidas por el gestor de colas local resulta útil cuando se desea enviar unmensaje con una opción de informe que un gestor de colas remoto reconocerá yprocesará.

Análisis del campo de informeEl campo MDREP consta de subcampos; por ello, las aplicaciones que tienen quecomprobar si el emisor del mensaje solicitó un determinado informe deben utilizarla técnica descrita más abajo.

Opciones de informe

482 Consulta de programación de aplicaciones (ILE RPG)

Page 497: amqwak00

Utilización de la aritméticaLos pasos que siguen se realizan con la aritmética de los números enteros:1. Seleccione uno de los valores siguientes, según sea el tipo de informe que se ha

de comprobar:

Tipo de informeValor que se ha de usar

COA ROCOACOD ROCODDe excepción

ROEXCDe caducidad

ROEXP

Llame al valor A.2. Divida el campo MDREP por A; llame B al resultado.3. Divida B por 8 y llame al resultado C.4. Multiplique C por 8 y reste el resultado de B; llame a este resultado D.5. Multiplique D por A y llame al resultado E.6. Pruebe E para saber si es igual que los valores válidos para ese tipo de informe.

Por ejemplo, si A es ROEXC, pruebe si E es igual a cada uno de los valoressiguientes para averiguar qué especificó el emisor del mensaje:

RONONEROEXCROEXCDROEXCF

Las pruebas pueden realizarse en el orden que sea más apropiado para lalógica de la aplicación.

El seudocódigo siguiente ilustra esta técnica para los mensajes de informe deexcepción:A = MQRO_EXCEPTIONB = Report/AC = B/8D = B - C*8E = D*A

Se puede utilizar un método parecido para probar las opciones ROPMI o ROPCI;seleccione como valor A la constante, de entre estas dos, que le parezca apropiada yluego continúe tal como se ha descrito anteriormente, solo que sustituya el valor 8de los pasos anteriores por el valor 2.

Estructura del campo de distintivos de mensajeEl campo MDMFL es un entero de 32 bits que se divide en tres subcampos aparte.Estos subcampos identifican:v Los distintivos de mensaje que se rechazan si el gestor de colas local no los

reconocev Los distintivos de mensaje que se aceptan siempre, incluso si el gestor de colas

local no los reconocev Los distintivos de mensaje que solo se aceptan si se satisfacen ciertas

condiciones

Opciones de informe

Apéndice E. Opciones de informe 483

Page 498: amqwak00

Nota: Todos los subcampos de MDMFL están reservados para que los utilice el gestorde colas.

Cada subcampo se identifica mediante una máscara de bits que tiene bits 1 en lasposiciones que corresponden al subcampo y bits 0 en los demás lugares. Los bitsestán numerados de tal modo que el bit 0 es el más significativo y el bit 31, elmenos significativo. Para identificar los subcampos, se definen estas máscaras:

MFRUMMáscara de los distintivos de mensaje no soportados que se rechazan.

Esta máscara identifica las posiciones de bit dentro del campo MDMFL en lasque los distintivos de mensaje que no están soportados por el gestor decolas local harán que falle la llamada MQPUT o MQPUT1 con el código determinación CCFAIL y el código de razón RC2249.

Este subcampo ocupa las posiciones de bit de la 20 a la 31.

En este subcampo se incluyen los siguientes distintivos de mensaje:MFLMIGMFLSEGMFMIGMFSEGMFSEGA

MFAUMMáscara de los distintivos de mensaje no soportados que se aceptan.

Esta máscara identifica las posiciones de bit dentro del campo MDMFL en lasque los distintivos de mensaje que no están soportados por el gestor decolas local sí se aceptarán en las llamadas MQPUT o MQPUT1. El códigode terminación es CCOK.

Este subcampo ocupa las posiciones de bit de la 0 a la 11.

MFAUXMMáscara de los distintivos de mensaje no soportados que solo se aceptanen ciertas circunstancias.

Esta máscara identifica las posiciones de bit dentro del campo MDMFL en lasque los distintivos de mensaje que no están soportados por el gestor decolas local sí se aceptarán en las llamadas MQPUT o MQPUT1 siempre ycuando se satisfagan las dos siguientes condiciones:v El mensaje está destinado a un gestor de colas remoto.v La aplicación no está poniendo los mensajes directamente en una cola de

transmisión local (es decir, la cola identificada por los campos ODMN yODON del descriptor de objeto especificado en la llamada MQOPEN oMQPUT1 no es una cola de transmisión local).

Se devuelve el código de terminación CCOK si se satisfacen estascondiciones, y se devuelve CCFAIL con el código de razón RC2249 si no sesatisfacen.

Este subcampo ocupa las posiciones de bit de la 12 a la 19.

Si en el campo MDMFL se han especificado distintivos que el gestor de colas noreconoce, este comprueba cada subcampo por turno utilizando la operación AND anivel de bit para combinar el campo MDMFL con la máscara de ese subcampo. Si elresultado de esa operación no es cero, se devuelven el código de terminación y loscódigos de razón antes descritos.

Opciones de informe

484 Consulta de programación de aplicaciones (ILE RPG)

Page 499: amqwak00

Apéndice F. Conversión de datos

En este apéndice se describe la interfaz de la rutina de salida de conversión dedatos y el proceso realizado por el gestor de colas cuando es preciso efectuar laconversión de datos.

La rutina de salida de conversión de datos se invoca como parte del proceso de lallamada MQGET, con el fin de convertir los datos del mensaje de aplicación a larepresentación que requiere la aplicación receptora. La conversión de los datos delmensaje de aplicación es opcional (en la llamada MQGET debe especificarse laopción GMCONV).

Se describen los siguientes puntos:v El proceso realizado por el gestor de colas como respuesta a la opción

GMCONV; vea “Proceso de conversión”.v Los convenios de proceso empleados por el gestor de colas al procesar un

formato incorporado; estos convenios se recomiendan asimismo para las rutinasde salida escritas por el usuario. Vea “Convenios de proceso” en la página 487.

v Consideraciones especiales sobre la conversión de los mensajes de informe; vea“Conversión de los mensajes de informe” en la página 491.

v Los parámetros que se pasan a la rutina de salida de conversión de datos; vea“MQCONVX - Rutina de salida de conversión de datos” en la página 504.

v Una llamada que se puede usar desde la rutina de salida para convertir losdatos de tipo carácter entre las distintas representaciones; vea “MQXCNVC -Convertir caracteres” en la página 499.

v El parámetro estructura de datos específico de la rutina de salida; vea “MQDXP– Parámetro de rutina de salida de conversión de datos” en la página 493.

Proceso de conversiónSi se especifica la opción GMCONV en la llamada MQGET y hay un mensaje quedeba devolverse a la aplicación, el gestor de colas realiza estas acciones:1. No es preciso hacer ninguna conversión si se cumple una o varias de estas

condiciones:v Los valores de MDCSI y MDENC de la información de control del mensaje son

idénticos a los que hay en el parámetro MSGDSC.v La longitud de los datos del mensaje de aplicación es cero.v La longitud del parámetro BUFFER es cero.

En estos casos, el mensaje se devuelve sin convertir a la aplicación que emitióla llamada MQGET; los valores de MDCSI y MDENC del parámetro MSGDSC seestablecen en los valores de la información de control del mensaje; la llamadase completa con una de las siguientes combinaciones de código de terminacióny código de razón:

Código de terminaciónCódigo de razón

CCOKRCNONE

CCWARNRC2079

© Copyright IBM Corp. 1994, 2000 485

Page 500: amqwak00

CCWARNRC2080

Si resulta que el valor de MDCSI o de MDENC de la información de control delmensaje es distinto del valor que hay en el parámetro MSGDSC y además hay datosque convertir, se realizan estos pasos:2. Si el campo MDFMT de la información de control del mensaje tiene el valor

FMNONE, el mensaje se devuelve sin convertir, con el código de terminaciónCCWARN y el código de razón RC2110.En los demás casos, se sigue realizando el proceso de conversión.

3. El mensaje se elimina de la cola y se coloca en un almacenamiento intermediotemporal cuyo tamaño es el del parámetro BUFFER. En las operaciones deexaminar, el mensaje se copia en el almacenamiento intermedio, pero no seelimina de la cola.

4. Si es necesario truncar el mensaje para que quepa en el almacenamientointermedio, se realizan estas acciones:v Si no se ha especificado la opción GMATM, el mensaje se devuelve sin

convertir, con el código de terminación CCWARN y el código de razónRC2080.

v Si la opción GMATM sí se ha especificado, el código de terminación adquiereel valor CCWARN, el código de razón adquiere el valor RC2079 y el procesode conversión continúa.

5. Si el mensaje cabe en el almacenamiento intermedio sin truncarse o si se haespecificado la opción GMATM, se llevan a cabo estas acciones:v Si el formato es incorporado, se pasa el almacenamiento intermedio al

servicio de conversión de datos del gestor de colas.v Si el formato no es incorporado, se pasa el almacenamiento intermedio a una

rutina de salida escrita por usuario cuyo nombre coincide con el del formato.Si no se puede localizar la rutina de salida, el mensaje se devuelve sinconvertir, con el código de terminación CCWARN y el código de razónRC2110.

Si no se produce ningún error, la salida del servicio de conversión de datos ode la rutina de salida escrita por usuario es el mensaje convertido más elcódigo de terminación y el código de razón que se han de devolver a laaplicación que emitió la llamada MQGET.

6. Si la conversión resulta satisfactoria, el gestor de colas devuelve el mensajeconvertido a la aplicación. En tal caso, el código de terminación y el código derazón devueltos por la llamada MQGET suelen formar una de estascombinaciones:

Código de terminaciónCódigo de razón

CCOKRCNONE

CCWARNRC2079

Sin embargo, si la conversión la realiza una rutina de salida escrita por usuario,puede ser que se devuelvan otros códigos de razón, aunque la conversión hayaresultado satisfactoria.

Si (por cualquier motivo) falla la conversión, el gestor de colas devuelve elmensaje sin convertir a la aplicación, con los campos MDCSI y MDENC del

Proceso de conversión

486 Consulta de programación de aplicaciones (ILE RPG)

|||

Page 501: amqwak00

parámetro MSGDSC establecidos en los valores de la información de control delmensaje y con el código de terminación CCWARN. Más adelante figuran losposibles códigos de razón.

Convenios de procesoCuando se convierte un formato incorporado, el gestor de colas sigue losconvenios de proceso descritos más abajo. Conviene que las rutinas de salidaescritas por usuario también se ajusten a estos convenios, aunque el gestor de colasno los impone. Los formatos incorporados convertidos por el gestor de colas son:

FMADMNFMCICSFMCMD1FMCMD2FMDLHFMDHFMEVNTFMIMSFMIMVSFMMDEFMPCFFMRMHFMSTRFMTMFMXQH

1. Si el mensaje se expande durante la conversión y sobrepasa el tamaño delparámetro BUFFER, se realizan estas acciones:v Si no se ha especificado la opción GMATM, el mensaje se devuelve sin

convertir, con el código de terminación CCWARN y el código de razónRC2120.

v Si la opción GMATM sí se ha especificado, el mensaje se trunca, el códigode terminación adquiere el valor CCWARN, el código de razón adquiere elvalor RC2079 y el proceso de conversión continúa.

2. Si se produce truncamiento (ya sea antes o durante la conversión), es posibleque el número de bytes válidos devueltos en el parámetro BUFFER sea menorque la longitud del almacenamiento intermedio.Podría ocurrir esto si, por ejemplo, un entero de 4 bytes o un carácter DBCSno cabe por completo al final del almacenamiento intermedio. El elemento deinformación incompleto no se convierte, por lo que esos bytes del mensajedevuelto no contienen información válida. También podría suceder esto si unmensaje truncado antes de la conversión encogiera durante ella.Si el número de bytes válidos devueltos es menor que la longitud delalmacenamiento intermedio, los bytes no utilizados al final delalmacenamiento intermedio se establecen en nulos.

3. Si una matriz o una serie no cabe por completo al final del almacenamientointermedio, se convierte la mayor cantidad posible de datos; lo único que nose convierte es el elemento de matriz o el carácter DBCS que se quedóincompleto; los elementos de matriz o los caracteres anteriores sí seconvierten.

4. Si se produce truncamiento (ya sea antes o durante la conversión), la longituddel parámetro DATLEN que se devuelve es la longitud del mensaje no convertidoantes del truncamiento.

Proceso de conversión

Apéndice F. Conversión de datos 487

|

Page 502: amqwak00

5. Cuando las series se convierten entre los juegos de caracteres de un solo byte(SBCS), los de doble byte (DBCS) o los de múltiples bytes (MBCS), es posibleque las series se expandan o se contraigan.v En los formatos PCF FMADMN, FMEVNT y FMPCF, las series de las

estructuras MQCFST y MQCFSL se expanden o se contraen lo que seanecesario para dar cabida a la serie después de la conversión.En el caso de la estructura de lista de series MQCFSL, las series de la listase pueden expandir o contraer en distintas cantidades. Si así fuera, el gestorde colas rellena con blancos las series más cortas para que adquieran lalongitud de la serie más larga una vez realizada la conversión.

v En el formato FMRMH, las series a las que se aplican los campos RMSEO,RMSNO, RMDEO y RMDNO se expanden o se contraen lo que sea necesario paradar cabida a las series después de la conversión.

v En el formato FMRFH, el campo RFNVS se expande o se contrae lo que seapreciso para dar cabida a los pares nombre/valor después de la conversión.

v En las estructuras cuyos campos tienen un tamaño fijo, el gestor de colaspermite a las series expandirse o contraerse dentro de los campos fijos,siempre y cuando no se pierda información significativa. Con respecto aesto, los blancos finales y los caracteres que siguen al primer carácter nulodel campo se consideran no significativos.– Si la serie se expande, pero solo es necesario descartar caracteres no

significativos para que la serie convertida quepa en el campo, lasconversión resulta satisfactoria y la llamada se completa con el código determinación CCOK y el código de razón RCNONE (presuponiendo queno haya otros errores).

– Si la serie se expande, pero es preciso descartar caracteres significativosde la serie convertida para que esta quepa en el campo, el mensaje sedevuelve sin convertir y la llamada se completa con CCWARN y elcódigo de razón RC2190.

– Si la serie se contrae, el gestor de colas la rellena con blancos hasta queadquiere la longitud del campo.

6. En el caso de los mensajes que constan de una o varias estructuras decabecera MQ seguidas de datos de usuario, es posible que se conviertan una ovarias de las estructuras de cabecera, mientras el resto del mensaje se quedasin convertir. Sin embargo, (con dos excepciones) los campos MDCSI y MDENC decada estructura de cabecera siempre indican correctamente el juego decaracteres y la codificación de los datos que siguen a la estructura de cabecera.Las dos excepciones son las estructuras MQCIH y MQIIH, donde los valoresde los campos MDCSI y MDENC de esas estructuras no son significativos. En elcaso de esas estructuras, los datos que siguen a la estructura tienen el mismojuego de caracteres y la misma codificación que la propia estructura MQCIH oMQIIH.

7. Si los campos MDCSI o MDENC de la información de control del mensaje que seestá recuperando o del parámetro MSGDSC especifican valores que no estándefinidos o soportados, el gestor de colas puede hacer caso omiso del error siel valor no definido o no soportado no se tiene que usar al convertir elmensaje.Por ejemplo, si el campo MDENC del mensaje especifica una codificación decoma flotante no soportada, pero el mensaje solo contiene datos de tipo enteroo contiene datos de tipo coma flotante que no es preciso convertir (porque lascodificaciones de coma flotante origen y destino son idénticas), puede ser queel error se diagnostique o que no.

Convenios de proceso

488 Consulta de programación de aplicaciones (ILE RPG)

|||

|||

||||

|||

||

|||||

|||||

||||

||

|

Page 503: amqwak00

Si el error se diagnostica, el mensaje se devuelve sin convertir, con el códigode terminación CCWARN y uno de estos códigos de razón: RC2111, RC2112,RC2113, RC2114 o bien RC2115, RC2116, RC2117, RC2118 (según corresponda);los campos MDCSI y MDENC del parámetro MSGDSC adquieren los valores de lainformación de control que hay en el mensaje.Si el error no se diagnostica y la conversión se completa satisfactoriamente, losvalores devueltos en los campos MDCSI y MDENC del parámetro MSGDSC son losespecificados por la aplicación que emite la llamada MQGET.

8. En todos los casos, si el mensaje se devuelve a la aplicación sin convertir, elcódigo de terminación adquiere el valor CCWARN y los campos MDCSI yMDENC del parámetro MSGDSC se establecen en los valores apropiados de losdatos sin convertir. Esto también se realiza para FMNONE.El parámetro REASON se establece en un código que indica por qué no se pudollevar a cabo la conversión, a menos que el mensaje también se haya tenidoque truncar; los códigos de razón relacionados con el truncamiento tienenprioridad sobre los códigos de razón relacionados con la conversión. (Paraaveriguar si se ha convertido un mensaje truncado, compruebe los valoresdevueltos en los campos MDCSI y MDENC del parámetro MSGDSC).Cuando se diagnostica un error, se devuelve ya sea el código de razónespecífico o el código de razón general, que es RC2119. El código de razóndevuelto depende de las posibilidades de diagnóstico del servicio deconversión de datos subyacente.

9. Si se devuelve el código de terminación CCWARN y hay más de un código derazón relevante, el orden de prioridad es el que figura a continuación.a. Las siguientes razones tienen prioridad sobre todas las demás:

RC2079b. Por orden de prioridad, la siguiente razón es:

RC2110c. El orden de prioridad de los demás códigos de razón no está definido.

10. Al completarse la llamada MQGET:v El siguiente código de razón indica que el mensaje se ha convertido

satisfactoriamente:RCNONE

v El siguiente código de razón indica que el mensaje puede haberse convertidosatisfactoriamente (compruebe los campos MDCSI y MDENC del parámetroMSGDSC para averiguarlo):

RC2079v Todos los demás códigos de razón indican que el mensaje no se ha

convertido.

El proceso siguiente es específico de los formatos incorporados; no es aplicable alos formatos definidos por el usuario:11. Con la excepción de los formatos siguientes:

FMADMNFMEVNTFMIMVSFMPCFFMSTR

Ninguno de los formatos incorporados se puede convertir a juegos decaracteres (ni desde ellos) que no tengan caracteres SBCS para los caracteresque son válidos para los nombres de cola. Si se intenta hacer una conversión

Convenios de proceso

Apéndice F. Conversión de datos 489

||||||

|||

Page 504: amqwak00

así, se devuelve el mensaje sin convertir, con el código de terminaciónCCWARN y el código de razón RC2111 o RC2115, según corresponda.

El juego de caracteres Unicode UCS-2 es un ejemplo de juego de caracteresque no tiene caracteres SBCS para los caracteres válidos de los nombres decola.

12. Si, en el caso de un formato incorporado, se truncan los datos del mensaje, loscampos del mensaje que contienen longitudes de series o cuentas deelementos o de estructuras no se ajustan para reflejar la longitud de los datosque realmente se han devuelto a la aplicación; los valores de esos campos delos datos del mensaje que se devuelven son los valores aplicables al mensajeantes del truncamiento.Cuando se procesan mensajes como un mensaje FMADMN truncado, hay quetener la precaución de asegurar que la aplicación no intente acceder a losdatos más allá del final de los datos devueltos.

13. Si el nombre del formato es FMDLH, los datos del mensaje empiezan por unaestructura MQDLH, que puede ir seguida de cero o más bytes de datos delmensaje de aplicación. Los campos DLFMT, DLCSI y DLENC de la estructuraMQDLH son los que definen el formato, la codificación y los datos delmensaje de aplicación al principio del mensaje. Debido a que la estructuraMQDLH y los datos del mensaje de aplicación tienen distintas codificacionesy distintos juegos de caracteres, es posible que sea preciso convertir laestructura MQDLH y/o los datos del mensaje de aplicación.El gestor de colas convierte la estructura MQDLH en primer lugar, si esnecesario. Si la conversión es satisfactoria o si no es necesario convertir laestructura MQDLH, el gestor de colas comprueba los campos DLCSI y DLENCde la estructura MQDLH para ver si es preciso convertir los datos del mensajede aplicación. Si es preciso convertirlos, el gestor de colas invoca la rutina desalida escrita por usuario que tiene el nombre dado por el campo DLFMT de laestructura MQDLH, o bien él mismo realiza la conversión (si el campo DLFMTes el nombre de un formato incorporado).Si la llamada MQGET devuelve el código de terminación CCWARN y elcódigo de razón es uno de los que indican que no se ha podido hacer laconversión, es que se ha dado una de las siguientes situaciones:v No se ha podido convertir la estructura MQDLH. En este caso, tampoco se

habrán convertido los datos del mensaje de aplicación.v Se ha convertido la estructura MQDLH, pero no así los datos del mensaje

de aplicación.

La aplicación puede examinar los valores devueltos en los campos MDCSI yMDENC del parámetro MSGDSC, así como los de la estructura MQDLH, paraaveriguar cuál de las dos situaciones anteriores se ha dado.

14. Si el nombre del formato es FMXQH, los datos del mensaje empiezan por unaestructura MQXQH, que puede ir seguida de cero o más bytes de datosadicionales. Estos datos adicionales suelen ser los datos del mensaje deaplicación (cuya longitud puede ser cero), pero también puede haber una ovarias estructuras de cabecera MQ más situadas al principio de los datosadicionales.La estructura MQXQH debe tener el juego de caracteres y la codificación delgestor de colas. Los campos MDFMT, MDCSI y MDENC de la estructura MQMD queestán dentro de la estructura MQXQH son los que proporcionan el formato, eljuego de caracteres y la codificación de los datos que siguen a la estructuraMQXQH. Para cada estructura de cabecera MQ ulterior que esté presente, los

Convenios de proceso

490 Consulta de programación de aplicaciones (ILE RPG)

||

|||

Page 505: amqwak00

campos MDFMT, MDCSI y MDENC de la estructura describen los datos que siguen aesa estructura; esos datos pueden ser otra estructura de cabecera MQ o bienlos datos del mensaje de aplicación.Si se especifica la opción GMCONV para un mensaje FMXQH, se conviertenlos datos del mensaje de aplicación y algunas de las estructuras de cabeceraMQ, pero no así los datos que hay en la estructura MQXQH. Por lo tanto, en ladevolución de la llamada MQGET:v Los valores de los campos MDFMT, MDCSI y MDENC del parámetro MSGDSC

describen los datos de la estructura MQXQH, no los datos del mensaje deaplicación; por ello, los valores no coincidirán con los especificados por laaplicación que emitió la llamada MQGET.Como consecuencia de ello, la aplicación que obtiene repetidamentemensajes de una cola de transmisión teniendo especificada la opciónGMCONV debe restablecer, antes de cada llamada MQGET, los camposMDCSI y MDENC del parámetro MSGDSC, dándoles los valores deseados para losdatos del mensaje de aplicación.

v Los valores de los campos MDFMT, MDCSI y MDENC de la última estructura decabecera MQ que estaba presente describen los datos del mensaje deaplicación. Si no hay ninguna otra estructura de cabecera MQ, los datos delmensaje de aplicación los describen estos campos de la estructura MQMDque hay dentro de la estructura MQXQH. Si la conversión es satisfactoria,los valores serán idénticos a los especificados en el parámetro MSGDSC por laaplicación que emitió la llamada MQGET.

Si se trata de un mensaje de lista de distribución, la estructura MQXQH vaseguida de una estructura MQDH (más las correspondientes matrices deregistros MQOR y MQPMR), que a su vez puede ir seguida de cero o másestructuras de cabecera MQ adicionales y de cero o más bytes de datos delmensaje de aplicación. Al igual que la estructura MQXQH, la estructuraMQDH debe tener el juego de caracteres y la codificación del gestor de colas,y no se convierte en la llamada MQGET, ni siquiera si se especifica la opciónGMCONV.

El proceso de las estructuras MQXQH y MQDH antes descrito está pensadoprincipalmente para que lo utilicen los agentes de canal de mensajes (MCA)cuando obtienen mensajes de la cola de transmisión.

Conversión de los mensajes de informeUn mensaje de informe puede contener cantidades variables de datos de mensajede aplicación, en función de las opciones especificadas por el emisor del mensajeoriginal. En concreto, un mensaje de informe puede:1. No contener ningún dato de mensaje de aplicación2. Contener algunos de los datos de mensaje de aplicación del mensaje original

Esto ocurre cuando el emisor del mensaje original especifica RO*D y el mensajetiene más de 100 bytes.

3. Contener todos los datos de mensaje de aplicación del mensaje originalEsto ocurre cuando el emisor del mensaje original especifica RO*F o bienespecifica RO*D y la longitud del mensaje es menor o igual que 100 bytes.

El gestor de colas o el agente de canal de mensajes, cuando generan un mensaje deinforme, copian el nombre de formato del mensaje original en el campo MDFMT quehay en la información de control del mensaje de informe. Por lo tanto, el nombre

Convenios de proceso

Apéndice F. Conversión de datos 491

Page 506: amqwak00

de formato del mensaje de informe puede tener implícita una longitud de datosque sea distinta de la longitud que está realmente presente en el mensaje deinforme (los casos 1 y 2, más arriba).

Si se especifica la opción GMCONV al recuperar el mensaje de informe:v En el caso 1 anterior, no se invocará la rutina de salida de conversión de datos

(porque el mensaje de informe no tiene datos).v En el caso 3 anterior, la longitud de los datos del mensaje está correctamente

implícita en el nombre del formato.v Pero en el caso 2 anterior, se invocará la rutina de salida de conversión de datos

con el fin de convertir un mensaje cuya longitud es menor que la longitudimplícita en el nombre del formato.Además, el código de razón que se pasa a la rutina de salida será habitualmenteRCNONE (es decir, el código de razón no indicará que se ha truncado elmensaje). Ello se debe a que ha sido el emisor del mensaje de informe el que hatruncado los datos del mensaje, en vez de hacerlo el gestor de colas del receptoral responder a la llamada MQGET.

A causa de estas posibilidades, la rutina de salida de conversión de datos no debeusar el nombre de formato para deducir la longitud de los datos que le hanpasado; por el contrario, la rutina de salida debe comprobar la longitud de losdatos proporcionados y estar preparada para convertir menos datos que los queestán implícitos en la longitud del nombre de formato. Si los datos se puedenconvertir satisfactoriamente, la rutina de salida debe devolver el código determinación CCOK y el código de razón RCNONE. La longitud de los datos demensaje que se tienen que convertir se pasa a la rutina de salida como parámetroINLEN.

Conversión de los mensajes de informe

492 Consulta de programación de aplicaciones (ILE RPG)

Page 507: amqwak00

Interfaz de programación sensible al producto

MQDXP – Parámetro de rutina de salida de conversión de datosLa siguiente tabla resume los campos de la estructura.

Tabla 59. Campos de MQDXP

Campo Descripción Página

DXSID Identificador de estructura 493

DXVER Número de versión de estructura 494

DXAOP Opciones de aplicación 494

DXENC Codificación de tipo numérico requerida por laaplicación

494

DXCSI Juego de caracteres requerido por la aplicación 494

DXLEN Longitud en bytes de los datos del mensaje 495

DXCC Código de terminación 495

DXREA Código de razón que califica a DXCC 496

DXRES Respuesta de la rutina de salida 497

DXHCN Asa de conexión 498

La estructura MQDXP es un parámetro que se pasa a la rutina de salida deconversión de datos. En la descripción de la llamada MQCONVX encontrarádetalles de la rutina de salida de conversión de datos.

Los campos DXLEN, DXCC, DXREA y DXRES de MQDXP son los únicos que la rutina desalida puede cambiar; los cambios realizados en los demás campos no se tienen encuenta. Sin embargo, el campo DXLEN no se puede cambiar si el mensaje que se estáconvirtiendo es un segmento que solo contiene parte del mensaje lógico.

Cuando la rutina de salida devuelve el control al gestor de colas, este compruebalos valores devueltos en MQDXP. Si no son válidos, el gestor de colas continúa elproceso como si la rutina de salida hubiese devuelto XRFAIL en DXRES; sinembargo, el gestor de colas hace caso omiso de los valores de los campos DXCC yDXREA devueltos por la rutina de salida en este caso y utiliza en su lugar los valoresque estos campos tenían como entrada de la rutina de salida. Los valores deMQDXP que dan lugar a este proceso son los siguientes:v El campo DXRES no es XROK ni XRFAILv El campo DXCC no es CCOK ni CCWARNv El campo DXLEN es menor que cero o bien el campo DXLEN ha cambiado, pero el

mensaje que se está convirtiendo es un segmento que solo contiene parte delmensaje lógico.

CamposDXSID (serie de caracteres de 4 bytes)

Identificador de estructura.

El valor debe ser:

DXSIDVIdentificador de la estructura de parámetro de la rutina de salida deconversión de datos.

MQDXP - Parámetro de rutina de salida de conversión de datos

Apéndice F. Conversión de datos 493

Page 508: amqwak00

Es un campo de entrada de la rutina de salida.

DXVER (entero con signo de 10 dígitos)Número de versión de la estructura.

El valor debe ser:

DXVER1Número de versión de la estructura de parámetro de la rutina desalida de conversión de datos.

La siguiente constante especifica el número de la versión actual:

DXVERCVersión actual de la estructura de parámetro de la rutina de salida deconversión de datos.

Nota: Cuando se introduce una versión nueva de esta estructura, el diseño dela parte existente no varía. Por lo tanto, la rutina de salida debecomprobar que el campo DXVER es igual o mayor que la versión inferiorque contiene los campos que la rutina de salida necesita utilizar.

Es un campo de entrada de la rutina de salida.

DXXOP (entero con signo de 10 dígitos)Reservado.

Es un campo reservado; su valor es 0.

DXAOP (entero con signo de 10 dígitos)Opciones de la aplicación.

Es una copia del campo GMOPT de la estructura MQGMO especificada por laaplicación que emite la llamada MQGET. La rutina de salida puede tener queexaminarlas para averiguar si se ha especificado la opción GMATM.

Es un campo de entrada de la rutina de salida.

DXENC (entero con signo de 10 dígitos)Codificación de tipo numérico requerida por la aplicación.

Es la codificación de tipo numérico requerida por la aplicación que emite lallamada MQGET; en el campo MDENC de la estructura MQMD hallará másdetalles.

Si la conversión resulta satisfactoria, la rutina de salida debe copiar este campoen el campo MDENC del descriptor de mensaje.

Es un campo de entrada de la rutina de salida.

DXCSI (entero con signo de 10 dígitos)Juego de caracteres requerido por la aplicación.

Es el identificador del juego de caracteres codificado requerido por laaplicación que emite la llamada MQGET; hallará más detalles en el campoMDCSI de la estructura MQMD. Si la aplicación especifica el valor especialCSQM en la llamada MQGET, el gestor de colas, antes de invocar la rutina desalida, cambia este valor por el identificador real del juego de caracteresutilizado por el gestor de colas.

MQDXP - Parámetro de rutina de salida de conversión de datos

494 Consulta de programación de aplicaciones (ILE RPG)

Page 509: amqwak00

Si la conversión resulta satisfactoria, la rutina de salida debe copiar este valoren el campo MDCSI del descriptor de mensaje.

Es un campo de entrada de la rutina de salida.

DXLEN (entero con signo de 10 dígitos)Longitud en bytes de los datos del mensaje.

Cuando se invoca la rutina de salida, este campo contiene la longitud originalde los datos del mensaje de aplicación. Si se ha truncado el mensaje para quequepa en el almacenamiento intermedio proporcionado por la aplicación, eltamaño del mensaje suministrado a la rutina de salida será menor que el valorde DXLEN. El tamaño del mensaje suministrado realmente a la rutina de salidasiempre lo proporciona el parámetro INLEN de la rutina de salida, sin tener encuenta el truncamiento que pueda haberse producido.

El truncamiento lo indica el campo DXREA que tiene el valor RC2079 comoentrada de la rutina de salida.

La mayoría de las conversiones no tendrán que cambiar esta longitud, perouna rutina de salida lo puede hacer si fuese necesario; el valor establecido porla rutina de salida se devuelve a la aplicación en el parámetro DATLEN de lallamada MQGET. Sin embargo, no se puede cambiar esta longitud si el mensajeque se está convirtiendo es un segmento que solo contiene parte de un mensajelógico. Ello se debe a que, si se cambia la longitud, podrían ser incorrectos losdesplazamientos de los segmentos posteriores del mensaje lógico.

Tenga presente que, si la rutina de salida quiere cambiar la longitud de losdatos, el gestor de colas ya habrá decidido si los datos del mensaje caben en elalmacenamiento intermedio de la aplicación, basándose en los datos noconvertidos. Esta decisión determina si el mensaje se elimina de la cola (o si semueve el cursor de examinar, en el caso de una petición de examinar) y si noresulta afectado por los cambios que haya podido sufrir la longitud de losdatos como consecuencia de la conversión. Por ello, se recomienda que lasrutinas de salida de conversión no provoquen cambios en la longitud de losdatos del mensaje de aplicación.

Si la conversión de caracteres implica un cambio de longitud, una serie sepuede convertir en otra que tenga la misma longitud en bytes, truncando losblancos finales o rellenando con blancos según convenga.

No se invocará la rutina de salida si el mensaje no contiene datos de mensajede aplicación; por lo que DXLEN siempre es mayor que cero.

Es un campo de entrada/salida de la rutina de salida.

DXCC (entero con signo de 10 dígitos)Código de terminación.

Cuando se invoca la rutina de salida, este campo contiene el código determinación que se devolverá a la aplicación que emitió la llamada MQGET, sila rutina de salida opta por no hacer nada. Siempre es CCWARN, ya seaporque el mensaje se ha truncado o porque necesita convertirse y aún no se harealizado la conversión.

En la salida de la rutina de salida, este campo contiene el código determinación que se ha de devolver a la aplicación en el parámetro CMPCOD de la

MQDXP - Parámetro de rutina de salida de conversión de datos

Apéndice F. Conversión de datos 495

Page 510: amqwak00

llamada MQGET; solo son válidos los códigos CCOK y CCWARN. Vea ladescripción del campo DXREA para obtener recomendaciones sobre cómo debela rutina de salida establecer este campo en la salida.

Es un campo de entrada/salida de la rutina de salida.

DXREA (entero con signo de 10 dígitos)Código de razón que califica a DXCC.

Cuando se invoca la rutina de salida, este campo contiene el código de razónque se devolverá a la aplicación que emitió la llamada MQGET, si la rutina desalida opta por no hacer nada. Entre los valores posibles se encuentra RC2079,que indica que el mensaje se ha truncado para que quepa en elalmacenamiento intermedio proporcionado por la aplicación, y RC2119, queindica que es preciso convertir el mensaje pero que la conversión aún no se harealizado.

En la salida de la rutina de salida, este campo contiene la razón que se ha dedevolver a la aplicación en el parámetro REASON de la llamada MQGET; tengaen cuenta estas recomendaciones:v Si DXREA tenía el valor RC2079 en la entrada de la rutina de salida, no deben

alterarse los campos DXREA y DXCC, tanto si la conversión es satisfactoriacomo si falla.(Si el campo DXCC no es CCOK, la aplicación que recupera el mensaje puedeidentificar si la conversión ha sido anómala comparando los valores deMDENC y MDCSI devueltos en el descriptor de mensaje con los valoressolicitados; en cambio, la aplicación no puede distinguir entre un mensajetruncado y un mensaje que ha cabido en el almacenamiento intermedio. Porello, es preferible devolver RC2079 que cualquier otra razón que indique unaanomalía de conversión).

v Si DXREA tenía cualquier otro valor en la entrada de la rutina de salida:– Si la conversión resulta satisfactoria, DXCC debe establecerse en CCOK y

DXREA en RCNONE.– Si falla la conversión o si el mensaje aumenta de longitud y debe

truncarse para caber en el almacenamiento intermedio, DXCC debeestablecerse en CCWARN (o no variar) y DXREA debe establecerse en unode los valores que se indican en la lista siguiente, para mostrar lanaturaleza del error.Tenga presente que si, tras la conversión, el mensaje es demasiado grandepara el almacenamiento intermedio, solo se truncará si la aplicación queemitió la llamada MQGET especificaba la opción GMATM:- Si especificaba esta opción, se devolverá la razón RC2079.- Si no especificaba esa opción, se devolverá el mensaje sin convertir, con

el código de razón RC2120.

Conviene que la rutina de salida utilice los códigos de razón listados más abajopara indicar por qué razón fue anómala la conversión, pero la rutina de salidapuede devolver otros valores del conjunto de códigos RC* si se consideraconveniente. Además, los valores comprendidos entre RC0900 y RC0999 seasignan a la rutina de salida para que los utilice con el fin de indicar lascondiciones que quiere comunicar a la aplicación que emite la llamadaMQGET.

MQDXP - Parámetro de rutina de salida de conversión de datos

496 Consulta de programación de aplicaciones (ILE RPG)

||||

Page 511: amqwak00

Nota: Si no se puede convertir el mensaje satisfactoriamente, la rutina desalida debe devolver XRFAIL en el campo DXRES para que así el gestor decolas devuelva el mensaje sin convertir. Esto es válido en todos loscasos, sea cual sea el código de razón devuelto en el campo DXREA.

RC0900(900, X'384') El valor más bajo de un código de razón definido poraplicación y devuelto por una rutina de salida de conversión de datos.

RC0999(999, X'3E7') El valor más alto de un código de razón definido poraplicación y devuelto por una rutina de salida de conversión de datos.

RC2120(2120, X'848') Los datos convertidos son demasiado grandes para elalmacenamiento intermedio.

RC2119(2119, X'847') Los datos del mensaje no se han convertido.

RC2111(2111, X'83F') El identificador de juego de caracteres codificado origenno es válido.

RC2113(2113, X'841') Codificación de decimal empaquetado del mensaje noreconocida.

RC2114(2114, X'842') Codificación de coma flotante del mensaje no reconocida.

RC2112(2112, X'840') Codificación de entero origen no reconocida.

RC2115(2115, X'843') El identificador de juego de caracteres codificado destinono es válido.

RC2117(2117, X'845') Codificación de decimal empaquetado especificada porreceptor no reconocida.

RC2118(2118, X'846') Codificación de coma flotante especificada por receptorno reconocida.

RC2116(2116, X'844') Codificación de entero destino no reconocida.

RC2079(2079, X'81F') Se ha devuelto un mensaje truncado (el proceso se hacompletado).

Es un campo de entrada/salida de la rutina de salida.

DXRES (entero con signo de 10 dígitos)Respuesta de la rutina de salida.

La rutina de salida establece este campo para indicar si la conversión ha sido ono satisfactoria. Debe tener uno de estos valores:

XROK Conversión satisfactoria.

Si la rutina de salida especifica este valor, el gestor de colas devuelvelo siguiente a la aplicación que emitió la llamada MQGET:v El valor del campo DXCC en la salida de la rutina de salida.v El valor del campo DXREA en la salida de la rutina de salida.v El valor del campo DXLEN en la salida de la rutina de salida.

MQDXP - Parámetro de rutina de salida de conversión de datos

Apéndice F. Conversión de datos 497

||||||

Page 512: amqwak00

v El contenido del almacenamiento intermedio de salida OUTBUF de larutina de salida; el número de bytes devueltos es el menor de estosdos valores: el del parámetro OUTLEN de la rutina de salida y el valordel campo DXLEN en la salida de la rutina de salida.

v El valor del campo MDENC del parámetro descriptor de mensaje de larutina de salida en la salida de la rutina de salida.

v El valor del campo MDCSI del parámetro descriptor de mensaje de larutina de salida en la salida de la rutina de salida.

XRFAILConversión no satisfactoria.

Si la rutina de salida especifica este valor, el gestor de colas devuelvelo siguiente a la aplicación que emitió la llamada MQGET:v El valor del campo DXCC en la salida de la rutina de salida.v El valor del campo DXREA en la salida de la rutina de salida.v El valor del campo DXLEN en la entrada de la rutina de salida.v El contenido del almacenamiento intermedio de entrada INBUF de la

rutina de salida; el número de bytes devueltos los da el parámetroINLEN.

Si la rutina de salida ha alterado INBUF, los resultados sonimprevisibles.

DXRES es un campo de salida de la rutina de salida.

DXHCN (entero con signo de 10 dígitos)Asa de conexión.

Este campo es un asa de conexión que se puede emplear en la llamadaMQXCNVC. Esta asa no tiene por qué coincidir con el asa especificada por laaplicación que emitió la llamada MQGET.

Declaración RPG (ILE)D*..1....:....2....:....3....:....4....:....5....:....6....:....7..D* Estructura MQDXPD*D* Identificador de estructuraD DXSID 1 4D* Número de versión de estructuraD DXVER 5 8I 0D* ReservadoD DXXOP 9 12I 0D* Opciones de la aplicaciónD DXAOP 13 16I 0D* Codificación de tipo numérico requirida por la aplicaciónD DXENC 17 20I 0D* Juego de caracteres requerido por la aplicaciónD DXCSI 21 24I 0D* Longitud en bytes de los datos del mensajeD DXLEN 25 28I 0D* Código de terminaciónD DXCC 29 32I 0D* Código de razón que califica a CompCodeD DXREA 33 36I 0D* Respuesta de la rutina de salidaD DXRES 37 40I 0D* Asa de conexiónD DXHCN 41 44I 0

MQDXP - Parámetro de rutina de salida de conversión de datos

498 Consulta de programación de aplicaciones (ILE RPG)

Page 513: amqwak00

MQXCNVC - Convertir caracteresLa llamada MQXCNVC convierte los caracteres de un juego de caracteres a otro.

Esta llamada forma parte de la DCI (interfaz de conversión de datos) de MQSeries,que es una de las interfaces de la Infraestructura MQSeries. Nota: esta llamada solose puede usar desde una rutina de salida de conversión de datos.

Sintaxis

ParámetrosHCONN (entero con signo de 10 dígitos) – entrada

Asa de conexión.

Esta asa representa la conexión con el gestor de colas. Debe ser normalmente elasa que se pasa a la rutina de salida de conversión de datos en el campo DXHCNde la estructura MQDXP; esta asa no tiene por qué coincidir con la especificadapor la aplicación que emitió la llamada MQGET.

En OS/400, se puede especificar para HCONN el siguiente valor especial:

HCDEFHAsa de conexión por omisión.

OPTS (entero con signo de 10 dígitos) – entradaOpciones que controlan la acción de MQXCNVC.

Se pueden especificar cero o más de las opciones descritas más abajo. Si serequiere más de una, los valores se pueden añadir al mismo tiempo (pero nose puede añadir una misma constante más de una vez).

Opción de conversión por omisión: la siguiente opción controla el uso de laconversión de caracteres por omisión:

DCCDEFConversión por omisión.

Esta opción especifica que se puede utilizar la conversión de caracterespor omisión si no está soportado uno o ninguno de los juegos decaracteres especificados en la llamada. Ello permite que el gestor decolas, cuando convierta la serie, emplee un juego de caracteres poromisión especificado por la instalación y que se aproxima al juego decaracteres real.

Nota: El resultado de utilizar un juego de caracteres aproximado paraconvertir la serie es que algunos caracteres tal vez no seconviertan como es debido. Para evitarlo, solo se utilizan loscaracteres de la serie que son comunes a los dos juegos decaracteres, el real, especificado en la llamada, y el que se tomapor omisión.

Para especificar el juego de caracteres por omisión, se utiliza unaopción de configuración en el momento de instalar o reiniciar el gestorde colas.

MQXCNVC (HCONN, OPTS, SRCCSI, SRCLEN, SRCBUF, TGTCSI, TGTLEN,TGTBUF, DATLEN, CMPCOD, REASON)

MQDXP - Parámetro de rutina de salida de conversión de datos

Apéndice F. Conversión de datos 499

Page 514: amqwak00

Si no se especifica DCCDEF, el gestor de colas solo emplea los juegosde caracteres especificados para convertir la serie, y la llamada falla siuno o ninguno de ellos está soportado.

Opción de rellenar: la siguiente opción permite al gestor de colas rellenar conblancos la serie convertida o descartar los caracteres finales no significativos,para que así la serie convertida quepa en el almacenamiento intermediodestino:

DCCFILLlenar el almacenamiento intermedio destino.

Esta opción solicita que la conversión se realice de tal forma que elalmacenamiento intermedio destino quede completamente lleno:v Si la serie se contrae tras la conversión, se añaden blancos finales

para llenar el almacenamiento intermedio destino.v Si la serie se expande al convertirse, se descartan los caracteres

finales no significativos para que así la serie convertida quepa en elalmacenamiento intermedio destino. Si esto se puede llevar a cabosatisfactoriamente, la llamada se completa con el código determinación CCOK y el código de razón RCNONE.Si no es suficiente el número de caracteres finales no significativosque se puedan descartar, se coloca en el almacenamiento intermediodestino todo lo que quepa de la serie y la llamada se completa conCCWARN y el código de razón RC2120.Los caracteres no significativos son estos:– Los blancos finales– Los caracteres que siguen al primer carácter nulo de la serie (sin

contar el primer carácter nulo)v Si la serie, TGTCSI y TGTLEN son tales que el almacenamiento

intermedio destino no se puede establecer completamente concaracteres válidos, la llamada falla con CCFAIL y con el código derazón RC2144. Esto puede ocurrir cuando TGTCSI es un juego decaracteres totalmente DBCS (como UCS-2), pero TGTLEN especificauna longitud que es un número impar de bytes.

v TGTLEN puede ser menor o mayor que SRCLEN. En la devolución deMQXCNVC, DATLEN tiene el mismo valor que TGTLEN.

Si esta opción no se especifica:v La serie puede contraerse o expandirse dentro del almacenamiento

intermedio destino según sea necesario. Los caracteres finales nosignificativos no se añaden ni se descartan.Si la serie convertida cabe en el almacenamiento intermedio destino,la llamada se completa con CCOK y con el código de razónRCNONE.Si la serie convertida es demasiado grande para el almacenamientointermedio destino, se coloca en este todo lo que quepa de la serie yla llamada se completa con CCWARN y con el código de razónRC2120. Fíjese que en este caso puede ser que se devuelvan menosbytes que el indicado por TGTLEN.

v TGTLEN puede ser menor o mayor que SRCLEN. En la devolución deMQXCNVC, DATLEN es igual o menor que TGTLEN.

MQDXP - Parámetro de rutina de salida de conversión de datos

500 Consulta de programación de aplicaciones (ILE RPG)

|

|

||

||

||

|||||

||||

||||

||||||

||

|

|||

|||

|||||

||

Page 515: amqwak00

Opciones de codificación: las opciones que se describen más abajo permitenespecificar las codificaciones de entero de la serie origen y de la serie destino.Solo se utiliza la codificación pertinente cuando el correspondiente identificadorde juego de caracteres indica que la representación del juego de caracteresexistente en el almacenamiento principal depende de la codificación utilizadapara los enteros binarios. Ello solo afecta a ciertos juegos de caracteresmultibyte (por ejemplo, a los juegos de caracteres UCS-2).

Se hace caso omiso de la codificación si el juego de caracteres es de un solobyte (SBCS) o si es un juego de caracteres multibyte cuya representación en elalmacenamiento principal no depende de la codificación de entero.

Solo debe especificarse uno de los valores de tipo DCCS* en combinación conuno de los valores de tipo DCCT*:

DCCSNALa codificación origen es el valor por omisión del entorno y dellenguaje de programación.

DCCSNOLa codificación origen es normal.

DCCSRELa codificación origen es inversa.

DCCSUNLa codificación origen no está definida.

DCCTNALa codificación destino es el valor por omisión del entorno y dellenguaje de programación.

DCCTNOLa codificación destino es normal.

DCCTRELa codificación destino es inversa.

DCCTUNLa codificación destino no está definida.

Los valores de codificación antes definidos se pueden añadir directamente alcampo OPTS. Sin embargo, si la codificación origen o destino se obtiene delcampo MDENC de MQMD o de otra estructura, es preciso realizar este proceso:1. La codificación de entero se debe extraer del campo MDENC eliminando las

codificaciones de coma flotante y decimal empaquetado; en “Análisis decodificaciones” en la página 479 hallará los detalles de cómo puede hacerlo.

2. La codificación de entero obtenida del paso 1 se debe multiplicar por elfactor adecuado antes de añadirla al campo OPTS. Los factores son estos:

DCCSFAFactor de codificación origen

DCCTFAFactor de codificación destino

Si no se especifican, las opciones de codificación toman por omisión el valorque indica que no están definidas (DCC*UN). En la mayoría de los casos, ellono afecta a la conclusión satisfactoria de la llamada MQXCNVC. Sin embargo,si el correspondiente juego de caracteres es un juego de caracteres multibyte

MQDXP - Parámetro de rutina de salida de conversión de datos

Apéndice F. Conversión de datos 501

|

Page 516: amqwak00

cuya representación depende de la codificación (por ejemplo, un juego decaracteres UCS-2), la llamada falla con el código de razón RC2112 o RC2116,según corresponda.

Opción por omisión: si no se especifica ninguna de las opciones antesdescritas, se puede utilizar la siguiente opción:

DCCNONNo se ha especificado ninguna opción.

Se ha definido la opción DCCNON como ayuda para ladocumentación del programa. Esta opción no está destinada autilizarse con ninguna otra, pero como su valor es cero, no es posibledetectarla en el caso de que se utilice.

SRCCSI (entero con signo de 10 dígitos) – entradaIdentificador de juego de caracteres codificado de la serie antes de laconversión.

Es el identificador de juego de caracteres codificado de la serie de entrada deSRCBUF.

SRCLEN (entero con signo de 10 dígitos) – entradaLongitud de la serie antes de la conversión.

Es la longitud en bytes de la serie de entrada de SRCBUF; debe ser igual omayor que cero.

SRCBUF (serie de caracteres de 1 byte×SRCLEN) – entradaLa serie que se ha de convertir.

Es el almacenamiento intermedio que contiene la serie que se ha de convertirde un juego de caracteres a otro.

TGTCSI (entero con signo de 10 dígitos) – entradaIdentificador de juego de caracteres codificado de la serie después de laconversión.

Es el identificador del juego de caracteres codificado al que se ha de convertirSRCBUF.

TGTLEN (entero con signo de 10 dígitos) – entradaLongitud del almacenamiento intermedio de salida.

Es la longitud en bytes del almacenamiento intermedio de salida TGTBUF; debeser igual o mayor que cero. Puede ser menor o mayor que SRCLEN.

TGTBUF (serie de caracteres de 1 byte×TGTLEN) – salidaLa serie después de la conversión.

Es la serie después de haberse convertido al juego de caracteres definido porTGTCSI. La serie convertida puede ser más corta o más larga que la serie sinconvertir. El parámetro DATLEN indica el número de bytes válidos devueltos.

DATLEN (entero con signo de 10 dígitos) – salidaLongitud de la serie de salida.

Es la longitud de la serie devuelta en el almacenamiento intermedio de salidaTGTBUF. La serie convertida puede ser más corta o más larga que la serie sinconvertir.

MQDXP - Parámetro de rutina de salida de conversión de datos

502 Consulta de programación de aplicaciones (ILE RPG)

Page 517: amqwak00

CMPCOD (entero con signo de 10 dígitos) – salidaCódigo de terminación.

Es uno de los siguientes:CCOK

Conclusión satisfactoria.CCWARN

Aviso (conclusión parcial).CCFAIL

La llamada ha fallado.

REASON (entero con signo de 10 dígitos) – salidaCódigo de razón que califica a CMPCOD.

Si CMPCOD es CCOK:RCNONE

(0, X'000') No hay ninguna razón que notificar.

Si CMPCOD es CCWARN:RC2120

(2120, X'848') Los datos convertidos son demasiado grandes para elalmacenamiento intermedio.

Si CMPCOD es CCFAIL:RC2010

(2010, X'7DA') El parámetro longitud de datos no es válido.RC2150

(2150, X'866') La serie DBCS no es válida.RC2018

(2018, X'7E2') El asa de conexión no es válida.RC2046

(2046, X'7FE') Las opciones no son válidas o no son coherentes.RC2102

(2102, X'836') No hay suficientes recursos del sistema disponibles.RC2145

(2145, X'861') Parámetro almacenamiento intermedio origen no válido.RC2111

(2111, X'83F') El identificador de juego de caracteres codificado origenno es válido.

RC2112(2112, X'840') Codificación de entero origen no reconocida.

RC2143(2143, X'85F') Parámetro longitud origen no válido.

RC2071(2071, X'817') No hay suficiente almacenamiento disponible.

RC2146(2146, X'862') Parámetro almacenamiento intermedio destino no válido.

RC2115(2115, X'843') El identificador de juego de caracteres codificado destinono es válido.

RC2116(2116, X'844') Codificación de entero destino no reconocida.

RC2144(2144, X'860') Parámetro longitud destino no válido.

RC2195(2195, X'893') Se ha producido un error inesperado.

MQDXP - Parámetro de rutina de salida de conversión de datos

Apéndice F. Conversión de datos 503

Page 518: amqwak00

Si desea más información sobre estos códigos de razón, vea el “Apéndice A.Códigos de retorno” en la página 373.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP MQXCNVC(HCONN : OPTS : SRCCSI :C SRCLEN : SRCBUF : TGTCSI :C TGTLEN : TGTBUF : DATLEN :C CMPCOD : REASON)

La definición prototipo de la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..DMQXCNVC PR EXTPROC('MQXCNVC')D* Asa de conexiónD HCONN 10I 0 VALUED* Opciones que controlan la acción de MQXCNVCD OPTS 10I 0 VALUED* Identificador de juego de caracteres codificado de la serie antes de la conversiónD SRCCSI 10I 0 VALUED* Longitud de la serie antes de la conversiónD SRCLEN 10I 0 VALUED* La serie que se ha de convertirD SRCBUF * VALUED* Identificador de juego de caracteres codificado de la serie tras la conversiónD TGTCSI 10I 0 VALUED* Longitud del almacenamiento intermedio de salidaD TGTLEN 10I 0 VALUED* La serie después de la conversiónD TGTBUF * VALUED* Longitud de la serie de salidaD DATLEN 10I 0D* Código de terminaciónD CMPCOD 10I 0D* Código de razón que califica a CMPCODD REASON 10I 0

MQCONVX - Rutina de salida de conversión de datosEsta definición de llamada describe los parámetros que se pasan a la rutina desalida de conversión de datos. El gestor de colas no proporciona realmente ningúnpunto de entrada llamado MQCONVX (vea la nota de utilización 11 en lapágina 508).

Esta definición forma parte de la interfaz de conversión de datos (DCI) deMQSeries, que es una de las interfaces de la Infraestructura MQSeries.

Sintaxis

ParámetrosMQDXP (MQDXP) – entrada/salida

Bloque de parámetro de rutina de salida de conversión de datos.

Esta estructura contiene información relacionada con la invocación de la rutinade salida. La rutina de salida establece información en esta estructura para

MQCONVX (MQDXP, MQMD, INLEN, INBUF, OUTLEN, OUTBUF)

MQDXP - Parámetro de rutina de salida de conversión de datos

504 Consulta de programación de aplicaciones (ILE RPG)

Page 519: amqwak00

indicar el resultado de la conversión. En “MQDXP – Parámetro de rutina desalida de conversión de datos” en la página 493 hallará los detalles de loscampos de esta estructura.

MQMD (MQMD) – entrada/salidaDescriptor de mensaje.

En la entrada de la rutina de salida, este parámetro es el descriptor de mensajeque se devolvería a la aplicación si no se efectuara ninguna conversión. Asípues, contiene los campos MDFMT, MDENC y MDCSI del mensaje no convertido quehay en INBUF.

Nota: El parámetro MQMD que se pasa a la rutina de salida siempre es la versiónmás reciente de MQMD soportada por el gestor de colas que invoca larutina de salida. La rutina de salida, si se pretende que sea portableentre distintos entornos, debe comprobar el campo MDVER de MQMD paraverificar que los campos a los que ella necesita acceder están presentesen la estructura.

En OS/400, a la rutina de salida se le pasa una MQMD de la versión 2.

En la salida, la rutina de salida debe cambiar los campos MDENC y MDCSI por losvalores solicitados por la aplicación, si la conversión ha sido satisfactoria; estoscambios se reflejarán de nuevo en la aplicación. Se hace caso omiso de losotros cambios que la rutina de salida haga en la estructura; estos no quedanreflejados en la aplicación.

INLEN (entero con signo de 10 dígitos) – entradaLongitud en bytes de INBUF.

Es la longitud del almacenamiento intermedio de entrada INBUF y especifica elnúmero de bytes que debe procesar la rutina de salida. INLEN es la menor deestas dos longitudes: la longitud de los datos del mensaje antes de laconversión y la longitud del almacenamiento intermedio proporcionado por laaplicación en la llamada MQGET.

El valor siempre es mayor que cero.

INBUF (serie de bits de 1 byte×INLEN) – entradaAlmacenamiento intermedio que contiene el mensaje sin convertir.

Contiene los datos del mensaje antes de la conversión. Si la rutina de salida nologra convertir los datos, el gestor de colas devuelve el contenido de estealmacenamiento intermedio a la aplicación después de que se haya completadola rutina de salida.

Nota: La rutina de salida no debe modificar el parámetro INBUF; de locontrario, los resultados son imprevisibles.

OUTLEN (entero con signo de 10 dígitos) – entradaLongitud en bytes de OUTBUF.

Es la longitud del almacenamiento intermedio de salida OUTBUF y es igual quela longitud del almacenamiento intermedio proporcionado por la aplicación enla llamada MQGET.

El valor siempre es mayor que cero.

MQDXP - Parámetro de rutina de salida de conversión de datos

Apéndice F. Conversión de datos 505

Page 520: amqwak00

OUTBUF (serie de bits de 1 byte×OUTLEN) – salidaAlmacenamiento intermedio que contiene el mensaje convertido.

En la salida de la rutina de salida, si la conversión ha sido satisfactoria (talcomo indica el valor XROK del campo DXRES del parámetro MQDXP), OUTBUFcontiene los datos de mensaje que deben entregarse a la aplicación, con larepresentación solicitada. Si la conversión no ha sido satisfactoria, se hará casoomiso de los cambios que la rutina de salida haya realizado en estealmacenamiento intermedio.

Notas de utilización1. La rutina de salida de conversión de datos es una rutina de salida escrita por

usuario que recibe el control durante el proceso de una llamada MQGET. Lafunción que realiza la rutina de salida de conversión de datos está definidapor el suministrador de la rutina de salida; no obstante, la rutina de salidadebe ajustarse a las normas aquí descritas y en la estructura de parámetroMQDXP asociada.El entorno determina los lenguajes de programación que pueden utilizarsepara una rutina de salida de conversión de datos.

2. Solo se invoca la rutina de salida si se cumplen todas estas condiciones:v Se ha especificado la opción GMCONV en la llamada MQGETv El campo MDFMT del descriptor de mensaje no es FMNONEv El mensaje no tiene todavía la representación requerida; es decir, uno o los

dos campos MDCSI y MDENC del mensaje es distinto del valor especificado porla aplicación en el descriptor de mensaje suministrado en la llamadaMQGET

v El gestor de colas aún no ha efectuado la conversión satisfactoriamentev La longitud del almacenamiento intermedio de la aplicación es mayor que

cerov La longitud de los datos del mensaje es mayor que cerov Hasta ahora, el código de razón durante la operación MQGET es RCNONE

o RC20793. Al escribir una rutina de salida, debe tenerse en cuenta que la rutina de salida

se ha de codificar de tal forma que pueda convertir mensajes que se hayantruncado. Las situaciones que pueden dar lugar a mensajes truncados son lassiguientes:v La aplicación receptora proporciona un almacenamiento intermedio más

pequeño que el mensaje, pero especifica la opción GMATM en la llamadaMQGET.En este caso, el campo DXREA del parámetro MQDXP en la entrada de la rutinade salida tendrá el valor RC2079.

v El emisor del mensaje lo ha truncado antes de enviarlo. Esto puede suceder,por ejemplo, con los mensajes de informe (en “Conversión de los mensajesde informe” en la página 491 hallará más detalles).En este caso, el campo DXREA del parámetro MQDXP en la entrada de la rutinade salida tendrá el valor RCNONE (si la aplicación receptora haproporcionado un almacenamiento intermedio cuyo tamaño sea suficientepara el mensaje).

En consecuencia, el valor del campo DXREA en la entrada de la rutina de salidano siempre se puede utilizar para decidir si el mensaje se ha truncado.

MQDXP - Parámetro de rutina de salida de conversión de datos

506 Consulta de programación de aplicaciones (ILE RPG)

Page 521: amqwak00

El rasgo distintivo de un mensaje truncado es que la longitud suministrada ala rutina de salida en el parámetro INLEN será menor que la longitud implícitaen el nombre de formato contenido en el campo MDFMT del descriptor demensaje. Por lo tanto, la rutina de salida debe comprobar el valor de INLENantes de intentar convertir ninguno de los datos; la rutina de salida no debedar por supuesto que se ha facilitado todo el volumen de datos que se deducedel nombre del formato.

Si la rutina de salida no se ha escrito para permitir la conversión de mensajestruncados y resulta que INLEN es menor que el valor esperado, la rutina desalida devolverá XRFAIL en el campo DXRES del parámetro MQDXP, con loscampos DXCC y DXREA establecidos en CCWARN y RC2110 respectivamente.

La rutina de salida, si se ha escrito para que sí pueda convertir mensajestruncados, convertirá el mayor volumen de datos posible (consulte la próximanota de utilización), procurando no examinar ni convertir los datos situadosmás allá del final de INBUF. Si la conversión se realiza satisfactoriamente, larutina de salida no modificará el campo DXREA del parámetro MQDXP. Comoresultado, se devolverá RC2079 si el gestor de colas de la aplicación receptoraha truncado el mensaje, y RCNONE si lo ha hecho el emisor del mensaje.

También es posible que un mensaje se amplíe durante la conversión, hasta elpunto de hacerse mayor que OUTBUF. En este caso, la rutina de salida decidirási debe truncar el mensaje; el campo DXAOP del parámetro MQDXP indicará si laaplicación receptora ha especificado la opción GMATM.

4. Por lo general, se recomienda convertir todos los datos del mensaje facilitadosa la rutina de salida en INBUF, o que no se convierta ningún dato. No obstante,se da una excepción cuando el mensaje se ha truncado, ya sea antes o durantela conversión, en cuyo caso puede existir un elemento incompleto al final delalmacenamiento intermedio (por ejemplo, un byte de un carácter de doblebyte o 3 bytes de un entero de 4 bytes). En esta situación, se aconseja omitir elelemento incompleto y definir como nulos los bytes no utilizados de OUTBUF.Sin embargo, los caracteres o los elementos completos de una matriz o de unaserie deben convertirse.

5. Cuando se necesita una rutina de salida por primera vez, el gestor de colasintenta cargar un objeto que tenga el mismo nombre que el formato (aparte delas extensiones). El objeto cargado debe contener la rutina de salida queprocesa los mensajes con ese nombre de formato. Es conveniente que elnombre de la rutina de salida y el del objeto que la contiene sean idénticos,aunque no todos los entornos obligan a ello.

6. Cuando una aplicación intenta recuperar el primer mensaje que utiliza elMDFMT desde el momento en que la aplicación se conecta al gestor de colas, secarga una copia nueva de la rutina de salida. También pueden cargarse copiasnuevas en otras circunstancias, si el gestor de colas ha descartado una copiacargada previamente. Por esta razón, la rutina de salida no debe utilizaralmacenamiento estático para facilitar información de una invocación de larutina de salida a la siguiente, ya que esta puede haberse descargado entre lasdos invocaciones.

7. Si hay una rutina de salida suministrada por usuario que tenga el mismonombre que uno de los formatos incorporados soportados pr el gestor decolas, la rutina de salida suministrada por usuario no sustituye a la rutina deconversión incorporada. Las únicas circunstancias en las que se invoca unarutina de salida así son:v Si la rutina de conversión incorporada no puede manejar las conversiones a

o desde el MDCSI o MDENC implicado, o bien

MQDXP - Parámetro de rutina de salida de conversión de datos

Apéndice F. Conversión de datos 507

Page 522: amqwak00

v Si la rutina de conversión incorporada no ha logrado convertir los datos(por ejemplo, debido a que hay un campo o un carácter que no se puedeconvertir).

8. El ámbito de la rutina de salida depende del entorno.La elección de los nombres de MDFMT debe estar orientada a reducir el riesgode conflictos con otros formatos. Conviene que empiecen por los caracteresque identifican la aplicación que define el nombre del formato.

9. La rutina de salida de conversión de datos se ejecuta en un entorno similar aldel programa que emitió la llamada MQGET; el entorno incluye el espacio dedirecciones y el perfil de usuario (si procede). El programa podría ser unagente de canal de mensajes que envíe mensajes a un gestor de colas destinoque no dé soporte a la conversión de mensajes. La rutina de salida no puedecomprometer la integridad del gestor de colas, ya que no se ejecuta en elentorno de este.

10. La única llamada MQI que la rutina de salida puede emplear es MQXCNVC;el intento de utilizar otras llamadas MQI hace que estas fallen con el códigode razón RC2219 o con otros errores imprevistos.

11. El gestor de colas no proporciona realmente ningún punto de entrada llamadoMQCONVX. El nombre de la rutina de salida debe coincidir con el nombredel formato (el nombre del campo MDFMT de MQMD), aunque esto no esnecesario en todos los entornos.

Invocación RPGC*..1....:....2....:....3....:....4....:....5....:....6....:....7..C CALLP exitname(MQDXP : MQMD : INLEN :C INBUF : OUTLEN : OUTBUF)

La definición prototipo de la llamada es:D*..1....:....2....:....3....:....4....:....5....:....6....:....7..Dexitname PR EXTPROC('nombrerutinasalida')D* Bloque de parámetro de rutina de salida de conversión de datosD MQDXP 44AD* Descriptor de mensajeD MQMD 364AD* Longitud en bytes de INBUFD INLEN 10I 0 VALUED* Almacenamiento intermedio que contiene el mensaje sin convertirD INBUF * VALUED* Longitud en bytes de OUTBUFD OUTLEN 10I 0 VALUED* Almacenamiento intermedio que contiene el mensaje convertidoD OUTBUF * VALUE

Fin de la interfaz de programación sensible al producto

MQDXP - Parámetro de rutina de salida de conversión de datos

508 Consulta de programación de aplicaciones (ILE RPG)

Page 523: amqwak00

Apéndice G. Avisos

Esta información ha sido desarrollada para productos y servicios que se ofrecen enEstados Unidos. Es posible que en otros países IBM no ofrezca los productos, losservicios o las características que se describen en este documento. Póngase encontacto con el representante local de IBM que le informará sobre los productos yservicios disponibles actualmente en su área. Las referencias hechas a productos,programas o servicios de IBM no pretenden afirmar ni dar a entender queúnicamente puedan utilizarse dichos productos, programas o servicios de IBM.Puede utilizarse en su lugar cualquier otro producto, programa o serviciofuncionalmente equivalente que no vulnere ninguno de los derechos de propiedadintelectual de IBM. Sin embargo, es responsabilidad del usuario evaluar y verificarel funcionamiento de cualquier producto, programa o servicio que no sea de IBM.

IBM puede tener patentes o solicitudes de patente pendientes de aprobación queafecten a los temas tratados en esta información. La posesión de esta informaciónno confiere ninguna licencia sobre dichas patentes. Puede enviar las consultassobre licencias, por escrito, a la siguiente dirección:

IBM Director of LicensingIBM CorporationNorth Castle DriveArmonk, NY 10504-1785Estados Unidos

Para consultas sobre licencias solicitando información sobre caracteres de doblebyte (DBCS), póngase en contacto con el departamento de propiedad intelectual deIBM de su país o envíe directamente las consultas por escrito a:

IBM World Trade Asia CorporationLicensing2-31 Roppongi 3-chome, Minato-kuTokio 106, Japón

El siguiente párrafo no se aplica al Reino Unido ni a ningún país en el quedichas disposiciones contradigan la legislación vigente: INTERNATIONALBUSINESS MACHINES CORPORATION FACILITA ESTA PUBLICACIÓN “TALCUAL” SIN GARANTÍAS DE NINGÚN TIPO, NI EXPLÍCITAS NI IMPLÍCITAS,INCLUIDAS, PERO SIN QUE ELLO CONSTITUYA UN LÍMITE, LASGARANTÍAS IMPLÍCITAS DE NO TRANSGRESIÓN, COMERCIALIZACIÓN OADECUACIÓN A UN FIN CONCRETO. Algunos países no permiten la renuncia agarantías explícitas o implícitas en determinadas transacciones y, por lo tanto, estadeclaración puede no ser aplicable en su caso.

Esta información puede contener imprecisiones técnicas o errores tipográficos.Periódicamente se efectúan cambios en la información aquí contenida; dichoscambios se incorporarán en nuevas ediciones de la información. IBM se reserva elderecho a realizar, si lo considera oportuno, cualquier modificación en losproductos o programas que se describen en esta información y sin notificarlopreviamente.

Cualquier referencia hecha en esta información a sitios Web no de IBM seproporciona únicamente para su comodidad y no debe considerarse en modoalguno como promoción de esos sitios Web. Los materiales de estos sitios Web no

© Copyright IBM Corp. 1994, 2000 509

Page 524: amqwak00

forman parte de los materiales de IBM para este producto y el uso que se haga deestos sitios Web es de la entera responsabilidad del usuario.

IBM puede utilizar o distribuir la información que usted le suministre del modoque IBM considere conveniente sin incurrir por ello en ninguna obligación paracon usted.

Los licenciatarios de este programa que deseen obtener información acerca delmismo con el fin de: (i) intercambiar la información entre los programas creadosindependientemente y otros programas (incluido este) y (ii) utilizar mutuamente lainformación que se ha intercambiado, deben ponerse en contacto con:

IBM United Kingdom Laboratories,Mail Point 151,Hursley Park,Winchester,Hampshire,InglaterraSO21 2JN.

Dicha información puede estar disponible, sujeta a los términos y condicionesadecuados, incluyendo, en algunos casos, el pago de unos derechos.

IBM proporciona el programa bajo licencia descrito en esta información, así comotodo el material bajo licencia del que dispone, bajo los términos del Acuerdo deCliente IBM, del Acuerdo Internacional de Licencia de Programación de IBM o decualquier otro acuerdo equivalente entre usted e IBM.

La información concerniente a productos no IBM se ha obtenido de lossuministradores de esos productos, de sus anuncios publicados o de otras fuentesde información pública disponibles. IBM no ha comprobado los productos y nopuede afirmar la exactitud en cuanto a rendimiento, compatibilidad u otrascaracterísticas relativas a productos no IBM. Las consultas acerca de lasposibilidades de productos no IBM deben dirigirse a las personas que lossuministran.

LICENCIA DE COPYRIGHT:

Esta información contiene programas de aplicación de ejemplo en lenguaje fuente,que muestran técnicas de programación en varias plataformas operativas. Puedecopiar, modificar y distribuir estos programas de ejemplo de cualquier forma sinpagar nada a IBM, bajo el propósito de desarrollo, uso, márketing o distribución deprogramas de aplicación de acuerdo con la interfaz de programación de laaplicación para la plataforma operativa para la cual se han escrito los programasde ejemplo. Estos ejemplos no se han probado bajo todas las condiciones posibles.IBM, por lo tanto, no puede garantizar ni implicar la fiabilidad, servicio ofuncionalidad de estos programas. Puede copiar, modificar y distribuir estosprogramas de ejemplo de cualquier forma sin pagar nada a IBM bajo el propósitode desarrollo, uso, márketing o distribución de programas de aplicación deacuerdo con los interfaces de programación de aplicaciones de IBM.

Avisos

510 Consulta de programación de aplicaciones (ILE RPG)

Page 525: amqwak00

Información de la interfaz de programaciónEste manual sirve como ayuda para escribir programas de aplicación que debanejecutarse bajo MQSeries para AS/400.

Este manual también documenta la interfaz de programación de utilización generaly la información de guía asociada proporcionada por MQSeries para AS/400 V5.1

Las interfaces de programación de utilización general permiten al cliente escribirprogramas que obtienen los servicios de estos productos.

La interfaz de programación de utilización general y la información de guíaasociada se muestran indicados en cada aparición mediante una sentenciaintroductoria en un capítulo o apartado.

Marcas registradasLos siguientes términos son marcas registradas de International Business Machinesen Estados Unidos y/o en otros países:

AIX AS/400 BookManagerCICS CICS/VSE FFSTIBM IMS MQMQSeries OS/2 OS/390OS/400 Presentation Manager RACFRPG/400 System/370 System/390

Lotus y LotusScript son marcas registradas de Lotus Development Corporation enEstados Unidos y/o en otros países.

Java y todas las marcas registradas y logotipos basados en Java son nombrescomerciales o marcas registradas de Sun Microsystems, Inc., en Estados Unidosy/o en otros países.

Microsoft, Windows, Windows NT y el logotipo de Windows son marcasregistradas de Microsoft Corporation en los Estados Unidos de América y/o otrospaíses.

Intel es una marca registrada de Intel Corporation en Estados Unidos y/o en otrospaíses.

UNIX es una marca registrada en Estados Unidos y/o en otros países con licenciaotorgada de forma exclusiva a través de X/Open Company Limited.

Los demás nombres de compañías, productos o servicios pueden ser marcasregistradas o de servicio de otras empresas.

Avisos

Apéndice G. Avisos 511

Page 526: amqwak00

Aplicaciones

512 Consulta de programación de aplicaciones (ILE RPG)

Page 527: amqwak00

Glosario de términos y abreviaturas

Este glosario define términos y abreviaturas deMQSeries utilizados en este manual. Si noencuentra el término que está buscando, vea elÍndice o la publicación IBM Dictionary ofComputing, New York: McGraw-Hill, 1994.

Este glosario incluye términos y definiciones deAmerican National Dictionary for InformationSystems, ANSI X3.172-1990, copyright 1990 deAmerican National Standards Institute (ANSI).Para adquirir copias, diríjase a American NationalStandards Institute, 11 West 42 Street, New York,New York 10036. Las definiciones se identificanmediante el símbolo (A) después de la definición.

Aadaptador. Interfaz entre MQSeries para OS/390 yTSO, IMS, CICS o espacios de dirección por lotes. Unadaptador es un recurso de conexión que permite a lasaplicaciones acceder a los servicios de MQSeries.

agente de canal de mensajes (MCA). Programa quetransmite mensajes preparados desde una cola detransmisión a un enlace de comunicaciones, o desde unenlace de comunicaciones a una cola destino. Veatambién interfaz de colas de mensajes.

agrupación de almacenamiento intermedio. Área delalmacenamiento principal utilizada para mensajes, colasy definiciones de objetos de MQSeries para OS/390.Vea también conjunto de páginas.

alerta. Mensaje enviado a un punto focal de serviciosde gestión de una red para identificar un problema oun problema inminente.

aliado. Espacio de direcciones de OS/390 que estáconectado a MQSeries para OS/390.

almacenamiento intermedio de anotaciones de salida.En MQSeries para OS/390, almacenamiento intermedioen el que se guardan los registros de anotaciones derecuperación hasta que se graban en las anotaciones dearchivar.

almacenar y reenviar. Almacenamiento temporal depaquetes, mensajes o tramas en una red de datos antesde retransmitirlos a su destino.

análisis y eliminación de vuelcos (DAE). Servicio deOS/390 que permite a una instalación suprimir losvuelcos SVC y los vuelcos ABEND SYSUDUMP que nose necesitan porque son repeticiones de vuelcos yagrabados con anterioridad.

anotaciones. En MQSeries, archivo que registra eltrabajo efectuado por los gestores de colas mientrasreciben, transmiten y entregan mensajes, y que lespermite hacer la recuperación si se produce unaanomalía.

anotaciones activas. Vea anotaciones de recuperación.

anotaciones circulares. En MQSeries en sistemasUNIX, MQSeries para OS/2 Warp y MQSeries paraWindows NT, proceso que permite conservar todos losdatos de reinicio en un anillo de archivos deanotaciones. El proceso de anotaciones llena el primerarchivo del anillo y, a continuación, pasa al siguiente, yasí sucesivamente hasta que todos los archivos estánllenos. En ese momento, el proceso de anotacionesvuelve al primer archivo del anillo y empieza de nuevosi se ha liberado espacio o este ya no se necesita. Elproceso de anotaciones circulares se utiliza durante larecuperación de reinicio, empleando las anotacionespara retrotraer las transacciones que estabanefectuándose cuando se detuvo el sistema. Comparecon anotaciones lineales.

anotaciones de aplicación. En Windows NT, archivode anotaciones en el que se registran los sucesossignificativos de una aplicación.

anotaciones de archivar. Vea anotaciones derecuperación.

anotaciones de recuperación. En MQSeries paraOS/390, archivos de contienen la información necesariapara recuperar mensajes, colas y el subsistemaMQSeries. MQSeries para OS/390 graba cada uno delos registros en un archivo llamado anotaciones activas.Cuando las anotaciones activas se han llenado, sucontenido se transfiere a un DASD o a un archivo decinta llamado anotaciones de archivar. Sinónimo deanotaciones.

anotaciones de sucesos. Vea anotaciones de aplicación.

anotaciones duales. Método para registrar la actividadde MQSeries para OS/390, en el que cada cambio seregistra en dos archivos para que, si es necesarioreiniciar el sistema y uno de los dos archivos esilegible, se pueda utilizar el otro. Compare conanotaciones simples.

anotaciones lineales. En MQSeries en sistemas UNIX,MQSeries para OS/2 Warp y MQSeries para WindowsNT, proceso de conservar los datos de reinicio en unasecuencia de archivos. A medida que se vannecesitando, se añaden nuevos archivos a la secuencia.

© Copyright IBM Corp. 1994, 2000 513

Page 528: amqwak00

El espacio en el que hay datos grabados no se reutilizahasta que se reinicia el gestor de colas. Compare conanotaciones circulares.

anotaciones simples. Método de registrar la actividadde MQSeries para OS/390 en el que cada cambio seregistra en un solo archivo. Compare con anotacionesduales.

APAR. Authorized Program Analysis Report (informeautorizado de análisis de programa).

aplicación de cliente. Aplicación que se ejecuta enuna estación de trabajo y se enlaza a un cliente, el cualproporciona a la aplicación acceso a los servicios decolas de un servidor.

aplicación distribuida. En la gestión de colas demensajes, conjunto de programas de aplicación quepueden conectarse individualmente a distintos gestoresde colas, pero que colectivamente forman una solaaplicación.

archivo de anotaciones. En MQSeries en sistemasUNIX, MQSeries para OS/2 Warp y MQSeries paraWindows NT, archivo en el que se registran todos loscambios significativos realizados en los datoscontrolados por un gestor de colas. Si se llenan losarchivos de anotaciones primarios, MQSeries asignaarchivos de anotaciones secundarios.

archivo de autorización. En MQSeries en sistemasUNIX, archivo que proporciona definiciones deseguridad sobre un objeto, sobre una clase de objetos osobre todas las clases de objetos.

archivo de configuración. En MQSeries en sistemasUNIX, MQSeries para OS/2 Warp y MQSeries paraWindows NT, archivo que contiene información deconfiguración que, por ejemplo, está relacionada con losarchivos de anotaciones, las comunicaciones o losservicios instalables. Sinónimo de archivo .ini. Veatambién estrofa.

archivo de control de anotaciones. En MQSeries ensistemas UNIX, MQSeries para OS/2 Warp y MQSeriespara Windows NT, archivo que contiene la informaciónnecesaria para supervisar la utilización de los archivosde anotaciones (por ejemplo, el tamaño y la ubicaciónque tienen, así como el nombre del siguiente archivodisponible).

archivo de definiciones de canal (CDF). En MQSeries,archivo que contiene definiciones de canal decomunicaciones que asocian colas de transmisión aenlaces de comunicaciones.

archivo de rutina de carga (BSDS). Archivo VSAMque contiene:

v Un inventario de todos los archivos de anotacionesactivos y archivados reconocidos por MQSeries paraOS/390.

v Un inventario de acomodación de todas lasactividades recientes de MQSeries para OS/390.

El BSDS es necesario si se debe volver a iniciar elsubsistema MQSeries para OS/390.

archivo .ini. Vea archivo de configuración.

archivos de entrada de inicialización. Archivosutilizados por MQSeries para OS/390 al iniciarse.

área de trabajo de diagnóstico del sistema (SDWA).Datos registrados en una entrada SYS1.LOGREC y quedescriben un error de programa o de hardware.

arreglo temporal de programa (PTF). Solución omanera de eludir un problema diagnosticado por elservicio técnico de IBM como resultado de un defectoen un release actual y no alterado de un programa.

asa de conexión. Identificador o símbolo mediante elque un programa accede al gestor de colas al que estáconectado.

asa de objeto. Identificador o símbolo mediante el queun programa accede al objeto de MQSeries con el queestá trabajando.

asa (handle). Vea asa de conexión y asa de objeto.

ASID. Address Space Identifier (identificador deespacio de direcciones).

atributo. Una de las propiedades de un conjunto depropiedades que define las características de un objetode MQSeries.

Bbloque de control de tareas (TCB). Bloque de controlde OS/390 utilizado para comunicar información sobrelas tareas que hay dentro de un espacio de direccionesy que están conectadas a un subsistema OS/390, comoMQSeries para OS/390 o CICS.

BMS. Basic Mapping Support (soporte de mapasbásico).

BSDS. Archivo de rutina de carga.

Ccabecera de suceso. En un mensaje de suceso, partede los datos de mensaje que identifica el tipo de sucesodel código de razón del suceso.

calificador de alto nivel de biblioteca destino(thlqual). Calificador de alto nivel para nombres dearchivos destino de OS/390.

canal. Vea canal de mensajes.

514 Consulta de programación de aplicaciones (ILE RPG)

Page 529: amqwak00

canal de mensajes. En la gestión de colas de mensajesdistribuidas, mecanismo que permite trasladar mensajesde un gestor de colas a otro. Un canal de mensajesconsta de dos agentes (un emisor en un extremo y unreceptor en el otro extremo) y de un enlace decomunicaciones. Compare con canal MQI.

canal emisor. En la gestión de colas de mensajes, canalque inicia transferencias, elimina mensajes de una colade transmisión y los transfiere a través de un enlace decomunicaciones a un canal receptor o a un canalpeticionario.

canal MQI. Conecta un cliente MQSeries a un gestorde colas situado en un sistema servidor y solamentetransfiere llamadas y respuestas MQI de modobidireccional. Compare con canal de mensajes.

canal peticionario. En la gestión de colas de mensajes,canal que un canal emisor puede iniciar remotamente.El canal peticionario acepta los mensajes del canalemisor a través de un enlace de comunicaciones y lospone en la cola local designada en el mensaje. Veatambién canal servidor.

canal receptor. En la gestión de colas de mensajes,canal que responde a un canal emisor, toma losmensajes de un enlace de comunicaciones y los pone enuna cola local.

canal servidor. En la gestión de colas de mensajes,canal que responde a un canal peticionario, elimina losmensajes de una cola de transmisión y los transfiere através de un enlace de comunicaciones al canalpeticionario.

carácter nulo. Carácter representado por X'00'.

carga fuera de línea. En MQSeries para OS/390,proceso automático mediante el que las anotacionesactivas de un gestor de colas se transfieren a lascorrespondientes anotaciones de archivar.

CCF. Channel Control Function (función de control decanal).

CCSID. Coded Character Set Identifier (identificadorde juego de caracteres codificado).

CDF. Channel Definition File (archivo de definicionesde canal).

CI. Control Interval (intervalo de control).

cierre. Vea cierre inmediato, cierre anticipado y cierre enreposo.

cierre anticipado. En MQSeries, cierre de un gestor decolas que no espera a que se desconecten lasaplicaciones ni a que se completen las llamadas MQIactuales. Compare con cierre inmediato y cierre en reposo.

cierre controlado. Vea cierre en reposo.

cierre en reposo. En MQSeries, cierre de un gestor decolas que permite que las aplicaciones conectadas sedesconecten. Compare con cierre inmediato y cierreanticipado. Tipo de cierre del adaptador CICS en el queel adaptador, para desconectarse de MQSeries, espera aque se hayan completado todas las tareas que esténactivas en ese momento. Compare con cierre forzado.

cierre forzado. Tipo de cierre del adaptador CICS, enel que el adaptador se desconecta inmediatamente deMQSeries para OS/390 haciendo caso omiso del estadode las tareas que estén activas en ese momento.Compare con cierre en reposo.

cierre inmediato. En MQSeries, cierre de un gestor decolas que no espera a que se desconecten lasaplicaciones. Tras haberse solicitado un cierreinmediato, las llamadas MQI actuales puedencompletarse, pero no así las llamadas MQI nuevas.Compare con cierre en reposo y cierre anticipado.

CL. Control Language (lenguaje de control).

clase de almacenamiento. En MQSeries para OS/390,una clase de almacenamiento define el conjunto depáginas que ha de contener los mensajes de una coladeterminada. La clase de almacenamiento se especificaal definir la cola.

cliente. Componente de unidad ejecutable queproporciona acceso a servicios de colas en un servidorde aplicaciones de usuario local. Las colas utilizadaspor las aplicaciones residen en el servidor. Vea tambiéncliente MQSeries.

cliente MQSeries. Parte de un producto MQSeriesque puede instalarse en un sistema sin instalar el gestorde colas completo. El cliente MQSeries acepta llamadasMQI procedentes de aplicaciones y se comunica con ungestor de colas situado en un sistema servidor.

clúster. Red de gestores de colas que, de algún modo,están asociados de forma lógica.

código de razón. Código de retorno que describe larazón de la anomalía o de la realización parcial de unallamada MQI.

código de razón de abend (finalización anómala).Código hexadecimal de 4 bytes que identifica demanera exclusiva un problema producido en MQSeriespara OS/390. En el manual MQSeries for OS/390Messages and Codes hay una lista completa de loscódigos de razón de abend de MQSeries para OS/390que incluye una explicación de cada uno de ellos.

código de terminación. Código de retorno que indicacómo ha finalizado una llamada MQI.

códigos de retorno. Nombre que tienen en común loscódigos de terminación y los códigos de razón.

Glosario de términos y abreviaturas 515

Page 530: amqwak00

cola. Objeto de MQSeries. Las aplicaciones de gestiónde colas de mensajes pueden poner mensajes en unacola y obtener mensajes de ella. Una cola es propiedadde un gestor de colas, que es el que realiza sumantenimiento. Las colas locales pueden contener unalista de mensajes en espera de ser procesados. Las colasde otros tipos no pueden contener mensajes; por elcontrario, señalan a otras colas o pueden servir demodelo para las colas dinámicas.

cola de aplicación. Cola utilizada por una aplicación.

cola de inicio. Cola local en la que el gestor de colascoloca mensajes desencadenantes.

cola de mensajes. Sinónimo de cola.

cola de mensajes en espera. Vea cola de mensajes noentregados.

cola de mensajes no entregados (DLQ). Cola a la queun gestor de colas o una aplicación envía mensajes queno puede entregar a su destino correcto.

cola de respuestas. Nombre de una cola a la que elprograma que emitió una llamada MQPUT quiere quese envíe un mensaje de respuesta o un mensaje deinforme.

cola de sucesos. Cola en la que el gestor de colas poneun mensaje de suceso después de haber detectado unsuceso. Cada categoría de suceso (de gestor de colas, derendimiento o de canal) tiene su propia cola de sucesos.

cola de transmisión. Cola local en la que sealmacenan temporalmente mensajes preparados queestán destinados a un gestor de colas remoto.

cola dinámica. Cola local creada cuando un programaabre un objeto cola modelo. Vea asimismo cola dinámicapermanente y cola dinámica temporal.

cola dinámica permanente. Cola dinámica que solo sesuprime cuando se cierra si se ha solicitadoexplícitamente la supresión. Las colas dinámicaspermanentes se recuperan si falla el gestor de colas, porlo que pueden contener mensajes permanentes.Compare con cola dinámica temporal.

cola dinámica temporal. Cola dinámica que quedasuprimida en cuanto se cierra. Las colas dinámicastemporales no se recuperan si falla el gestor de colas,por lo que solo pueden contener mensajes nopermanentes. Compare con cola dinámica permanente.

cola local. Cola que pertenece al gestor de colas local.Una cola local puede contener una lista de mensajesque están a la espera de ser procesados. Compare concola remota.

cola remota. Cola que pertenece a un gestor de colasremoto. Los programas pueden transferir mensajes a las

colas remotas, pero no pueden obtener mensajes deellas. Compare con cola local.

cola system.command.input. Cola local a la que losprogramas de aplicación pueden transferir mandatos deMQSeries. El servidor de mandatos recupera losmandatos de la cola, los valida y los pasa al procesadorde mandatos para que se ejecuten.

comprobaciones de autorización. Comprobaciones deseguridad realizadas cuando un usuario intenta emitirmandatos de administración con respecto a un objeto;por ejemplo, para abrir una cola o para conectarse a ungestor de colas.

compromiso. Operación que aplica todos los cambiosrealizados durante la unidad de recuperación o launidad de trabajo actual. Una vez terminada laoperación, se inicia una nueva unidad de recuperacióno unidad de trabajo. Compare con restitución.

compromiso en dos fases. Protocolo que permitecoordinar los cambios realizados en los recursosrecuperables cuando una sola transacción utiliza másde un gestor de recursos. Compare con compromiso enuna fase.

compromiso en una fase. Método en el que unprograma puede comprometer las actualizaciones enuna cola sin coordinarlas con las actualizacionesefectuadas por el programa en recursos controlados porotro gestor de recursos. Compare con compromiso en dosfases.

conectar. Proporcionar un asa de conexión de gestorde colas, que una aplicación utiliza en llamadas MQIposteriores. La conexión se efectúa mediante la llamadaMQCONN o, automáticamente, mediante la llamadaMQOPEN.

conexión diferida. Suceso pendiente que se activacuando un subsistema CICS intenta conectarse aMQSeries para OS/390 antes de que MQSeries paraOS/390 se haya iniciado.

conjunto de páginas. Archivo de VSAM que se utilizacuando MQSeries para OS/390 traslada datos (porejemplo, colas y mensajes) del almacenamientointermedio al almacenamiento principal para sualmacenamiento permanente de seguridad (en DASD).

conmutación de tareas. Operación de solaparoperaciones de E/S y procesar entre varias tareas. EnMQSeries para OS/390, el conmutador de tareasoptimiza el rendimiento al permitir que algunasllamadas MQI se ejecuten bajo subtareas, en vez debajo el bloque de control de tareas (TCB) principal deCICS.

contexto. Información acerca del origen de unmensaje.

CPF. Command Prefix (prefijo de mandato).

516 Consulta de programación de aplicaciones (ILE RPG)

Page 531: amqwak00

cursor para examinar. En la gestión de colas demensajes, indicador utilizado al examinar una cola paraidentificar el mensaje siguiente de la secuencia.

DDAE. Dump Analysis and Elimination (análisis yeliminación de vuelcos).

datagrama. El mensaje más simple soportado porMQSeries. Este tipo de mensaje no requiere unarespuesta.

datos de suceso. En un mensaje de suceso, parte delos datos del mensaje que contiene información sobre elsuceso (como el nombre del gestor de colas y laaplicación que produjo el suceso). Vea también cabecerade suceso.

DCE. Distributed Computing Environment (entornode sistemas distribuido).

DCI. Data Conversion Interface (interfaz deconversión de datos).

definición local. Objeto de MQSeries que pertenece aun gestor de colas local.

definición local de una cola remota. Objeto deMQSeries que pertenece a un gestor de colas local. Esteobjeto define los atributos de una cola que espropiedad de otro gestor de colas. También se utilizapara crear alias de gestor de colas y alias de cola derespuestas.

descriptor de mensaje. Información de control quedescribe el formato y la presentación de los mensajes yque forma parte de los mensajes de MQSeries. Elformato del descriptor de mensaje está definido por laestructura MQMD.

descriptor de objeto. Estructura de datos queidentifica un determinado objeto de MQSeries. Eldescriptor consta del nombre del objeto y del tipo deobjeto.

desencadenamiento. En MQSeries, recurso quepermite a un gestor de colas arrancar automáticamenteuna aplicación cuando se satisfacen condicionespredeterminadas en una cola.

devolución de llamada. En MQSeries, cuando uncanal de mensajes peticionario inicia una transferenciaprocedente de un canal emisor, el canal peticionariollama primero al emisor, luego se cierra y espera unadevolución de llamada.

dirección relativa en bytes (RBA). Desplazamiento enbytes de un registro almacenado o de un intervalo decontrol y que se cuenta desde el principio del espaciode almacenamiento asignado al archivo al quepertenece.

DLQ. Dead-Letter Queue (cola de mensajes noentregados).

DQM. Distributed Queue Management (gestión decolas distribuidas).

EEditor del Registro. En Windows NT, elemento deprograma que permite al usuario editar el Registro.

entorno. Vea entorno de aplicación.

entorno de aplicación. Los recursos de software a losque puede acceder un programa de aplicación. En laplataforma OS/390, CICS e IMS son ejemplos deentornos de aplicaciones.

entorno de lenguajes integrados (ILE). El entorno delenguajes integrados del AS/400. Este entorno sustituyeal modelo de programa original (OPM) del AS/400.

entorno de sistemas distribuido (DCE). Middlewareque proporciona determinados servicios básicos quesimplifican el desarrollo de aplicaciones distribuidas.DCE está definido por Open Software Foundation(OSF).

entorno nacional. En los sistemas UNIX, subconjuntode un entorno del usuario que define los convenios deuna cultura específica (como el formato de la hora, elnumérico o el monetario, así como la clasificación, laordenación y la conversión de los caracteres). El CCSIDdel gestor de colas se obtiene del entorno nacional delID de usuario que creó ese gestor de colas.

entrega secuencial. En MQSeries, método que permitetransmitir los mensajes con un número de secuenciapara que el canal receptor pueda restablecer el ordende los mensajes al almacenarlos. Este tipo de entrega esnecesario si los mensajes se tienen que entregar unasola vez y en el orden correcto.

escucha. En la gestión de colas distribuidas deMQSeries, programa que supervisa las conexiones dered entrantes.

ESM. External Security Manager (gestor de seguridadexterno).

espacio de direcciones. Área de almacenamientovirtual disponible para un trabajo determinado.

espacio de direcciones aliado. Vea aliado.

ESTAE. Extended Specify Task Abnormal Exit (salidaanómala de tarea especificada y ampliada)

estrofa (stanza). Grupo de líneas de un archivo deconfiguración que asignan un valor a un parámetro,modificando así el comportamiento de un gestor decolas, de un cliente o de un canal. En MQSeries ensistemas UNIX, MQSeries para OS/2 Warp y MQSeries

Glosario de términos y abreviaturas 517

Page 532: amqwak00

para Windows NT, un archivo de configuración (.ini)puede contener un varias estrofas.

examinar. En la gestión de colas de mensajes, utilizarla llamada MQGET para copiar un mensaje sineliminarlo de la cola. Vea también obtener.

FFFST. First Failure Support Technology.

FIFO. First-In-First-Out (primero en entrar, primero ensalir).

First Failure Support Technology (FFST). Tecnologíaempleada por MQSeries en sistemas UNIX, MQSeriespara OS/2 Warp, MQSeries para Windows NT, yMQSeries para AS/400 para detectar e informar acercade problemas de software.

formato de mandato programable (PCF). Tipo demensaje de MQSeries utilizado por:

v Las aplicaciones de administración de usuario, paratransferir mandatos PCF a la cola de entrada demandatos del sistema de un gestor de colasespecificado.

v Las aplicaciones de administración de usuario, paraobtener los resultados de un mandato PCF de ungestor de colas especificado.

v Un gestor de colas, como notificación de que se haproducido un suceso.

Compare con MQSC.

FRR. Functional Recovery Routine (rutina derecuperación funcional).

función de control de canal (CCF). En MQSeries,programa que transfiere mensajes desde una cola detransmisión a un enlace de comunicaciones y desde unenlace de comunicaciones a una cola local,conjuntamente con una interfaz de panel de operadorpara permitir la configuración y el control de loscanales.

GGCPC. Generalized Command Preprocessor(preprocesador de mandatos generalizado).

gestión de colas. Vea gestión de colas de mensajes.

gestión de colas de mensajes. Técnica deprogramación en la que cada programa de unaaplicación se comunica con los otros programasponiendo mensajes en las colas.

gestión de colas distribuidas (DQM). En la gestión decolas de mensajes, definición y control de canales demensajes para gestores de colas de otros sistemas.

gestión de colas remotas. En la gestión de colas demensajes, suministro de servicios para permitir a lasaplicaciones poner mensajes en colas que pertenecen aotros gestores de colas.

gestor de autorizaciones sobre objeto (OAM). EnMQSeries en sistemas UNIX, MQSeries para AS/400 yMQSeries para Windows NT, servicio de autorizacionespor omisión para la gestión de mandatos y objetos. ElOAM puede sustituirse por un servicio de seguridadsuministrado por el cliente o ejecutarse junto con dichoservicio.

gestor de colas. Programa del sistema queproporciona a las aplicaciones servicios de gestión decolas. Ofrece una interfaz de programación deaplicaciones para que así los programas puedanacceder a los mensajes de las colas que son propiedaddel gestor de colas. Vea también gestor de colas local ygestor de colas remoto. Objeto de MQSeries que define losatributos de un determinado gestor de colas.

gestor de colas local. Gestor de colas al que estáconectado un programa y que proporciona servicios degestión de colas al programa. Los gestores de colas,cuando el programa no está conectado a ellos, sellaman gestores de colas remotos, aunque se ejecuten en elmismo sistema que el programa.

gestor de colas remoto. Referido a un programa,gestor de colas que no es aquel al que está conectado elprograma.

gestor de recursos. Aplicación, programa otransacción que gestiona y controla el acceso a recursoscompartidos, como los almacenamientos intermedios dememoria y los archivos. MQSeries, CICS e IMS songestores de recursos.

gestor de seguridad externo (ESM). Producto deseguridad al que invoca el recurso de autorizacionesdel sistema (SAF) de OS/390. RACF es un ejemplo deESM.

gestor de terminación de recuperación (RTM).Programa que maneja toda terminación normal oanómala de tareas, pasando el control a una rutina derecuperación asociada a la función de terminación.

GTF. Generalized Trace Facility (recurso de rastreogeneralizado).

Hhebra. En MQSeries, nivel más bajo de ejecución enparalelo disponible en una plataforma de sistemaoperativo.

518 Consulta de programación de aplicaciones (ILE RPG)

|||||||

Page 533: amqwak00

IID de sesión. En MQSeries para OS/390, identificadorexclusivo en CICS que define el enlace decomunicaciones que un agente de canal de mensajes hade utilizar al transferir los mensajes de una cola detransmisión a un enlace.

identificador de espacio de direcciones (ASID).Identificador asignado por el sistema y exclusivo de unespacio de direcciones.

identificador de juego de caracteres codificado(CCSID). Nombre de un juego de caracterescodificado y de sus asignaciones de elementos decódigo.

identificador de transacción. En CICS, nombreespecificado en el momento de definir la transacción yque sirve para invocar la transacción.

ILE. Entorno de Lenguajes Integrado (IntegratedLanguage Environment).

imagen de medio. En MQSeries en sistemas UNIX,MQSeries para OS/2 Warp y MQSeries para WindowsNT, secuencia de registros de anotaciones quecontienen una imagen de un objeto. El objeto se puedecrear de nuevo a partir de esta imagen.

informe autorizado de análisis de programa (APAR).Informe de un problema causado por un posibledefecto en un release actual y no modificado de unprograma.

infraestructura. En MQSeries, grupo de interfaces deprogramación que permiten a los clientes o a losproveedores escribir programas que amplían oreemplazan determinadas funciones proporcionadaspor los productos MQSeries. Las interfaces son:

v Interfaz de conversión de datos (DCI) de MQSeries

v Interfaz de canal de mensajes (MCI) de MQSeries

v Interfaz de servicio de nombres (NSI) de MQSeries

v Interfaz de habilitación de seguridad (SEI) deMQSeries

v Interfaz de supervisor de desencadenamiento (TMI)de MQSeries

Interactive System Productivity Facility (ISPF).Programa bajo licencia de IBM que hace de editor depantalla completa y de gestor de diálogos. Se utilizapara escribir programas de aplicación y es un mediopara generar paneles de pantalla y diálogos interactivosestándar entre el programador de aplicaciones y elusuario de terminal.

interfaz de administración de MQSeries (MQAI).Interfaz de programación de MQSeries.

interfaz de canal de mensajes (MCI). Interfaz deMQSeries a la que deben ajustarse los programas

escritos por clientes o proveedores que transmitenmensajes entre un gestor de colas de MQSeries y otrosistema de mensajería. Forma parte de lainfraestructura de MQSeries.

interfaz de cola de mensajes (MQI). Interfaz deprogramación proporcionada por los gestores de colasde MQSeries. Esta interfaz de programación permite alos programas de aplicación acceder a los servicios decolas de mensajes.

interfaz de conversión de datos (DCI). La interfaz deMQSeries a la que deben ajustarse los programasescritos por el cliente o el proveedor y que conviertendatos de la aplicación entre las distintas codificacionesde máquina y los distintos CCSID. Forma parte de laInfraestructura MQSeries.

interfaz de habilitación de seguridad (SEI). Interfazde MQSeries a la que deben ajustarse los programasescritos por clientes o proveedores que compruebanautorizaciones, suministran identificadores de usuario orealizan autenticaciones. Forma parte de lainfraestructura de MQSeries.

interfaz de servicio de nombres (NSI). Interfaz deMQSeries a la que deben ajustarse los programasescritos por clientes o proveedores y que resuelven lapropiedad de los nombres de colas. Forma parte de lainfraestructura de MQSeries.

interfaz de supervisor de desencadenamiento (TMI).Interfaz de MQSeries a la que deben ajustarse losprogramas supervisores de desencadenamiento escritospor clientes o proveedores. Forma parte de lainfraestructura de MQSeries.

interrupción por error de máquina. Interrupciónproducida por un error o funcionamiento defectuoso deun equipo. Una interrupción por error de máquinapuede ser recuperable por hardware, recuperable porsoftware o irrecuperable.

intervalo de control (CI). Área de longitud fija delalmacenamiento de acceso directo en la que VSAMalmacena registros y crea espacios libres distribuidos. Elintervalo de control es la unidad de información queVSAM transmite al almacenamiento de acceso directo odesde él.

intervalo de servicio. Intervalo de tiempo con el queel gestor de colas compara el tiempo transcurrido entreuna operación de poner o de obtener y una operaciónulterior de obtener al decidir si se han satisfecho lascondiciones de un suceso de intervalo de servicio. Elintervalo de servicio de una cola se especifica medianteun atributo de la cola.

IPCS. Interactive Problem Control System (sistema decontrol de problemas interactivo).

ISPF. Interactive System Productivity Facility.

Glosario de términos y abreviaturas 519

Page 534: amqwak00

Llenguaje de control (CL). En MQSeries para AS/400,lenguaje que permite emitir mandatos ya sea en la líneade mandatos o al escribir un programa en CL.

lista de nombres. Objeto de MQSeries que contieneuna lista de nombres; por ejemplo, nombres de colas.

llamada de supervisor (SVC). Instrucción de OS/390que interrumpe un programa en ejecución y pasa elcontrol al supervisor para que este pueda prestar elservicio específico indicado por la instrucción.

Mmandato. En MQSeries, instrucción de administraciónque el gestor de colas puede llevar a cabo.

mandato de control. En MQSeries en sistemas UNIX,MQSeries para OS/2 Warp y MQSeries para WindowsNT, mandato que se puede entrar interactivamentedesde la línea de mandatos del sistema operativo. Unmandato de este tipo solo requiere que se instale elproducto MQSeries; no necesita ningún programa niprograma de utilidad especiales que lo ejecuten.

mandato PCF. Vea formato de mandato programable.

mandatos de administrador. Mandatos de MQSeriesutilizados para gestionar objetos de MQSeries, comocolas, procesos y listas de nombres.

mandatos de control del sistema. Mandatos utilizadospara manipular entidades específicas de plataformacomo, por ejemplo, las agrupaciones dealmacenamiento intermedio, las clases dealmacenamiento y los conjuntos de páginas.

mandatos de MQSeries (MQSC). Mandatos legiblespor personas, uniformes en todas las plataformas, quese utilizan para manipular objetos de MQSeries.Compare con formato de mandato programable (PCF).

manejador de cola de mensajes no entregados.Programa de utilidad facilitado por MQSeries quesupervisa una cola de mensajes no entregados (DLQ) yprocesa los mensajes de la cola de acuerdo con unatabla de normas escrita por el usuario.

MCA. Message Channel Agent (agente de canal demensajes).

MCI. Message Channel Interface (interfaz de canal demensajes).

mensaje. En aplicaciones de colas de mensajes,comunicación enviada entre programas. Vea asimismomensaje permanente y mensaje no permanente. Enprogramación de sistemas, información destinada aloperador del terminal o al administrador del sistema.

mensaje de informe. Tipo de mensaje queproporciona información sobre otro mensaje. El mensajede informe puede indicar que se ha entregado unmensaje, que el mensaje ha llegado a su destino, que hacaducado o que no ha podido procesarse por algunarazón. Compare con mensaje de respuesta y mensaje depetición.

mensaje de petición. Tipo de mensaje utilizado parasolicitar una respuesta de otro programa. Compare conmensaje de respuesta y mensaje de informe.

mensaje de respuesta. Tipo de mensaje utilizado pararesponder a los mensajes de petición. Compare conmensaje de petición y mensaje de informe.

mensaje desencadenante. Mensaje que contieneinformación sobre el programa que un supervisor dedesencadenamiento va a arrancar.

mensaje de suceso. Contiene información (como lacategoría del suceso, el nombre de la aplicación queocasionó el suceso y las estadísticas del gestor de colas)relacionada con el origen de un suceso deinstrumentación en una red de sistemas MQSeries.

mensaje en disco duro (hardened message). Mensajegrabado en el almacenamiento auxiliar (disco) de modoque no se perderá si se produce una anomalía en elsistema. Vea también mensaje persistente.

mensaje no permanente. Mensaje que no perduradespués de un reinicio del gestor de colas. Comparecon mensaje permanente.

mensaje permanente. Mensaje que perdura tras unreinicio del gestor de colas. Compare con mensaje nopermanente.

mensajería. Vea mensajería síncrona y mensajeríaasíncrona.

mensajería asíncrona. Método de comunicación entreprogramas en el que estos colocan mensajes en las colasde mensajes. Con la mensajería asíncrona, el programaemisor prosigue el proceso sin esperar la respuesta almensaje. Compare con mensajería síncrona.

mensajería independiente del tiempo. Vea mensajeríaasíncrona.

mensajería síncrona. Método de comunicación entreprogramas en el que estos colocan mensajes en las colasde mensajes. Con la mensajería síncrona, el programaemisor espera una respuesta al mensaje para reanudarsu propio proceso. Compare con mensajería asíncrona.

modalidad dual. Vea anotaciones duales.

modelo de programa original (OPM). Es el entornoOPM (modelo de programa original) de AS/400. Ha

520 Consulta de programación de aplicaciones (ILE RPG)

Page 535: amqwak00

dejado de estar soportado en MQSeries. Lo hasustituido el entorno ILE (entorno de lenguajesintegrados).

MQAI. MQSeries Administration Interface (interfaz deadministración de MQSeries).

MQI. Message Queue Interface (interfaz de colas demensajes).

MQSC. MQSeries Commands (mandatos deMQSeries).

MQSeries. Familia de programas bajo licencia de IBMque proporciona servicios de gestión de colas demensajes.

Nnotificación de terminación. Suceso pendiente que seactiva cuando un subsistema CICS se conectasatisfactoriamente a MQSeries para OS/390.

NSI. Name Service Interface (interfaz del servicio denombres).

NTFS. New Technology File System (sistema dearchivos de nueva tecnología).

numeración de secuencia de mensajes. Técnica deprogramación en la que se da a los mensajes númerosexclusivos durante la transmisión a través de un enlacede comunicaciones. Ello permite al proceso receptorcomprobar si se han recibido todos los mensajes,colocarlos en una cola en el orden original y descartarlos mensajes repetidos.

OOAM. Object Authority Manager (gestor deautorizaciones sobre objeto).

objeto. En MQSeries, un objeto puede ser un gestorde colas, una cola, una definición de proceso, un canal,una lista de nombres o una clase de almacenamiento(solo para OS/390).

objeto cola alias. Objeto de MQSeries, cuyo nombre esun alias de una cola base definida para el gestor decolas local. Cuando una aplicación o un gestor de colasutiliza una cola alias, el nombre de alias se resuelve yla operación solicitada se realiza en la cola baseasociada.

objeto cola modelo. Conjunto de atributos de cola queactúa a modo de plantilla cuando un programa creauna cola dinámica.

objeto cola remota. Vea definición local de una colaremota.

objeto definición de proceso. Objeto de MQSeries quecontiene la definición de una aplicación de MQSeries.Por ejemplo, los gestores de colas utilizan la definicióncuando funcionan con mensajes desencadenantes.

objeto por omisión. Definición de un objeto (porejemplo, una cola) cuyos atributos están todosdefinidos. Si un usuario define un objeto sin especificartodos sus posibles atributos, el gestor de colas utilizalos atributos por omisión en lugar de los que no sehayan especificado.

obtener. En la gestión de colas de mensajes, utilizar lallamada MQGET para extraer un mensaje de la cola.Vea también examinar.

OPM. Modelo de Programa Original (OriginalProgram Model)

OTMA. Open Transaction Manager Access.

Pparámetro de entrada. Parámetro de una llamada MQIen el que se suministra información al hacer la llamada.

parámetro de entrada/salida. Parámetro de unallamada MQI en el que se suministra información alhacer la llamada y donde luego, cuando la llamada sehaya completado o haya fallado, el gestor de colascambia la información.

parámetro de salida. Parámetro de una llamada MQIen el que el gestor de colas devuelve informacióncuando la llamada se completa o falla.

PCF. Programmable Command Format (formato demandato programable).

percolación. En recuperación de errores, pasar a travésde una vía de control preestablecida desde una rutinade recuperación a una rutina de recuperación de nivelmás alto.

perfil de conmutador. En MQSeries para OS/390,perfil RACF utilizado al iniciarse MQSeries o cuando seemite un mandato de renovar seguridad. Cada perfil deconmutador detectado por MQSeries desativa lacomprobación de los recursos especificados.

ping. En la gestión de colas distribuidas, ayuda dediagnóstico que utiliza el intercambio de un mensaje deprueba para confirmar el funcionamiento de un canalde mensajes o de una conexión TCP/IP.

plataforma. En MQSeries, el sistema operativo bajo elque se ejecuta un gestor de colas.

prefijo de mandato (CPF). En MQSeries para OS/390,serie de caracteres que identifica el gestor de colas alque se dirigen los mandatos de MQSeries para OS/390y del que se reciben los mensajes de operador deMQSeries para OS/390.

Glosario de términos y abreviaturas 521

Page 536: amqwak00

preprocesador de mandatos generalizado (GCPC).Componente de MQSeries para OS/390 que procesamandatos de MQSeries y los ejecuta.

primero en entrar, primero en salir (FIFO). Técnica degestión de colas en la que el siguiente elemento que serecupera es el que hace más tiempo que está en la cola.(A)

prioridad de mensaje. En MQSeries, atributo de unmensaje que puede afectar al orden de recuperación delos mensajes de una cola e indicar si se genera unsuceso desencadenante.

procesador de mandato. Componente de MQSeriesque procesa los mandatos.

programa de transmisión. Vea agente de canal demensajes.

programa de utilidad. En MQSeries, conjunto deprogramas que proporcionan al operador o aladministrador del sistema recursos adicionales a losproporcionados por los mandatos de MQSeries.Algunos programas de utilidad invocan más de unafunción.

PTF. Program Temporary Fix (arreglo temporal deprograma).

punto de control. Momento en el que se grabainformación significativa en las anotaciones. Comparecon punto de sincronismo. En MQSeries en sistemasUNIX, momento en el que un registro de datos descritoen el archivo de anotaciones es igual que el registro dedatos de la cola. Los puntos de control se generanautomáticamente y se utilizan durante el proceso dereinicio del sistema.

punto de recuperación. En MQSeries para OS/390,término utilizado para describir un conjunto de copiasde seguridad de los conjuntos de páginas de MQSeriespara OS/390 y los correspondientes archivos deanotaciones necesarios para recuperar esos conjuntos depáginas. Estas copias de seguridad proporcionan unpunto de reinicio potencial en el caso de que seproduzca una pérdida de conjuntos de páginas (porejemplo, un error de E/S de conjuntos de páginas).

punto de sincronismo. Punto intermedio o punto finaldel proceso de una transacción en el que soncoherentes los recursos protegidos de la transacción. Enun punto de sincronismo, los cambios efectuados en losrecursos se pueden comprometer de forma segura o sepueden restituir al punto de sincronismo anterior.

Rrastreo. En MQSeries, recurso que permite registrar laactividad de MQSeries. El destino de las entradas derastreo puede incluir el recurso de rastreo generalizado

(GTF) y el recurso de gestión del sistema (SMF). Veaasimismo rastreo global y rastreo de rendimiento.

rastreo de rendimiento. Opción de rastreo deMQSeries cuyos datos de rastreo se han de utilizar paraanálisis y ajuste del rendimiento.

rastreo global. Opción de rastreo de MQSeries paraOS/390 en la que los datos del rastreo proceden detodo el subsistema MQSeries para OS/390.

RBA. Relative Byte Address (dirección relativa enbytes).

recurso. Cualquier servicio o recurso del sistemainformático o del sistema operativo necesario para untrabajo o una tarea. En MQSeries para OS/390, sonejemplos de recursos las agrupaciones dealmacenamiento intermedio, los conjuntos de páginas,los archivos de anotaciones y los mensajes.

recurso de autorizaciones del sistema (SAF). Recursode OS/390 a través del cual MQSeries para OS/390 secomunica con un gestor de seguridad externo, comoRACF.

recurso de rastreo generalizado (GTF). Programa deservicio de OS/390 que, para la determinación deproblemas, registra los sucesos significativos delsistema, como las llamadas de supervisor y lasoperaciones de inicio de E/S.

Registro. En Windows NT, base de datos segura queproporciona un único origen de datos de configuraciónde aplicaciones y del sistema.

registro de deshacer/rehacer. Registro de anotacionesutilizado en la recuperación. La parte rehacer delregistro describe un cambio que se ha de hacer en unobjeto de MQSeries. La parte deshacer describe cómo seha de restituir el cambio si no se compromete eltrabajo.

reposo. En MQSeries, estado de un gestor de colasanterior al estado de detención. En este estado, sepermite que los programas terminen de procesarse,pero no que se inicien nuevos programas.

resincronizar (resynch). En MQSeries, opción quepermite instar a un canal que se inicie y resuelva losmensajes en estado dudoso, aunque sin reiniciar latransferencia de mensajes.

RESLEVEL. En MQSeries para OS/390, opción quecontrola el número de identificadores (ID) de usuariode CICS en los que se comprueba la seguridad derecursos de API en MQSeries para OS/390.

respondedor. En la gestión de colas distribuidas,programa que responde a las peticiones de conexión dered procedentes de otro sistema.

522 Consulta de programación de aplicaciones (ILE RPG)

Page 537: amqwak00

restitución. Operación que anula todos los cambiosrealizados durante la unidad de recuperación o launidad de trabajo actuales. Una vez terminada laoperación, se inicia una nueva unidad de recuperacióno unidad de trabajo. Compare con compromiso.

restitución en una fase. Método en el que no debeautorizarse la terminación de una acción en proceso yen el que deben deshacerse todos los cambios queforman parte de esa acción.

retrotraer. Sinónimo de restituir.

RRS. Resource Recovery Services (servicios derecuperación de recursos).

RTM. Recovery Termination Manager (gestor determinación de recuperación).

rutina de recuperación funcional (FRR). Recurso delgestor de recuperación/terminación de OS/390 quepermite ceder el control a una rutina de recuperaciónen el caso de que se produzca una interrupción deprograma.

SSAF. System Authorization Facility (recurso deautorizaciones del sistema).

salida anómala de tarea especificada y ampliada(ESTAE). Macro de OS/390 que ofrece posibilidadesde recuperación y cede el control a la rutina de salidaespecificada para procesar, diagnosticar una finalizaciónanómala (abend) o especificar una dirección dereintento.

SDWA. System Diagnostic Work Area (área de trabajode diagnóstico del sistema).

Sección de Registro. En Windows NT, la estructura delos datos almacenados en el Registro.

seguridad del contexto. En MQSeries, método quepermite manejar la seguridad de tal manera que losmensajes estén obligados a incluir detalles de su origenen el descriptor del mensaje.

seguridad de usuario alternativo. Característica deseguridad en la que las autorizaciones de un ID deusuario las puede utilizar otro ID de usuario; porejemplo, para abrir un objeto de MQSeries.

SEI. Security Enabling Interface (interfaz dehabilitación de seguridad).

señalización. En MQSeries para OS/390 y MQSeriespara Windows 2.1, característica que permite al sistemaoperativo enviar a un programa notificación de que unmensaje esperado llega a una cola.

serie de síntoma. Información de diagnósticovisualizada con un formato estructurado diseñado parahacer búsquedas en la base de datos de soporte desoftware IBM.

servicio de autorizaciones. En MQSeries en sistemasUNIX, MQSeries para OS/2 Warp y MQSeries paraWindows NT, servicio que permite comprobar laautorización de mandatos y llamadas MQI delidentificador de usuario asociado al mandato o a lallamada.

servicio de identificador de usuario (UIS). EnMQSeries para OS/2 Warp, recurso que permite a lasaplicaciones MQI asociar un ID de usuario (distinto delID de usuario por omisión) a los mensajes deMQSeries.

servicio de nombres. En MQSeries en sistemas UNIX,MQSeries para OS/2 Warp y MQSeries para WindowsNT, recurso que determina qué gestor de colas es elpropietario de una cola especificada.

servicios de recuperación de recursos (RRS). Recursode OS/390 que proporciona soporte de punto desincronismo en dos fases a todos los gestores derecursos participantes.

servicios instalables. En MQSeries en sistemas UNIX,MQSeries para OS/2 Warp y MQSeries para WindowsNT, funciones adicionales proporcionadas comocomponentes independientes. La instalación de cadacomponente es opcional: pueden utilizarse en su lugarcomponentes internos o de otros proveedores. Veaasimismo servicio de autorizaciones, servicio de nombres yservicio de identificador de usuario.

servidor. (1) En MQSeries, gestor de colas queproporciona servicios de cola a las aplicaciones decliente que se ejecutan en una estación de trabajoremota. (2) Programa que responde a las peticiones deinformación en el modelo específico de cliente/servidoren el que se produce una corriente de informaciónentre dos programas. Vea también cliente.

servidor de mandatos. Componente de MQSeries quelee los mandatos procedentes de la cola de entrada demandatos del sistema, los verifica y luego pasa los queson válidos al procesador de mandatos.

sistema de archivos de nueva tecnología (NTFS).Sistema de archivos recuperable de Windows NT queproporciona seguridad de archivos.

sistema de control de problemas interactivo (IPCS).Componente de OS/390 que permite realizar la gestiónde problemas en línea, el diagnóstico de problemasinteractivo, la depuración en línea de los vuelcos definalización anómala (abend) residentes en disco, elseguimiento de problemas y la notificación deproblemas.

Glosario de términos y abreviaturas 523

Page 538: amqwak00

SIT. System Initialization Table (tabla de inicializacióndel sistema).

soporte de mapas básico (BMS). Interfaz entre CICS ylos programas de aplicación que formatea los datos devisualización de entrada y de salida, y direcciona losmensajes de salida de múltiples páginas haciendo casoomiso de los caracteres de control utilizados por losdiversos terminales.

subsistema. En OS/390, grupo de módulos queproporciona funciones que dependen de OS/390. Porejemplo, MQSeries para OS/390 es un subsistema deOS/390.

suceso. Vea suceso de canal, suceso de instrumentación,suceso de rendimiento y suceso de gestor de colas.

suceso de canal. Suceso que indica que una sesión decanal ha quedado disponible o no disponible. Lossucesos de canal se generan en los gestores de colas enambos extremos del canal.

suceso de gestor de colas. Suceso que indica que:

v Se ha producido una condición de error en relación alos recursos utilizados por un gestor de colas. Porejemplo, que una cola no está disponible.

v Se ha producido un cambio significativo en el gestorde colas. Por ejemplo, que se ha detenido o iniciadoun gestor de colas.

suceso de instrumentación. Recurso que permitesupervisar el funcionamiento de los gestores de colasen una red de sistemas MQSeries. MQSeriesproporciona sucesos de instrumentación parasupervisar las definiciones de recursos de los gestoresde colas, las condiciones de rendimiento y lascondiciones de canal. Los sucesos de instrumentaciónlos puede utilizar un mecanismo de notificación escritopor usuario en una aplicación de administración quevisualiza los sucesos a un operador del sistema.También permiten a las aplicaciones que hacen deagentes para otras redes de administración supervisarinformes y crear las alertas adecuadas.

suceso de intervalo de servicio. Suceso relacionadocon el intervalo de servicio.

suceso de rendimiento. Categoría de suceso queindica que se ha producido una condición de límite.

suceso desencadenante. Suceso (como la llegada deun mensaje a una cola) que hace que un gestor de colascree un mensaje desencadenante en una cola de inicio.

suceso pendiente. Suceso no planificado que seproduce como consecuencia de una petición deconexión procedente de un adaptador CICS.

sujeto. En MQSeries en sistemas UNIX, MQSeriespara OS/2 Warp y MQSeries para Windows NT,término que representa un identificador de usuario. Lo

utiliza el gestor de autorizaciones sobre objeto paracomprobar las autorizaciones sobre los recursos delsistema.

supervisor de alertas. En MQSeries para OS/390,componente del adaptador CICS que maneja lossucesos no planificados que se produzcan comoresultado de las peticiones de conexión dirigidas aMQSeries para OS/390.

supervisor de desencadenamiento. Aplicación deejecución continua que sirve a una o más colas deinicio. Cuando un mensaje desencadenante llega a unacola de inicio, el supervisor de desencadenamientorecupera el mensaje. Utiliza la información del mensajedesencadenante para iniciar un proceso que sirve a lacola en la que se produjo el suceso desencadenante.

SVC. Supervisor Call (llamada de supervisor).

SYS1.LOGREC. Ayuda al servicio, que contieneinformación acerca de los errores de programa dehardware.

Ttabla de inicialización del sistema (SIT). Tabla quecontiene los parámetros utilizados por CICS en elmomento del inicio.

tabla de normas. Archivo de control que contiene unao varias normas que el manejador de colas de mensajesno entregados aplica a los mensajes de la cola demensajes no entregados (DLQ).

TACL. Tandem Advanced Command Language.

TCB. Task Control Block (bloque de control de tareas).

thlqual. target library high-level qualifier (calificadorde alto nivel de biblioteca destino).

tipo de canal de conexión de cliente. Tipo dedefinición de canal MQI asociado a un clienteMQSeries. Vea también tipo de canal de conexión deservidor.

tipo de canal de conexión de servidor. Tipo dedefinición de canal MQI asociado al servidor queejecuta un gestor de colas. Vea también tipo de canal deconexión de cliente.

TMI. Trigger Monitor Interface (interfaz de supervisorde desencadenamiento).

tranid. Vea identificador de transacción (transactionidentifier).

transformación de nombre. En MQSeries en sistemasUNIX, MQSeries para OS/2 Warp y MQSeries paraWindows NT, proceso interno que cambia el nombre deun gestor de colas para que sea exclusivo y válido en el

524 Consulta de programación de aplicaciones (ILE RPG)

Page 539: amqwak00

sistema que se esté utilizando. Externamente, el nombredel gestor de colas no varía.

UUIS. User Identifier Service (servicio de identificadorde usuario)

unidad de recuperación. Secuencia recuperable deoperaciones dentro de un gestor de recursos individual.Compare con unidad de trabajo.

unidad de recuperación pendiente. En MQSeries,estado de una unidad de recuperación para la que seha solicitado un punto de sincronismo que aún no seha confirmado.

unidad de trabajo. Secuencia recuperable deoperaciones que una aplicación lleva a cabo entre dospuntos de coherencia. Una unidad de trabajo empiezacuando se inicia una transacción o tras un punto desincronismo solicitado por el usuario. Finaliza en unpunto de sincronismo solicitado por el usuario o alfinal de una transacción. Compare con unidad derecuperación.

unidad de trabajo lógica (LUW). Vea unidad de trabajo.

Vvalor de reinicio de número secuencial. En MQSeries,método que permite garantizar que los dos extremos deun enlace de comunicaciones restablezcan a la vez susnúmeros de secuencia de mensaje actual. Si losmensajes se transmiten con un número de secuencia, elcanal receptor podrá restablecer el orden de losmensajes al almacenarlos.

vía de resolución. Conjunto de colas que se abrencuando una aplicación especifica un alias o una colaremota como entrada en una llamada MQOPEN.

visor de sucesos. Herramienta proporcionada porWindows NT para examinar y gestionar los archivos deanotaciones.

Glosario de términos y abreviaturas 525

Page 540: amqwak00

526 Consulta de programación de aplicaciones (ILE RPG)

Page 541: amqwak00

Bibliografía

Esta sección describe la documentación disponibleactualmente para todos los productos MQSeries.

Publicaciones de las distintasplataformas de MQSeriesLa mayor parte de estas publicaciones, que aveces se denominan manuales de la “familia”MQSeries, se aplican a todos los productos deMQSeries Nivel 2. Los productos de MQSeriesNivel 2 más recientes son los siguientes:v MQSeries para AIX V5.1v MQSeries para AS/400 V5.1v MQSeries para AT&T GIS UNIX V2.2v MQSeries para Compaq (DIGITAL) OpenVMS

V2.2.1.1v MQSeries para DIGITAL UNIX (Compaq Tru64

UNIX) V2.2.1v MQSeries para HP-UX V5.1v MQSeries para OS/2 Warp V5.1v MQSeries para OS/390 V2.1v MQSeries para SINIX y DC/OSx V2.2v MQSeries para Sun Solaris V5.1v MQSeries para Tandem NonStop Kernel

V2.2.0.1v MQSeries para VSE/ESA V2.1v MQSeries para Windows V2.0v MQSeries para Windows V2.1v MQSeries para Windows NT V5.1

Todas las excepciones a esta regla general estánindicadas.

MQSeries BrochureMQSeries Brochure, G511-1908, es unabreve introducción a las ventajas deMQSeries. Su finalidad es ayudar a tomarla decisión de compra y describe algunasde las utilizaciones de clientes reales deMQSeries.

MQSeries: An Introduction to Messaging andQueuing

An Introduction to Messaging and Queuing,GC33-0805, explica brevemente qué esMQSeries, cómo funciona y cómo puederesolver algunos problemas clásicosrelacionados con la interoperabilidad. Estemanual está pensado para un público másformado técnicamente, si se compara conla publicación MQSeries Brochure.

MQSeries Guía de planificaciónEl manual MQSeries Guía de planificación,GC10-9251 (GC33-1349), describe algunosde los conceptos básicos de MQSeries,indica los elementos que hay que tener enconsideración antes de instalar MQSeries,incluidos los requisitos dealmacenamiento, la copia de seguridad yrecuperación, y la migración desdereleases anteriores, y especifica losrequisitos de hardware y software paracada plataforma MQSeries.

MQSeries IntercommunicationEl manual MQSeries IntercommunicationSC33-1872, define los conceptosrelacionados con la gestión de colasdistribuidas y explica cómo establecer unared de gestión de colas distribuidas envarios entornos MQSeries. En concreto,explica cómo (1) configurar lascomunicaciones a través de un ejemplosignificativo de productos MQSeries, (2)crear los objetos MQSeries necesarios y (3)crear y configurar canales MQSeries.También se explica la utilización derutinas de salida de canales.

MQSeries Queue Manager ClustersEl manual MQSeries Queue ManagerClusters, SC34-5349, describe lasoperaciones con clusters en MQSeries.Explica los conceptos y la terminología ymuestra cómo beneficiarse de lautilización de clusters. Explica en detallelos cambios efectuados en la MQI yresume la sintaxis de mandatos MQSeriesnuevos y modificados. Muestra variosejemplos de tareas que pueden realizarsepara configurar y mantener clusters degestores de colas.

Este manual sólo se aplica a los siguientesproductos de MQSeries:v MQSeries para AIX V5.1v MQSeries para AS/400 V5.1v MQSeries para HP-UX V5.1v MQSeries para OS/2 Warp V5.1v MQSeries para OS/390 V2.1v MQSeries para Sun Solaris V5.1v MQSeries para Windows NT V5.1

© Copyright IBM Corp. 1994, 2000 527

|

||||

||

|

Page 542: amqwak00

MQSeries ClientesEl manual MQSeries Clientes, GC10-9654(GC33-1632), describe cómo instalar,configurar, utilizar y gestionar sistemas decliente MQSeries.

MQSeries Administración del sistemaEl manual MQSeries Administración delsistema, SC10-3081 (SC33-1873), describe lagestión diaria de objetos locales y remotosMQSeries. Incluye temas como laseguridad, la recuperación y el reinicio, elsoporte transaccional, la determinación deproblemas y el manejador de la cola demensajes no entregados. También incluyela sintaxis de los mandatos de control deMQSeries.

Este manual sólo se aplica a los siguientesproductos de MQSeries:v MQSeries para AIX V5.1v MQSeries para HP-UX V5.1v MQSeries para OS/2 Warp V5.1v MQSeries para Sun Solaris V5.1v MQSeries para Windows NT V5.1

MQSeries Consulta de mandatosEl manual MQSeries Consulta de mandatos,SC10-9438 (SC33-1369), contiene lasintaxis de los mandatos MQSC, queutilizan los operadores y administradoresde sistemas MQSeries para gestionarobjetos MQSeries.

MQSeries Programmable System ManagementEl manual MQSeries Programmable SystemManagement, SC33-1482, proporcionainformación de guía y consulta parausuarios de sucesos MQSeries, mensajesde formato de mandato programable(PCF) y servicios instalables.

MQSeries Interfaz de administración - Guía deprogramación y consulta

El manual MQSeries Interfaz deadministración - Guía de programación yconsulta, SC10-3342 (SC34-5390),proporciona información para usuarios deMQAI. La MQAI es una interfaz deprogramación que simplifica la forma enque las aplicaciones manipulan losmensajes en formato de mandatoprogramable (PCF) y las estructuras dedatos relacionadas con éstos.

Este manual sólo se aplica a los siguientesproductos de MQSeries:v MQSeries para AIX V5.1v MQSeries para AS/400 V5.1

v MQSeries para HP-UX V5.1v MQSeries para OS/2 Warp V5.1v MQSeries para Sun Solaris V5.1v MQSeries para Windows NT V5.1

MQSeries MensajesEl manual MQSeries Mensajes, GC10-3078(GC33-1876), que describe los mensajes“AMQ” emitidos por MQSeries, sólo seaplica a los siguientes productosMQSeries:v MQSeries para AIX V5.1v MQSeries para HP-UX V5.1v MQSeries para OS/2 Warp V5.1v MQSeries para Sun Solaris V5.1v MQSeries para Windows NT V5.1v MQSeries para Windows V2.0v MQSeries para Windows V2.1

Este manual sólo está disponible en copiasoftware.

Para otras plataformas MQSeries, losmensajes los suministra el sistema. Noaparecen en el formato manual en copiasoftware.

MQSeries Application Programming GuideEl manual MQSeries ApplicationProgramming Guide, SC33-0807,proporciona información de guía para losusuarios de la interfaz de cola demensajes (MQI). Explica cómo diseñar,escribir y crear una aplicación MQSeries.También contiene descripciones completasde los programas de ejemplosuministrados con MQSeries.

MQSeries Application Programming ReferenceEl manual MQSeries ApplicationProgramming Reference, SC33-1673, facilitauna amplia información de consulta parausuarios de MQI. Incluye: descripcionesde tipos de datos, sintaxis de llamadasMQI, atributos de objetos MQSeries,códigos de retorno, constantes y tablas deconversión de páginas de códigos.

MQSeries Application Programming ReferenceSummary

En el manual MQSeries ApplicationProgramming Reference Summary,SX33-6095, se resume la información delmanual MQSeries Application ProgrammingReference.

MQSeries Using C++MQSeries Using C++, SC33-1877,

528 Consulta de programación de aplicaciones (ILE RPG)

|

Page 543: amqwak00

proporciona información de guía yconsulta para los usuarios del lenguaje deprogramación MQSeries C++ vinculado aMQI. MQSeries C++ tiene soporte en lossiguientes productos MQSeries:v MQSeries para AIX V5.1v MQSeries para HP-UX V5.1v MQSeries para OS/2 Warp V5.1v MQSeries para AS/400 V5.1v MQSeries para OS/390 V2.1v MQSeries para Sun Solaris V5.1v MQSeries para Windows NT V5.1

MQSeries C++ también tiene soporte paraclientes MQSeries que se suministran conesos productos y se instalan en lossiguientes entornos:v AIXv HP-UXv OS/2v Sun Solarisv Windows NTv Windows 3.1v Windows 95 y Windows 98

MQSeries Utilización de JavaMQSeries Utilización de Java, SC10-3345(SC34-5456), proporciona información deguía y consulta para los usuarios deEnlaces MQSeries para Java y ClienteMQSeries para Java. Las clases MQSeriespara Java tienen soporte en los siguientesproductos MQSeries:v MQSeries para AIX V5.1v MQSeries para AS/400 V5.1v MQSeries para HP-UX V5.1v MQSeries para MVS/ESA V1.2v MQSeries para OS/2 Warp V5.1v MQSeries para Sun Solaris V5.1v MQSeries para Windows NT V5.1

Este manual sólo está disponible en copiasoftware.

Publicaciones específicas decada plataforma MQSeriesCada producto MQSeries tiene como mínimo unapublicación específica para su plataforma ademásde los manuales de la familia MQSeries.

MQSeries para AIX

MQSeries para AIX V5.1 Comienzorápido, GC10-3073 (GC33-1867)

MQSeries para AS/400

MQSeries for AS/400 V5.1 QuickBeginnings, GC34-5557MQSeries for AS/400 V5.1 SystemAdministration, SC34-5558MQSeries para AS/400 V5.1 Consulta deprogramación de aplicaciones (ILE RPG),SC10-3412 (SC34-5559)

MQSeries para AT&T GIS UNIX

MQSeries for AT&T GIS UNIX SystemManagement Guide, SC33-1642

MQSeries para Compaq (DIGITAL) OpenVMS

MQSeries para Digital OpenVMS Guíade gestión de sistemas, GC10-3089(GC33-1791)

MQSeries para Digital UNIX (Compaq Tru64UNIX)

MQSeries for Digital UNIX SystemManagement Guide, GC34-5483

MQSeries para HP-UX

MQSeries para HP-UX V5.1 Comienzorápido, GC10-3075 (GC33-1869)

MQSeries para OS/2 Warp

MQSeries para OS/2 Warp V5.1Comienzo rápido, GC10-3074(GC33-1868)

MQSeries para OS/390

MQSeries for OS/390 Version 2 Release 1Licensed Program Specifications,GC34-5377MQSeries for OS/390 Version 2 Release 1Program Directory

MQSeries for OS/390 SystemManagement Guide, SC34-5374MQSeries for OS/390 Messages andCodes, GC34-5375MQSeries for OS/390 ProblemDetermination Guide, GC34-5376

MQSeries Link para R/3

MQSeries Link para R/3 Versión 1.2 Guíadel usuario, GC10-3257 (GC33-1934)

MQSeries para SINIX y DC/OSx

MQSeries for SINIX and DC/OSx SystemManagement Guide, GC33-1768

MQSeries para Sun Solaris

MQSeries para Sun Solaris V5.1Comienzo rápido, GC10-3076(GC33-1870)

Bibliografía 529

|

|

|

||

||

||

|||

|

|||

||

||

|

Page 544: amqwak00

MQSeries para Tandem NonStop Kernel

MQSeries para Tandem NonStop KernelGuía de gestión del sistema, GC10-3147(GC33-1893)

MQSeries para VSE/ESA

MQSeries for VSE/ESA Version 2 Release1 Licensed Program Specifications,GC34-5365MQSeries for VSE/ESA SystemManagement Guide, GC34-5364

MQSeries para Windows

MQSeries para Windows V2.0 Guía delusuario, GC10-3029 (GC33-1822)MQSeries para Windows V2.1 Guía delusuario, GC10-3176 (GC33-1965)

MQSeries para Windows NT

MQSeries para Windows NT V5.1Comienzo rápido, GC10-3341(GC34-5389)MQSeries para Windows NT Utilizaciónde la interfaz de modelo de objetoscomponentes, SC10-3344 (SC34-5387)MQSeries LotusScript Extension,SC10-3343 (SC34-5404)

Manuales en copia softwareLa mayoría de los manuales de MQSeries sesuministran tanto en formato de copia impresacomo en copia software.

Formato BookManagerLa biblioteca MQSeries se suministra en formatoIBM BookManager en varios kits de grupos debibliotecas en línea, incluido el kit de grupoTransaction Processing and Data, SK2T-0730. Puedever las publicaciones en copia software conformato IBM BookManager utilizando lossiguientes programas bajo licencia de IBM:

BookManager READ/2BookManager READ/6000BookManager READ/DOSBookManager READ/MVSBookManager READ/VMBookManager READ para Windows

Formato HTMLLa documentación pertinente de MQSeries seproporciona en formato HTML con los siguientesproductos de MQSeries:v MQSeries para AIX V5.1

v MQSeries para AS/400 V5.1v MQSeries para HP-UX V5.1v MQSeries para OS/2 Warp V5.1v MQSeries para Sun Solaris V5.1v MQSeries para Windows NT V5.1 (compilado

en HTML)v MQSeries Link para R/3 V1.2

Los manuales de MQSeries también estándisponibles en formato HTML desde el sitio webde la familia de productos MQSeries:http://www.ibm.com/software/ts/mqseries/

Portable Document Format (PDF)Los archivos PDF pueden verse e imprimirseutilizando Adobe Acrobat Reader.

Si necesita conseguir Adobe Acrobat Reader odesea actualizar la información sobre lasplataformas que tienen soporte para AcrobatReader, visite el sitio web de Adobe Systems Inc.en:http://www.adobe.com/

Con los siguientes productos de MQSeries sesuministran versiones en PDF de los manualesMQSeries pertinentes:v MQSeries para AIX V5.1v MQSeries para AS/400 V5.1v MQSeries para HP-UX V5.1v MQSeries para OS/2 Warp V5.1v MQSeries para Sun Solaris V5.1v MQSeries para Windows NT V5.1v MQSeries Link para R/3 V1.2

Las versiones en PDF de todos los manuales deMQSeries también están disponibles en el sitioweb de la familia de productos MQSeries:http://www.ibm.com/software/ts/mqseries/

Formato PostScriptLa biblioteca de MQSeries se facilita en formatoPostScript (.PS) para muchos de los productos deMQSeries de la Versión 2. Los manuales enformato PostScript pueden imprimirse en unaimpresora PostScript o visualizarse en un visoradecuado.

Formato de ayuda WindowsEl manual MQSeries para Windows Guía del usuariose suministra en formato de ayuda Windows conMQSeries para Windows Versión 2.0 y MQSeriespara Windows Versión 2.1.

530 Consulta de programación de aplicaciones (ILE RPG)

|||

|

|

Page 545: amqwak00

Información de MQSeriesdisponible en InternetEl sitio web de la familia de productos MQSeriesse encuentra en la siguiente dirección:

http://www.ibm.com/software/ts/mqseries/

Siguiendo los enlaces desde este sitio web, podrá:v Obtener la información más reciente sobre la

familia de productos MQSeries.v Acceder a los manuales de MQSeries en

formatos HTML y PDF.v Bajar SupportPacs de MQSeries.

Publicaciones relacionadasAS/400 ILE RPG/400 Guía del programador,SC10-9414 (SC09-1525)AS/400 ILE RPG/400 Manual de consulta,SC10-9415 (SC09-1526)

MQSeries en Internet

Bibliografía 531

Page 546: amqwak00

Publicaciones relacionadas

532 Consulta de programación de aplicaciones (ILE RPG)

Page 547: amqwak00

Índice

Aámbito de asas 233, 267aplicación de confianza 32archivo copy – lenguaje de programación

RPG 8archivos de copia 351asa, ámbito 233, 267asas 344atributo AlterationDate

cola 305definición de proceso 333gestor de colas 338lista de nombres 331

atributo AlterationTimecola 305definición de proceso 333gestor de colas 338lista de nombres 331

atributo ApplId 333atributo ApplType 334atributo AuthorityEvent 338atributo BackoutRequeueQName 312atributo BackoutThreshold 312atributo BaseQName 329atributo ClusterName 306atributo ClusterNamelist 306atributo ClusterWorkloadData 340atributo ClusterWorkloadExit 340atributo ClusterWorkloadLength 340atributo CodedCharSetId 340atributo CommandInputQName 341atributo CommandLevel 341atributo CreationDate 312atributo CreationTime 312atributo CurrentQDepth 313atributo ChannelAutoDef 339atributo ChannelAutoDefEvent 339atributo ChannelAutoDefExit 339atributo DeadLetterQName 342atributo DefBind 306atributo DefinitionType 313atributo DefInputOpenOption 314atributo DefPersistence 306atributo DefPriority 307atributo DefXmitQName 343atributo DistLists 314, 343atributo EnvData 334atributo HardenGetBackout 315atributo InhibitEvent 343atributo InhibitGet 308atributo InhibitPut 308atributo InitiationQName 316atributo LocalEvent 343atributo MaxHandles 344atributo MaxMsgLength

cola local 316gestor de colas 344

atributo MaxPriority 344atributo MaxQDepth 317atributo MaxUncommittedMsgs 345atributo MsgDeliverySequence 317

atributo NameCount 331atributo NamelistDesc 332atributo NamelistName 332atributo Names 332atributo OpenInputCount 318atributo OpenOutputCount 318atributo PerformanceEvent 345atributo Platform 346atributo ProcessDesc 334atributo ProcessName

cola local 319definición de proceso 335

atributo QDepthHighEvent 319atributo QDepthHighLimit 319atributo QDepthLowEvent 320atributo QDepthLowLimit 320atributo QDepthMaxEvent 320atributo QDesc 309atributo QMgrDesc 346atributo QMgrIdentifier 346atributo QMgrName 346atributo QName 309atributo QServiceInterval 321atributo QServiceIntervalEvent 321atributo QType 309atributo RemoteEvent 346atributo RemoteQMgrName 327atributo RemoteQName 328atributo RepositoryName 347atributo RepositoryNamelist 347atributo RetentionInterval 322atributo Scope 309atributo Shareability 322atributo StartStopEvent 347atributo SyncPoint 347atributo TriggerControl 322atributo TriggerData 323atributo TriggerDepth 323atributo TriggerInterval 348atributo TriggerMsgPriority 323atributo TriggerType 324atributo Usage 324atributo UserData 335atributo XmitQName 328atributos

cola alias 329cola local 311cola remota, definición local de 327comunes a todas las colas 305definición de proceso 333gestor de colas 337lista de nombres 331

atributos de colasalias 329comunes a todas las colas 305definición local de remota 327local 311modelo 311

atributos de definición de proceso 333atributos de listas de nombres 331atributos del gestor de colas 337

Ayuda Windows 530

Bbibliografía 527BookManager 530

Ccampo BOOPT 15campo BOSID 15campo BOVER 15campo CIAC 25campo CIADS 23campo CIAI 26campo CIAUT 25campo CICC

estructura MQCIH 21campo CICNC 27campo CICP 28campo CICSI 20campo CICT 23campo CIENC 20campo CIEO 28campo CIFAC 24campo CIFKT 23campo CIFL 26campo CIFLG 20campo CIFMT 20campo CIFNC 24campo CIGWI 22campo CIII 28campo CILEN 19campo CILT 22campo CINTI 27campo CIODL 22campo CIREA 21campo CIRET 20campo CIRFM 25campo CIRS1 25campo CIRS2 27campo CIRS3 27campo CIRS4 28campo CIRSI 26campo CIRTI 26campo CISC 26campo CISID 19campo CITES 24campo CITI 26campo CIUOW 21campo CIVER 19campo CNCCO 33campo CNCCP 33campo CNOPT 32campo CNSID 31campo CNVER 31campo de codificación

utilizar 477campo de informe

utilizar 481campo DHCNT 40

© Copyright IBM Corp. 1994, 2000 533

Page 548: amqwak00

campo DHCSI 39campo DHENC 39campo DHFLG 39campo DHFMT 39campo DHLEN 38campo DHORO 40campo DHPRF 40campo DHPRO 41campo DHSID 38campo DHVER 38campo DLCSI 47campo DLDM 47campo DLDQ 46campo DLENC 47campo DLFMT 47campo DLPAN 48campo DLPAT 48campo DLPD 48campo DLPT 49campo DLREA 45campo DLSID 45campo DLVER 45campo DXAOP 494campo DXCC 495campo DXCSI 494campo DXENC 494campo DXHCN 498campo DXLEN 495campo DXREA 496campo DXRES 497campo DXSID 493campo DXVER 494campo DXXOP 494campo GMGST 74campo GMMO 72campo GMOPT 52campo GMRE1 75campo GMRL 76campo GMRQN 72campo GMSEG 75campo GMSG1 71campo GMSG2 71campo GMSID 52campo GMSST 75campo GMTOK 75campo GMVER 52campo GMWI 71campo IIAUT 81campo IICMT 82campo IICSI 80campo IIENC 80campo IIFLG 81campo IIFMT 80campo IILEN 80campo IILTO 81campo IIMMN 81campo IIRFM 81campo IIRSV 83campo IISEC 83campo IISID 80campo IITID 82campo IITST 82campo IIVER 80campo MDACC 119campo MDAID 120campo MDAOD 125campo MDBOC 116

campo MDCID 115campo MDCSI 106campo MDENC 105campo MDEXP 99campo MDFB 101campo MDFMT 107campo MDGID 126campo MDMFL 128campo MDMID 113campo MDMT 98campo MDOFF 128campo MDOLN 133campo MDPAN 123campo MDPAT 121campo MDPD 123campo MDPER 112campo MDPRI 111campo MDPT 124campo MDREP 88campo MDRM 117campo MDRQ 116campo MDSEQ 127campo MDSID 87campo MDUID 118campo MDVER 87campo MECSI 140campo MEENC 140campo MEFLG 141campo MEFMT 140campo MEGID 141campo MELEN 140campo MEMFL 141campo MEOFF 141campo MEOLN 141campo MESEQ 141campo MESID 140campo MEVER 140campo ODASI 150campo ODAU 147campo ODDN 146campo ODIDC 148campo ODKDC 147campo ODMN 145campo ODON 145campo ODORO 148campo ODORP 149campo ODOT 144campo ODREC 147campo ODRMN 151campo ODRQN 150campo ODRRO 149campo ODRRP 150campo ODSID 144campo ODUDC 148campo ODVER 144campo ORMN 153campo ORON 153campo PMCT 165campo PMIDC 165campo PMKDC 165campo PMOPT 156campo PMPRF 167campo PMPRO 167campo PMPRP 169campo PMREC 166campo PMRMN 166campo PMRQN 166

campo PMRRO 168campo PMRRP 170campo PMSID 156campo PMTO 165campo PMUDC 165campo PMVER 156campo PRACC 175campo PRCID 174campo PRFB 174campo PRGID 174campo PRMID 173campo RMCSI 179campo RMDEL 181campo RMDEO 181campo RMDL 182campo RMDNL 182campo RMDNO 182campo RMDO 183campo RMDO2 183campo RMENC 179campo RMFLG 180campo RMFMT 179campo RMLEN 179campo RMOII 180campo RMOT 180campo RMSEL 180campo RMSEO 180campo RMSID 178campo RMSNL 181campo RMSNO 181campo RMVER 178campo RRCC 187campo RRREA 187campo TC2AI 196campo TC2AT 196campo TC2ED 196campo TC2PN 196campo TC2QMN 197campo TC2QN 196campo TC2SID 196campo TC2TD 196campo TC2UD 196campo TC2VER 196campo TMAI 192campo TMAT 191campo TMED 192campo TMPN 191campo TMQN 191campo TMSID 190campo TMTD 191campo TMUD 192campo TMVER 190campo WICSI 200campo WIENC 200campo WIFLG 200campo WIFMT 200campo WILEN 200campo WIRSV 201campo WISID 199campo WISNM 200campo WISST 201campo WITOK 201campo WIVER 199campo XQMD 207campo XQRQ 206campo XQRQM 206campo XQSID 206

534 Consulta de programación de aplicaciones (ILE RPG)

Page 549: amqwak00

campo XQVER 206código de terminación 373códigos de razón

lista alfabética 373lista numérica 464

códigos de retorno 373cola alias 329cola dinámica 261compilar 351constantes, valores de 443

ámbito (SCO*) 470ámbito de seguridad IMS (ISS*) 458asa de conexión (HC*) 456asa de objeto (HO*) 456autenticador IMS (IAU*) 457codificación (EN*) 452codificación para enteros binarios

(EN*) 453codificación para enteros decimales

empaquetados (EN*) 453codificación para números de coma

flotante (EN*) 453código de inicio de transacción de

cabecera CICS (SC*) 450código de retorno de puente CICS

(CRC*) 450códigos de razón (RC*) 464códigos de terminación (CC*) 447compartibilidad de cola (QA*) 464control de unidad de trabajo de

cabecera CICS (CU*) 450controles de desencadenamiento

(TC*) 470cuenta de nombres (NC*) 460descriptor ADS de cabecera CICS

(AD*) 447distintivos de cabecera CICS

(CIF*) 448distintivos de cabecera de distribución

(DHF*) 451distintivos de cabecera de información

de carga de trabajo (WI*) 472distintivos de cabecera de mensaje de

referencia (RM*) 469distintivos de cabecera IMS (II*) 457distintivos de campo de registro de

poner mensaje (PF*) 463distintivos de extensión de descriptor

de mensaje (MEF*) 459distintivos de mensaje (MF*) 459enlace (BND*) 445estado de final de tarea de cabecera

CICS (TE*) 450estado de grupo (GS*) 455estado de segmento (SS*) 470estado de transacción IMS (ITS*) 458formato (FM*) 454identificador de correlación (CI*) 448identificador de estructura (formato

de tipo carácter) de mensajedesencadenante (TC*) 471

identificador de estructura de cabeceraCICS (CI*) 448

identificador de estructura de cabecerade cola de transmisión 472

identificador de estructura de cabecerade distribución (DH*) 451

constantes, valores de 443(continuación)

identificador de estructura de cabecerade información de carga de trabajo(WI*) 472

identificador de estructura de cabecerade mensaje de referencia (RM*) 469

identificador de estructura de cabecerade mensaje en espera (DL*) 452

identificador de estructura de cabecerade mensaje no entregado (DL*) 452

identificador de estructura de cabeceraIMS (II*) 458

identificador de estructura dedescriptor de mensaje (MD*) 458

identificador de estructura dedescriptor de objeto (OD*) 461

identificador de estructura deextensión de descriptor de mensaje(ME*) 459

identificador de estructura de mensajedesencadenante (TM*) 471

identificador de estructura deopciones de conectar (CN*) 449

identificador de estructura deopciones de empezar (BO*) 446

identificador de estructura deopciones de obtener mensaje(GM*) 455

identificador de estructura deopciones de poner mensaje(PM*) 463

identificador de estructura deparámetro de rutina de salida deconversión de datos (DX*) 452

identificador de grupo (GI*) 454identificador de instancia de objeto

(OII*) 461identificador de instancia de

transacción IMS (ITI*) 458identificador de juego de caracteres

codificado (CS*) 447identificador de llamada (MQ*) 448identificador de mensaje (MI*) 460identificador de seguridad (SI*) 470información de retorno (FB*) 453inhibir obtener (QA*) 463inhibir poner (QA*) 463intervalo de caducidad (EI*) 452intervalo de espera (WI*) 471intervalo de espera de obtener de

cabecera CICS (WI*) 448longitud de cabecera CICS (CI*) 448longitud de cabecera IMS (II*) 458longitud de datos de salida de

cabecera CICS (OL*) 450longitud de descriptor de objeto

(OD*) 461longitud de estructura de cabecera de

información de carga de trabajo(WI*) 472

longitud de extensión de descriptor demensaje (ME*) 459

longitud de opciones de ponermensaje (PM*) 463

longitud devuelta (RL*) 468longitud original (OL*) 461

constantes, valores de 443(continuación)

longitudes de campos de tipo serie decaracteres y de tipo byte (LN*) 443

máscaras de codificación (EN*) 452máscaras de distintivos de mensaje

(MF*) 460máscaras de opciones de informe

(RO*) 469máscaras y factores de convertir

caracteres (DCC*) 451memorización de restitución

(QA*) 464modalidad de compromiso IMS

(ICM*) 457nivel de mandato (CMLV*) 449nombre de función de cabecera CICS

(CF*) 447notificación de sucesos (EV*) 453notificación de sucesos (QSIE*) 464opciones de abrir (OO*) 461opciones de cerrar (CO*) 449opciones de conectar (CN*) 449opciones de convertir caracteres

(DCC*) 451opciones de emparejar (MO*) 460opciones de empezar (BO*) 445opciones de informe (RO*) 469opciones de obtener mensaje

(GM*) 455opciones de poner mensaje

(PM*) 462permanencia (PE*) 462plataforma (PL*) 462prioridad (PR*) 463punto de sincronismo (SP*) 470recurso de cabecera CICS (FC*) 447respuesta de rutina de salida de

conversión de datos (XR*) 472secuencia de entrega de mensajes

(MS*) 459segmentación (SEG*) 470selectores de atributo de tipo entero

(IA*) 456selectores de atributos de tipo carácter

(CA*) 446símbolo de contabilidad (AC*) 444símbolo de mensaje (MTK*) 460soporte de lista de distribución

(DL*) 451tarea conversacional de cabecera CICS

(CT*) 447tipo de aplicación (AT*) 445tipo de cola (QT*) 464tipo de definición de cola (QD*) 464tipo de desencadenante (TT*) 471tipo de enlace de cabecera CICS

(LT*) 449tipo de identificador de seguridad

(SIT*) 470tipo de mensaje (MT*) 460tipo de objeto (OT*) 462tipo de símbolo de contabilidad

(ATT*) 444utilización (US*) 471valor de atributo de tipo entero

(IAV*) 457

Índice 535

Page 550: amqwak00

constantes, valores de 443(continuación)

versión (formato de tipo carácter) demensaje desencadenante (TC*) 471

versión de cabecera CICS (CI*) 448versión de cabecera de cola de

transmisión (XQ*) 473versión de cabecera de distribución

(DH*) 451versión de cabecera de información de

carga de trabajo (WI*) 472versión de cabecera de mensaje de

referencia (RM*) 469versión de cabecera de mensaje en

espera (DL*) 452versión de cabecera de mensaje no

entregado (DL*) 452versión de cabecera IMS (II*) 458versión de descriptor de mensaje

(MD*) 458versión de descriptor de objeto

(OD*) 461versión de estructura de parámetro de

rutina de salida de conversión dedatos (DX*) 452

versión de extensión de descriptor demensaje (ME*) 459

versión de mensaje desencadenante(TM*) 471

versión de opciones de conectar(CN*) 449

versión de opciones de empezar(BO*) 446

versión de opciones de obtenermensaje (GM*) 455

versión de opciones de poner mensaje(PM*) 463

convenios de notación – lenguaje deprogramación RPG 10

conversión de datosconvenios de proceso 487mensajes de informe 491

conversión de mensajes de informe 491creación de alias

cola de respuestas 327gestor de colas 327

creación de alias de un gestor decolas 327

creación de alias de una cola derespuestas 327

creación de una aplicación 351CRTPGM 351CRTRPGMOD 351CRTRPGPGM 351

Ddesencadenamiento 322dinámica, cola 261

Eestructura de cabecera de cola de

transmisión 203estructura de cabecera de

distribución 37

estructura de cabecera de mensaje dereferencia 177

estructura de cabecera de mensaje noentregado 43

estructura de descriptor de objeto 143estructura de extensión de descriptor de

mensaje 137estructura de opciones de conectar 31estructura de opciones de empezar 15estructura de opciones de obtener

mensaje 51estructura de opciones de poner

mensaje 155estructura de registro de objeto 153estructura de registro de poner

mensaje 173estructura de registro de respuesta 187estructura del descriptor de mensaje 85estructura del mensaje

desencadenante 189estructura MQBO 15estructura MQCIH 17estructura MQCNO 31estructura MQDH 37estructura MQDLH 43estructura MQGMO 51estructura MQIIH 79estructura MQMDE 137estructura MQOD 143estructura MQOR 153estructura MQPMO 155estructura MQPMR 173estructura MQRMH 177estructura MQRR 187estructura MQTM 189estructura MQTMC2 195estructura MQWIH 199estructura MQXQH 203estructuras: lenguaje de programación

RPG 351estructuras – lenguaje de programación

RPG 10

Ffonts de este manual xiiformato PostScript 530formatos incorporados 107

Gglosario 513

HHTML (Hypertext Markup

Language) 530Hypertext Markup Language

(HTML) 530

Iidentificador del juego de caracteres

codificados 340incorporación de formatos 107informe, conversión de mensajes de 491

Llenguaje de programación RPG

archivo COPY 8convenios de notación 10estructuras 10, 351

listas de distribución 314, 343

LLllamada MQBACK 213llamada MQBEGIN 217llamada MQCLOSE 221llamada MQCMIT 227llamada MQCONN 231llamada MQCONNX 237llamada MQCONVX 504llamada MQDISC 239llamada MQGET 241llamada MQINQ 251llamada MQOPEN 261llamada MQPUT 277llamada MQPUT1 287llamada MQSET 295llamada MQXCNVC 499llamadas

convenios utilizados 211descripción detallada

MQBACK 213MQBEGIN 217MQCLOSE 221MQCMIT 227MQCONN 231MQCONNX 237MQCONVX 504MQDISC 239MQGET 241MQINQ 251MQOPEN 261MQPUT 277MQPUT1 287MQSET 295MQXCNVC 499

Mmensajes, orden de los 282, 292Mensajes no comprometidos 345modalidad de compatibilidad 234MQBYTE 3MQBYTEn 4MQCHAR 4MQCHARn 4MQDXP, estructura 493MQHCONN 5MQHOBJ 5MQLONG 5MQMD

estructura 85parámetro 505

MQSeries, publicaciones 527MQSeries para AS/400

consideraciones de punto desincronismo con CICS paraAS/400 353

puntos de sincronismo 352

536 Consulta de programación de aplicaciones (ILE RPG)

Page 551: amqwak00

Oorden de mensajes 246orden del mensaje 282, 292ordenación de mensajes 246

Pparámetro BEGOP 217parámetro BUFFER

llamada MQGET 242llamada MQPUT 278llamada MQPUT1 288

parámetro BUFLENllamada MQGET 242llamada MQPUT 278llamada MQPUT1 288

parámetro CALENllamada MQINQ 257llamada MQSET 297

parámetro CMPCODllamada MQBEGIN 217llamada MQCLOSE 223llamada MQCONN 233llamada MQCONNX 237llamada MQDISC 239llamada MQGET 243llamada MQINQ 257llamada MQOPEN 268llamada MQPUT 279llamada MQPUT1 288llamada MQSET 297llamada MQXCNVC 503

parámetro CNOPT 237parámetro COMCOD

llamada MQBACK 213llamada MQCMIT 227

parámetro CHRATRllamada MQINQ 257llamada MQSET 297

parámetro DATLENllamada MQGET 242llamada MQXCNVC 502

parámetro GMO 242parámetro HCONN

ámbito 233llamada MQBACK 213llamada MQBEGIN 217llamada MQCLOSE 221llamada MQCMIT 227llamada MQCONN 233llamada MQCONNX 237llamada MQDISC 239llamada MQGET 241llamada MQINQ 251llamada MQOPEN 261llamada MQPUT 277llamada MQPUT1 287llamada MQSET 295llamada MQXCNVC 499

parámetro HOBJámbito 267llamada MQCLOSE 221llamada MQGET 241llamada MQINQ 251llamada MQOPEN 267llamada MQPUT 277llamada MQSET 295

parámetro IACNTllamada MQINQ 256llamada MQSET 296

parámetro INBUF 505parámetro INLEN 505parámetro INTATR

llamada MQINQ 257llamada MQSET 297

parámetro MQDXP 504parámetro MSGDSC

llamada MQGET 241llamada MQPUT 277llamada MQPUT1 287

parámetro OBJDSCllamada MQOPEN 261llamada MQPUT1 287

parámetro OPTSllamada MQCLOSE 221llamada MQOPEN 261llamada MQXCNVC 499

parámetro OUTBUF 506parámetro OUTLEN 505parámetro PMO

llamada MQPUT 277llamada MQPUT1 287

parámetro QMNAME 231llamada MQCONNX 237

parámetro REASONllamada MQBACK 213llamada MQBEGIN 217llamada MQCLOSE 223llamada MQCMIT 227llamada MQCONN 233llamada MQCONNX 237llamada MQDISC 239llamada MQGET 243llamada MQINQ 257llamada MQOPEN 268llamada MQPUT 279llamada MQPUT1 288llamada MQSET 297llamada MQXCNVC 503

parámetro SELCNTllamada MQINQ 251llamada MQSET 295

parámetro SELSllamada MQINQ 251llamada MQSET 295

parámetro SRCBUF 502parámetro SRCCSI 502parámetro SRCLEN 502parámetro TGTBUF 502parámetro TGTCSI 502parámetro TGTLEN 502PDF (Portable Document Format) 530permanencia 307Portable Document Format (PDF) 530programa de ejemplo AMQ3ECH4 363programa de ejemplo AMQ3GBR4 358programa de ejemplo AMQ3GET4 359programa de ejemplo AMQ3INQ4 364programa de ejemplo AMQ3PUT4 357programa de ejemplo AMQ3REQ4 360programa de ejemplo AMQ3SET4 366programa de ejemplo AMQ3SRV4 368programa de ejemplo AMQ3TRG4 367programas de ejemplo 355

programas de ejemplo 355(continuación)

consultar 364eco 363establecer 366examinar 358obtener 359petición 360poner 357preparar y ejecutar 357servidor desencadenante 368supervisor de

desencadenamiento 367utilizar colas remotas 369utilizar el desencadenamiento 360

Programas de ejemplo en RPG (ILE) 355publicaciones

MQSeries 527relacionadas 531

publicaciones en copia software 530punto de sincronismo 347

con MQSeries para AS/400 352en aplicaciones CICS para

AS/400 353

QQRPGLESRC 351

Tterminología xiiterminología utilizada en este

manual 513tipos de datos, convenios utilizados 3, 7tipos de datos, descripción detallada

elementalesILE 5MQBYTE 3MQBYTEn 4MQCHAR 4MQCHARn 4MQHCONN 5MQHOBJ 5MQLONG 5visión general 3

estructuraMQBO 15MQCIH 17MQCNO 31MQDH 37MQDLH 43MQDXP 493MQGMO 51MQIIH 79MQMD 85MQMDE 137MQOD 143MQOR 153MQPMO 155MQPMR 173MQRMH 177MQRR 187MQTM 189MQTMC2 195MQWIH 199MQXQH 203

Índice 537

Page 552: amqwak00

tipos de datos, descripción detallada(continuación)

visión general 7tipos de letra de este manual xii

Vvalores AC* 120valores AT*

atributo ApplType 334campo MDPAT 121campo TMAT 192

valores BND* 306valores BO* 15valores CA* 252valores CF* 24valores CI* 19, 116valores CMLV* 341valores CN* 31, 32valores CO* 221valores CRC* 20valores CS* 106valores CU* 21valores de CC* 373valores de DCC* 499valores de DX* 493valores de RC* 374valores de XR* 497valores DH* 38valores DHF* 39valores DL* 45, 315, 343valores EI* 101valores EN* 105valores EV*

atributo AuthorityEvent 338atributo ChannelAutoDefEvent 339atributo InhibitEvent 343atributo LocalEvent 343atributo PerformanceEvent 345atributo QDepthHighEvent 319atributo QDepthLowEvent 320atributo QDepthMaxEvent 320atributo RemoteEvent 346atributo StartStopEvent 347

valores FB* 46, 101valores FM* 107valores GI* 127valores GM* 52valores GS* 74valores HC* 239valores HO* 221valores IA* 252, 296valores IAU* 81valores IAV* 257valores ICM* 82valores II* 80valores ISS* 83valores ITI* 82valores ITS* 82valores LN* 443valores LT* 22valores MD* 87valores ME* 140valores MEF* 141valores MF* 128valores MI* 115valores MO* 72valores MS* 317

valores MT* 98

valores MTK* 75

valores NC* 331

valores OD* 144

valores OII* 180

valores OL* 23, 133

valores OO* 262, 314

valores OT* 144

valores PE* 112, 307

valores PF* 40, 167

valores PL* 346

valores PM* 156

valores PR* 111

valores QA*

atributo InhibitGet 308atributo InhibitPut 308atributo Shareability 322

valores QD* 313

valores QSIE* 321

valores QT* 309, 329

valores RC* 104

valores RL* 76

valores RM* 178, 180

valores RO* 88

valores SCO* 309

valores SEG* 75

valores SI* 150

valores SIT* 150

valores SP* 347

valores SS* 75

valores TC* 196, 322

valores TM* 190

valores TT* 324

valores US* 324

valores WI* 22, 71, 199

valores XQ* 206

538 Consulta de programación de aplicaciones (ILE RPG)

Page 553: amqwak00

Envío de comentarios a IBM

Si ha habido en este manual algún aspecto que le haya gustado o disgustado de unmodo especial, utilice uno de los métodos que se indican a continuación paraenviar sus comentarios a IBM.

No dude en comunicarnos todo aquello que considere errores u omisionesespecíficos, así como todo lo que afecte a la precisión, organización, temas ointegridad del manual.

Por favor, limite sus comentarios a la información que hay en el manual y a supresentación.

Si desea pedir otras publicaciones o hacer preguntas o comentarios sobre lasfunciones de productos o sistemas de IBM, póngase en contacto con elrepresentante o concesionario autorizado de IBM.

Cuando envía sus comentarios a IBM, concede a IBM un derecho no exclusivo autilizar o distribuir los comentarios en la forma que considere adecuada y sinincurrir por ello en ninguna obligación para con usted.

Puede enviar sus comentarios a IBM de una de las siguientes formas:v Por correo, a esta dirección:

IBM S.A.National Language Solutions CenterEdificio l’IllaAvda. Diagonal, 57108029 BarcelonaEspaña

v Por fax:– Desde fuera de España, después del código de acceso internacional, utilice

34–933 216 134– Desde España, utilice 933 216 134

v A través de Internet utilice:– [email protected]

Sea cual sea el método que utilice, no olvide incluir:v El número y el título de la publicaciónv El tema al que se refieren sus comentariosv Su nombre y dirección/número de teléfono/número de fax/ID de red

© Copyright IBM Corp. 1994, 2000 539

Page 554: amqwak00

IBM

SC10-3412-00

Page 555: amqwak00

Spine information:

IBM MQSeries® para AS/400® Consulta de programación de aplicaciones (ILE RPG) Versión 5 Release 1