Exit MQSeries de Generación de Reportes

Utilitarios artesanales que desarrollamos para nosotros y deseamos compartir (en HLASM)
Avatar de Usuario
LuisFer
Colaborador Senior
Colaborador Senior
Mensajes: 366
Registrado: 27 May 2006, 16:06
País: España
Ciudad: Madrid
Ocupación: IT Specialist

Exit MQSeries de Generación de Reportes

Mensajepor LuisFer » 17 Nov 2007, 12:02

Esta exit cambia en la MD del Mensaje MQ las opciones de Report
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)                                                     
/*                                                                     


Por favor, si encontrais algun error no dudeis en hacermelo saber
Gracias
No me sigas, puedo no guiarte, no vayas delante , puedo no seguirte, caminemos juntos y sé simplemente, mi amigo.

Volver a “... en HLASM”