Es util para saber cuanto tarda en llegar un Mensaje al MQ de Destino
No impacta ni en rendimiento ni en tiempo de respuesta
Código: Seleccionar todo
//JObname JOB (xx,xxx,xxx),' ',
//***---------------------------------------------------------------***
//***---------------------------------------------------------------***
//PA001ASM EXEC PGM=ASMA90,
// REGION=1024K,
// PARM='DECK,NOOBJECT,LIST'
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
// DD DSN=MQhlq.SCSQMACS,DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSUT2 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSUT3 DD UNIT=SYSDA,SPACE=(1700,(400,400))
//SYSPUNCH DD DSN=&&LOADSET,
// UNIT=SYSDA,DISP=(,PASS),
// SPACE=(400,(100,100,1))
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
MQEXITR TITLE 'MQSERIES EXIT DE MENSAJES DE CANAL REPORTS '
***********************************************************************
* *
* SOFTWARE: MQEXITR - EXIT DE MENSAJES DE CANAL GENERAR REPORTS*
* (C) COPYRIGHT Nacho/Luisfer 2004 *
* *
* ESTADO: VERSION 1 RELEASE 1 *
* MODIFICADO: 23 JULIO 2005 *
* *
* AUTOR: Nacho/LuisFer *
* *
* DESCRIPCION: SITUADA COMO EXIT DE MENSAJES EN LOS CANALES TIPO *
* SDR OBLIGA A ENVIAR UN REPORT COA *
* LA UTILIDAD ES PARA SABER CUANDO LLEGA UN MENSAJE *
* AL MQ DE DESTINO *
* Modificado: 17 de Noviembre de 2007 *
* *
* Autor: Nacho/LuisFer *
* *
* Descripcion: Publicar como código abierto para Dinoland.com.ar *
* *
* Aviso: Este fuente se distribuye "como es" es decir sin ningun *
* tipo de garantía ni soporte por su uso. *
* Por favor, si Vd encuentra este software util una donacion *
* al sitio que lo publica y/o a una ONG (legal) será de agra-*
* decer *
***********************************************************************
* EQUATES *
***********************************************************************
*
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
*
**********************************************************************
* MQCXP DSECT. *
**********************************************************************
MQCXP CMQCXPA DSECT=YES,LIST=YES
**********************************************************************
* MQCD DSECT. *
**********************************************************************
MQCD CMQCDA DSECT=YES,LIST=YES
**********************************************************************
* DATALEN DSECT. *
**********************************************************************
LENDSECT DSECT
DATALEN DS CL4
**********************************************************************
* MQXQH DSECT. *
**********************************************************************
MQXQH CMQXQHA DSECT=YES,LIST=YES
**********************************************************************
* WORK AREA DSECT. *
**********************************************************************
WORK DSECT
*
SAVEAREA DS 18F SAVE AREA
*
WTOE DS 0F WTO PARMLIST (ERROR)
WTOELEN DS CL02 LONGITUD
WTOEFLAG DS CL02 MCS FLAGS
WTOETXT1 DS CL10 NOMBRE DE LA EXIT
WTOETXT2 DS CL09 NOMBRE
WTOETXT3 DS CL27 1 PARTE DEL TEXTO
WTOETXT4 DS CL19 2 PARTE DEL TEXTO
WTOEDESC DS CL02 DESCRIPTOR CODE
WTOERCDE DS CL02 ROUTING CODE
*
WORKLEN EQU *-WORK
*
*********************************************************************
* SALVAR REGISTROS , GETMAIN, DIRECCIONAMIENTO *
*********************************************************************
MQEXITR CSECT
MQEXITR AMODE 31
MQEXITR RMODE ANY
*
STM R14,R12,12(R13) SAVE REGISTERS
LR R12,R15 SET BASE REGISTER
USING MQEXITR,R12 SET ADDRESSABILITY
LR R11,R1 SAVE PARMLIST ADDRESS
*
GETMAIN RU,LV=WORKLEN,LOC=(RES,ANY)
*
ST R13,4(R1) SAVEAREA BACKWARD CHAIN
ST R1,8(R13) SAVEAREA FORWARD CHAIN
LR R13,R1 SET SAVE AREA ADDRESS
USING WORK,R13 SET ADDRESSABILITY
*********************************************************************
* LOCALIZACION DE PARAMETROS *
*********************************************************************
L R10,0(R11) R10 = MQCXP ADDR
USING MQCXP,R10
*
L R9,4(R11) R9 = MQCD ADDR
USING MQCD,R9
*
L R8,8(R11) R8 = DATA LENGTH ADDR
USING LENDSECT,R8
*
L R7,16(R11) R7 = MQXQH ADDR
USING MQXQH,R7
*
*********************************************************************
* RESPUESTA AL LLAMADRO (MQ) POR DEFECTO *
*********************************************************************
MVC MQCXP_EXITRESPONSE,=A(MQXCC_OK)
*********************************************************************
* CHEQUEAR TIPO DE CANAL *
*********************************************************************
* CLC MQCD_CHANNELTYPE,=A(MQCHT_RECEIVER)
* BE CONT04
* CLC MQCD_CHANNELTYPE,=A(MQCHT_CLUSRCVR)
* BE CONT04
* BNE QUIT
CONT04 EQU *
*********************************************************************
* CHEQUEAR TIPO DE EXIT (EN ESTE CASO DE MENSAJES) *
*********************************************************************
CLC MQCXP_EXITID,=A(MQXT_CHANNEL_MSG_EXIT)
BNE QUIT
*********************************************************************
* CHEQUEAR REASON DE LA EXIT *
*********************************************************************
CLC MQCXP_EXITREASON,=A(MQXR_MSG)
BNE QUIT
*********************************************************************
* GENERAR EL REPORT *
**DELIVERY FULL DATA ************************************************
MVC MQXQH_MSGDESC_REPORT,=A(MQRO_COD_WITH_FULL_DATA)
**DELIVERY 100 BYTES ************************************************
* MVC MQXQH_MSGDESC_REPORT,=A(MQRO_COD_WITH_DATA)
**DELIVERY MD ************************************************
* MVC MQXQH_MSGDESC_REPORT,=A(MQRO_COD)
**ARRIVAL MD ************************************************
* MVC MQXQH_MSGDESC_REPORT,=A(MQRO_COA)
**ARRIVAL 100 BYTES ************************************************
* MVC MQXQH_MSGDESC_REPORT,=A(MQRO_COA_WITH_DATA)
**ARRIVAL COMPLETO ************************************************
* MVC MQXQH_MSGDESC_REPORT,=A(MQRO_COA_WITH_FULL_DATA)
**NOMBRE DE LA COLA DE DESTINO DE LO MENSAJES DE REPORT************ *
MVC MQXQH_MSGDESC_REPLYTOQ,=CL48'REPORTES'
******************************************************************* *
* FIN DE PROGRAMA *
******************************************************************* *
QUIT EQU *
*
L R13,4(,R13) RESTORE CALLER SAVE AREA ADDR
*
L R1,8(,R13)
FREEMAIN RU,LV=WORKLEN,A=(R1) FREE SAVE AREA
*
LM R14,R12,12(R13) RESTORE REGISTERS
*
SR R15,R15 RC=0
BR R14 RETURN
*
* ***************************************************************** *
* MQ API CONSTANTS. *
* ***************************************************************** *
*
CMQA LIST=YES,EQUONLY=NO
*
* ***************************************************************** *
* MQ DQM CONSTANTS. *
* ***************************************************************** *
*
CMQXA LIST=YES,EQUONLY=NO
*
* ***************************************************************** *
* ACTION WTO CONSTANTS. *
* ***************************************************************** *
*
* ***************************************************************** *
*
LTORG TO INCLUDE LITERAL POOLS
*
END
*
/*
//***---------------------------------------------------------------***
//PA0020LK EXEC PGM=IEWL,REGION=1024K,
// PARM=(LIST,LET,XREF,RENT),COND=(7,LT,PA001ASM)
//SYSOBJ DD DSN=MQhlq.SCSQLOAD,DISP=SHR
//SYSLMOD DD DSN=CARGABLE,DISP=(SHR,KEEP)
//SYSUT1 DD UNIT=SYSDA,DCB=BLKSIZE=1024,
// SPACE=(1024,(200,20))
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
//SYSIN DD *
INCLUDE SYSOBJ(CSQXSTUB)
NAME MQEXITR(R)
/*
Gracias