CMRPROG UTILITAIRE MAINVIEW CICS BATCH de REPORTING des STATISTIQUES TRANSACTIONS et/ou PROGRAMMES CICS
UTILITAIRE MAINVIEW CICS BATCH de REPORTING des STATISTIQUES TRANSACTIONS et/ou PROGRAMMES CICS OBJECTIFS DE CE PROGRAMME Notre outil de métrologie (TDS) ne nous permettant pas d’avoir des statistiques au niveau des appels de programmes CICS (seulement au niveau transactionnel), il nous manquait un outil apte à nous fournir les éléments suivants: - Liste des programmes exécutés au sein d’un code transaction pour des besoins de traçabilité fonctionnelle et de cartographie applicative. - Consommation CPU d’un programme pour des besoins de suivi de production et d’optimisation de la facturation. En effet, la multiplication de requêtes java générant des flux hétérogènes (SNA, MQ, CTG) convergeant vers nos CICS et déclenchant des « services métier » nous a fait perdre petit à petit de la visibilité fonctionnelle et transactionnelle (certains codes transaction devenant « génériques »). Nous avions besoin d’un outil apte à nous aider à retrouver cette visibilité.
UTILITAIRE MAINVIEW CICS BATCH de REPORTING des STATISTIQUES TRANSACTIONS et/ou PROGRAMMES CICS Ce programme (adapté à partir du SAMPLE Cobol BMC CMRCOB12) s’appuie, pour chaque CICS, sur les fichiers de collecte CMRDETL 1 & 2. Ce programme fait un CALL à la routine CMRFREDN pour lire chaque enregistrement et alimenter les champs. C’est le COPY COBOL CMRCOBCN (BBSAMP) qui est utilisé comme masque pour les enregistrement CMRDETL afin de mapper les zones des ressources de type programme. A ce titre, il faudra prendre soin de recompiler le programme avec le COPY COBOL fourni avec chaque nouvelle version de MVCICS. PRINCIPE DU PROGRAMME Pour chaque enregistrement CMRDETL lu, on récolte les informations utiles au niveau tâche (transaction) comme la durée ELAPSED, la consommation CPU et la durée passée dans DB2. Toujours au sein de cet enregistrement principal, le programme va balayer une série de sous-enregistrements. Chacun d’eux est « taggé » du sceau d’une ressource utilisée au sein de la transaction (programme=‘§’, Queue MQ=‘Q’, plan DB2=‘2’, TS, TD, etc…). On voit là l’éventail des possibilités offertes par cet outil. Pour notre besoin, on ne va extraire que les sous-enregistrements de type « programme » et récupérer son nom et sa consommation CPU unitaire. Ainsi, et selon les critères de sélection précisés en SYSIN du job, pour un code transaction donné on peut obtenir la durée ELAPSED, la consommation CPU et le temps passé dans DB2 pour la transaction ainsi que la consommation CPU de chaque programme exécuté par ce code transaction. En fin de REPORT, on trouvera une synthèse indiquant la consommation et la durée moyenne de la transaction.
UTILITAIRE MAINVIEW CICS BATCH de REPORTING des STATISTIQUES TRANSACTIONS et/ou PROGRAMMES CICS EXECUTION DU PROGRAMME Job Batch paramétrable via sa SYSIN. Comme pour l’utilitaire de base CMRPRL, il se base sur les fichiers de collecte CMRDETL actifs (1 ou 2) ou bien si l’on souhaite remonter dans le temps, sur leurs archives, ici de type GDG. Ces derniers peuvent être concaténés comme ci-dessous si l’on désire faire du reporting sur plusieurs jours. //CMRPROG EXEC PGM=CMRPROG,REGION=0M //STEPLIB DD DSN=S$PDT.$0BBEP0A.BBLINK,DISP=SHR // DD DSN=S$PDT.$0CTSP0A.UDFHLOAD,DISP=SHR //SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(50,5)) //SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(50,5)) //SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(50,5)) //CMRDETL DD DISP=SHR,DSN=S$CEN.$0CMRP0A.CICSBPS.CMRDETL2 //*MRDETL DD DSN=S$CEN.$0CMRP0A.CICSBPS.HISTORY.G6533V00,DISP=SHR //* DD DSN=S$CEN.$0CMRP0A.CICSBPS.HISTORY.G6534V00,UNIT=AFF=CMRDETL,DISP=SHR //CARDIN DD * CICS=CICSBPS DATE=20161004 TRAN=ZCXC TIM1=140000 TIM2=140500 /* Les paramètres de SYSIN ci-contre permettent le reporting du code transaction ZCXC sur le CICSBPS le 04 Octobre 2016 entre 14h & 14h05
UTILITAIRE MAINVIEW CICS BATCH de REPORTING des STATISTIQUES TRANSACTIONS et/ou PROGRAMMES CICS Valeur des CARTES en SYSIN (OBLIGATOIRES / FACULTATIVES) CICS= STC du CICS DATE=Date de début de la campagne (YYYYMMJJ) TIM1=Heure de début de la campagne (HHMMSS) TIM2=Heure de fin de la campagne (HHMMSS) TRAN=Code transaction ciblé PROG=Nom du programme ciblé RECD=6D=Transactions en ABEND (enregistrements de type 6E par défaut) Si l’on ne code que les cartes obligatoires on aura, à chaque passage de transaction dans la fourchette de temps indiquée, une ligne par transaction ainsi qu’une ligne par programme exécuté par cette transaction (mais ce n’est pas vraiment l’objectif de ce programme), Si on ne code que TRAN, on aura tous les programmes utilisés par cette transaction (exemple précédent), soit une ligne de reporting pour la transaction globale et une ligne de reporting par programme (une seule ligne cumulée pour un même programme appelé plusieurs fois dans la même tâche). Si on ne code que PROG, on aura la liste de toutes les transactions qui exécutent ce programme (cartographie), soit une seule ligne de reporting par tâche. Si on code les deux, on aura que la liste des tâches dont le code transaction est mentionné et qui exécutent ce programme (une seule ligne pas passage). Si on ne code pas TIM2, on aura un report qui ira jusqu’à la fin de la journée, soit 23:59:59. CICS=CICSBPS DATE=20161004 TRAN=ZCXC TIM1=140000 TIM2=140500
UTILITAIRE MAINVIEW CICS BATCH de REPORTING des STATISTIQUES TRANSACTIONS et/ou PROGRAMMES CICS CICS=CICSBPS DATE=20161004 TRAN=ZCXC TIM1=140000 TIM2=140500 Exemple de REPORT avec carte TRAN HEURE TASKID TRANID PROGRAM NOMBRE TRANSAC DB2 NAME PROGRAMME RESPONSE CPU TIME ---------- ------ -------- ----------- --------- ------- 14:00:024 41057 ZCXC BSTC5101 1 .022917 .007605 .000319 .016956 CXCEP111 .000589 CXCIP110 XTTMS1 HEQ1 10 .005086 XTINT0 .000107 LTABT2 59 .001201 CXCOP110 .000300 14:00:071 41144 .042288 .006800 .000567 .037144 .000079 .000149 .004586 .000150 50 .000817 .000450 =================================================================================== == TOTAL PAR TRANSACTION ZCXC === TOTAL NB TRANS: 109 === MOY TRANS RESP: 0.023532 === MOY TRANS CPU : 0.005406 === MOY DB2 TIME : 0.018293 On cherche ici à cartographier la transaction ZCXC ou à observer sa performance
CICS=CICSBPS DATE=20161004 PROG=HEQ1 TIM1=140000 TIM2=140500 UTILITAIRE MAINVIEW CICS BATCH de REPORTING des STATISTIQUES TRANSACTIONS et/ou PROGRAMMES CICS Exemple de REPORT avec carte PROG HEURE TASKID TRANID PROGRAM NOMBRE TRANSAC DB2 NAME PROGRAMME RESPONSE CPU TIME ---------- ------ -------- ----------- --------- ------- 14:00:040 14221 ZCXC HEQ1 4 .010100 .004799 .003101 .007195 14:00:072 14266 .013746 .005899 .002933 .006589 14:00:075 14268 5 .045962 .010512 .006245 .033300 14269 2 .007184 .004121 .002888 .004686 14:00:083 14273 3 .023694 .004641 .003108 .021441 14:01:003 15590 10 .078160 .008690 .005783 .070351 14:01:012 15600 ZATE 1 .096078 .011303 .007198 .085963 14:01:015 15601 .263064 .013711 .009250 .255280 14:01:058 15726 ZPER .025676 .002643 .001513 .023943 14:01:071 15796 .003615 .002508 .000750 .001865 14:02:017 17066 ZPOS .013812 .002627 .001384 .011908 14:02:033 17093 Z345 .027757 .003085 .001663 .024518 14:02:034 17095 Z530 .042507 .005047 .003223 .039775 17097 .048274 .008190 .005608 .042961 14:02:065 17169 .003814 .002909 .001676 .002189 14:02:094 17248 .013561 .008808 .004231 .005957 =================================================================================== == TOTAL PAR PROGRAMME HEQ1 === TOTAL NB PROG : 644 === MOY PROG CPU : 0.000625 ================================== On cherche ici à identifier l’appel du programme HEQ1
CICS=CICSBPS DATE=20161004 TRAN=ZCXC PROG=HEQ1 TIM1=140000 TIM2=140500 UTILITAIRE MAINVIEW CICS BATCH de REPORTING des STATISTIQUES TRANSACTIONS et/ou PROGRAMMES CICS Exemple de REPORT avec carte TRAN & carte PROG HEURE TASKID TRANID PROGRAM NOMBRE TRANSAC DB2 NAME PROGRAMME RESPONSE CPU TIME ---------- ------ -------- ----------- --------- ------- 14:00:040 14221 ZCXC HEQ1 4 .010100 .004799 .003101 .007195 14:00:072 14266 .013746 .005899 .002933 .006589 14:00:075 14268 10 .045962 .010512 .006245 .033300 14269 2 .007184 .004121 .002888 .004686 14:00:083 14273 3 .023694 .004641 .003108 .021441 14:01:003 15590 .078160 .008690 .005783 .070351 14:01:012 15600 .096078 .011303 .007198 .085963 14:01:015 15601 .263064 .013711 .009250 .255280 14:01:058 15726 1 .025676 .002643 .001513 .023943 14:01:071 15796 .003615 .002508 .000750 .001865 14:02:017 17066 .013812 .002627 .001384 .011908 14:02:033 17093 .027757 .003085 .001663 .024518 14:02:034 17095 .042507 .005047 .003223 .039775 17097 .048274 .008190 .005608 .042961 =================================================================================== == TOTAL PAR TRANSACTION ZCXC == & PROGRAMME HEQ1 === TOTAL NB TRANS: 114 === TOTAL NB PROG : 644 === MOY TRANS RESP: 0.030377 === MOY TRANS CPU : 0.005829 === MOY PROG CPU : 0.003532 === MOY DB2 TIME : 1.168435 ==================================================== On cherche ici à observer le comportement du programme HEQ1 au sein de la transaction ZCXC