Reportes batch que exploten información de SYSVIEW

Todo lo relacionado al CICS .
Responder
RGutR

Reportes batch que exploten información de SYSVIEW

Mensaje por RGutR »

Estoy usando SYSVIEW R12.7 y quisiera obtener reportes batch con información de CICS
Necesito analizar consumo de recursos CICS por transacción o programa para saber si debo optimizar algunas aplicaciones de negocio de mi institución
Agradeceré si me pueden indicar una ruta donde pueda encontrar un manual para generar reportes desde SYSVIEW o enviar un JOB como ejemplo.

Saludos
Vicente

Re: Reportes batch que exploten información de SYSVIEW

Mensaje por Vicente »

Hola:
En la versión 13.0 debido a quejas de los usuarios, CA ha vuelto a poner el Report Writer que quitó.
(Existe un manual de Report Writer).
En la librería de sysview CNM4RSAM, de esta release 13, hay ejemplos para reports de CICS y otros.
Una buena opción es que actualices a la versión 13.
Si decides hacerlo podré proporcionarte algunos ejemplos para que puedas empezar con Report Writer.

Mientras tanto, durante las releases en que estuvo quitado el Report Writer, los usuarios hemos tenido que escribir código en EARL o EASYTRIEVE para obtener los reports a partir de los registros que SYSVIEW guarda en los ficheros de SMF (Si se ha configurado así al instalar. En mi caso con el tipo 255).
Para ayudar en esto CA proporcionaba ejemplos en las librerías SAMPLIB y MACLIB y de SYSVIEW.
(Este sistema y ejemplos se han mantenido en la release 13.)

En tu caso, con la 12.7:
El procedimiento consistiría en utilizar la herramienta de IBM, IFASMFDP, para extraer estos registros del los ficheros SMF y después procesar la salida con el código escrito por tí o de los ejemplos de CA, para las herramientas de SYSVIEW.

En mi siguiente post, te dejaré los códigos y jcls que en su momento escribí para mi instalación, espero que adaptándolos y estudiando las macros y ejemplos de CA, que se utilizan, puedas resolver tu problema.

Un saludo
Vicente

Re: Reportes batch que exploten información de SYSVIEW

Mensaje por Vicente »

Hola de nuevo:
Durante el mes de agosto estoy de vacaciones, por lo que si me pides algo más de ayuda, mis respuestas serán imprevisibles en tiempos y contenidos. Pero si esperas el tiempo suficiente acabaré contestando.

Lo que sigue son dos programas escritos para SYSVIEW (versiones 11, 12, 13) con los que listar estadísticas de CICS, más el JCL necesario.

Programa CICSTRN1:

Código: Seleccionar todo

MACRO 0 EACH    'DAY'          +                                       
        SHIFT   '11:30 14:00'  +                                       
        FROM    'ALL'          +                                       
        TO      'ALL'          +                                       
        RECTYPE 255            +                                       
        JOBCICS '        '     +                                       
        TITULO  '3 ESTADISTICAS CICS EN HORARIO PUNTA'                 
* ******************************************************************* *
* Estadisticas de transacciones del CICSP1 en horario punta           *
* Hace los siguientes 3 listados:                                     *
* LISTADO1: transacciones y tiempos sumarizado por horas y dias       *
* LISTADO2: transacciones y tiempos sumarizado por dias                
* LISTADO3: transacciones y tiempos sumarizado por horas               
* ******************************************************************* *
*                                                                      
%SYSVCDEF RECTYPE &RECTYPE    +                                        
          EACH    '&EACH'     +                                        
          FROM    '&FROM'     +                                        
          TO      '&TO'       +                                        
          SHIFT   '&SHIFT'    +                                        
          RECNAME XPFCMNS     +                                        
          SEGMENT MNS_CLOCKS                                           
                                                                       
*---------------------------------------------------------------------*
* LLama a los procedimientos:                                         *
*                                                                     *
* SYSVCDEF Contiene las definiciones de las variables globales y de   *
*          los registros y campos de SMF                              *
* SYSVPROC Contiene porcedimientos comunes de, entre ellos los que    *
*          siguen:                                                    *
* SET-PARMS para decodificar EACH, FROM, TO y SHIFT y pone los        *
*           valores apropiados en las variables globales usadas       *
*           durante la seleccion y filtrado de registros del SMF      *
* SELECT-REC Filtra y selecciona los registros de tipo y subtipo      *
*            deseados, en funciones de EACH, FROM, TO y SHIFT         *
*---------------------------------------------------------------------*
*                                                                      
FILE LISTADO1 PRINTER                                                  
FILE LISTADO2 PRINTER                                                  
FILE LISTADO3 PRINTER                                                  
*                                                                      
JOB INPUT SMFIN START SET-PARMS.                                       
DEFINE CICSNAME  W 8 A VALUE '&JOBCICS'                                
DEFINE DIA       W 2 A VALUE '  '                                      
DEFINE FECHA TSTAMP 10 A.                                              
DEFINE HORA  TSTAMP +11 2 A.                                           
DEFINE TIMEVALUE W 10 P 0                                              
DEFINE RANGE0    W 4 B 0                                               
DEFINE RANGE1    W 4 B 0                                               
DEFINE RANGE3    W 4 B 0                                               
DEFINE RANGE5    W 4 B 0                                               
DEFINE RANGE10   W 4 B 0                                               
DEFINE IRANGE0   S 7 N MASK('Z,ZZZ,ZZ9')                               
DEFINE IRANGE1   S 7 N MASK('Z,ZZZ,ZZ9')                               
DEFINE IRANGE3   S 7 N MASK('Z,ZZZ,ZZ9')                               
DEFINE IRANGE5   S 7 N MASK('Z,ZZZ,ZZ9')                               
DEFINE IRANGE10  S 7 N MASK('Z,ZZZ,ZZ9')                               
DEFINE PERCENT0  S 4 N MASK('ZZ9.9')                                   
DEFINE PERCENT1  S 4 N MASK('ZZ9.9')                                   
DEFINE PERCENT3  S 4 N MASK('ZZ9.9')                                   
DEFINE PERCENT5  S 4 N MASK('ZZ9.9')                                   
DEFINE PERCENT10 S 4 N MASK('ZZ9.9')                                   
DEFINE RATE      S 5 N 2                                               
                                                                       
*---------------------------------------------------------------------*
* Selecciona los registros que cumplen los requerimientos para alguno *
* de los 3 listados                                                   *
*---------------------------------------------------------------------*
PERFORM SELECT-REC .                                                   
                                                                       
IF SELECTED = 'T' AND MNS_JOBNAME = CICSNAME                           
  RANGE0  = 0                               
  RANGE1  = 0                               
  RANGE3  = 0                               
  RANGE5  = 0                               
  RANGE10 = 0                               
                                            
  %CONVBTOP MNS_LIFETIME_TIME  TIMEVALUE  . 
                                            
  IF TIMEVALUE              < 1000000       
    RANGE0 = 1                              
  ELSE-IF TIMEVALUE         < 3000000       
    RANGE1 = 1                              
  ELSE-IF TIMEVALUE         < 5000000       
    RANGE3 = 1                              
  ELSE-IF TIMEVALUE         < 10000000      
    RANGE5 = 1                              
  ELSE                                      
    RANGE10 = 1                             
   END-IF                                                              
   DIA = TSDAY                                                         
   PRINT LISTADO1                                                      
   PRINT LISTADO2                                                      
   PRINT LISTADO3                                                      
END-IF                                                                 
                                                                       
%SYSVPROC. *Common subroutines                                         
                                                                       
*---------------------------------------------------------------------*
* En HORARIO PUNTA: listado de transacciones y tiempos dividido por   *
* horas y dias                                                        *
*---------------------------------------------------------------------*
REPORT LISTADO1  SUMMARY SUMCTL DTLCOPYALL TALLYSIZE 8   +             
       LINESIZE 132 NOADJUST NODATE PRINTER LISTADO1 SPACE 1           
  SEQUENCE TITLE-TSTAMP                                                
* CONTROL FINAL NOPRINT TITLE-TSTAMP                                   
  CONTROL FINAL DIA   TITLE-TSTAMP                                     
 SUM RANGE0 RANGE1 RANGE3 RANGE5 RANGE10                           
                                                                   
 TITLE 1 RPTDATE ' &JOBCICS' 'EN HORARIO PUNTA.' +                 
  'TRANSACCIONES Y TIEMPOS DIARIOS DIVIDIDO POR HORAS'             
 TITLE 2 'Desde:' LOW-STAMP '  Cada: &EACH  Horario: &SHIFT'       
                                                                   
 HEADING TITLE-TSTAMP  ('  FECHA   HORA'  '---------- -----')      
 HEADING TALLY         ('NUMERO DE' 'TRANSACIONES' '------------') 
 HEADING RATE          ('TRANS/' 'SEG.'        '------')           
 HEADING IRANGE0       ('TRANSAC.' '0-1 SEG.'  '----------')       
 HEADING IRANGE1       ('TRANSAC.' '1-3 SEG.'  '----------')       
 HEADING IRANGE3       ('TRANSAC.' '3-5 SEG.'  '----------')       
 HEADING IRANGE5       ('TRANSAC.' '5-10 SEG.' '----------')       
 HEADING IRANGE10      ('TRANSAC.' '> 10 SEG.'  '----------')      
 HEADING PERCENT0      ('%TRAN'  '0-1 S'   '-----')                
 HEADING PERCENT1      ('%TRAN'  '1-3 S'   '-----')                
 HEADING PERCENT3      ('%TRAN'  '3-5 S'   '-----')                
 HEADING PERCENT5      ('%TRAN'  '5-10S'  '-----')                 
  HEADING PERCENT10     ('%TRAN'  '> 10S'  '-----')
                                                   
  LINE TITLE-TSTAMP TALLY RATE +                   
       IRANGE0  PERCENT0 +                         
       IRANGE1  PERCENT1 +                         
       IRANGE3  PERCENT3 +                         
       IRANGE5  PERCENT5 +                         
       IRANGE10 PERCENT10                          
                                                   
BEFORE-BREAK. PROC                                 
  IRANGE0   = RANGE0                               
  IRANGE1   = RANGE1                               
  IRANGE3   = RANGE3                               
  IRANGE5   = RANGE5                               
  IRANGE10  = RANGE10                              
  PERCENT0  = (1000 * RANGE0)  / TALLY             
  PERCENT1  = (1000 * RANGE1)  / TALLY             
  PERCENT3  = (1000 * RANGE3)  / TALLY             
  PERCENT5  = (1000 * RANGE5)  / TALLY                              
  PERCENT10 = (1000 * RANGE10) / TALLY                              
  RATE      = TALLY / INTERVAL                                      
  IF LEVEL = 2                                                      
     DISPLAY '---------- ----- ------------ ------ ' +              
             '---------- ----- ---------- ----- ---------- ----- ' +
             '---------- ----- ---------- -----'                    
  END-IF                                                            
END-PROC.                                                           
*                                                                   
AFTER-BREAK. PROC                                                   
  IF LEVEL = 2                                                      
    DISPLAY  SKIP 0 POS 1 'TOTALES DIA '                            
    DISPLAY '----------------------------------------' +            
            '--------------------------------------------------' +  
            '-----------------'                                     
  END-IF                                                            
  IF LEVEL = 3                                                      
    DISPLAY  SKIP 0 POS 1 'TOTALES '                                   
    DISPLAY '----------------------------------------' +               
            '--------------------------------------------------' +     
            '-----------------'                                        
 END-IF                                                                
END-PROC                                                               
*                                                                      
*---------------------------------------------------------------------*
* En HORARIO PUNTA: listado de transacciones y tiempos dividido por   *
* dias                                                                *
*---------------------------------------------------------------------*
REPORT LISTADO2  SUMMARY SUMCTL DTLCOPYALL TALLYSIZE 8   +             
       LINESIZE 132 NOADJUST NODATE PRINTER LISTADO2 SPACE 1 SKIP 0    
  SEQUENCE TITLE-TSTAMP                                                
* CONTROL FINAL NOPRINT TITLE-TSTAMP                                   
  CONTROL FINAL FECHA                                                  
  SUM RANGE0 RANGE1 RANGE3 RANGE5 RANGE10                              
                                                                       
 TITLE 1 RPTDATE ' &JOBCICS' 'EN HORARIO PUNTA.' +                
        'TRANSACCIONES Y TIEMPOS DE RESPUESTA POR DIA'            
 TITLE 2 'Desde:' LOW-STAMP '  Cada: &EACH  Horario: &SHIFT'      
                                                                  
 HEADING FECHA         ('  FECHA'  '----------')                  
 HEADING TALLY         ('NUMERO DE' 'TRANSACIONES' '------------')
 HEADING IRANGE0       ('TRANSAC.' '0-1 SEG.'  '----------')      
 HEADING IRANGE1       ('TRANSAC.' '1-3 SEG.'  '----------')      
 HEADING IRANGE3       ('TRANSAC.' '3-5 SEG.'  '----------')      
 HEADING IRANGE5       ('TRANSAC.' '5-10 SEG.' '----------')      
 HEADING IRANGE10      ('TRANSAC.' '> 10 SEG.'  '----------')     
 HEADING PERCENT0      ('%TRAN'  '0-1 S'   '-----')               
 HEADING PERCENT1      ('%TRAN'  '1-3 S'   '-----')               
 HEADING PERCENT3      ('%TRAN'  '3-5 S'   '-----')               
 HEADING PERCENT5      ('%TRAN'  '5-10S'  '-----')                
 HEADING PERCENT10     ('%TRAN'  '> 10S'  '-----')                
                                                                  
 LINE FECHA TALLY       +                                         
       IRANGE0  PERCENT0 +                        
       IRANGE1  PERCENT1 +                        
       IRANGE3  PERCENT3 +                        
       IRANGE5  PERCENT5 +                        
       IRANGE10 PERCENT10                         
                                                  
BEFORE-BREAK. PROC                                
  IRANGE0   = RANGE0                              
  IRANGE1   = RANGE1                              
  IRANGE3   = RANGE3                              
  IRANGE5   = RANGE5                              
  IRANGE10  = RANGE10                             
  PERCENT0  = (1000 * RANGE0)  / TALLY            
  PERCENT1  = (1000 * RANGE1)  / TALLY            
  PERCENT3  = (1000 * RANGE3)  / TALLY            
  PERCENT5  = (1000 * RANGE5)  / TALLY            
  PERCENT10 = (1000 * RANGE10) / TALLY            
  RATE      = TALLY / INTERVAL                    
  IF LEVEL = 2                                                          
     DISPLAY '---------- ------------ ---------- ----- ' +              
             '---------- ----- ---------- ----- ---------- ----- ' +    
             '---------- -----'                                         
  END-IF                                                                
END-PROC.                                                               
*                                                                       
AFTER-BREAK. PROC                                                       
  IF LEVEL = 2                                                          
    DISPLAY  SKIP 0 POS 1 'TOTAL'                                       
    DISPLAY '----------------------------------------' +                
            '--------------------------------------------------' +      
            '-----------------'                                         
 END-IF                                                                 
END-PROC.                                                               
*                                                                       
*---------------------------------------------------------------------* 
* En HORARIO PUNTA: listado de transacciones y tiempos dividido por   * 
* horas                                                               *
*---------------------------------------------------------------------*
REPORT LISTADO3  SUMMARY SUMCTL DTLCOPYALL TALLYSIZE 8   +             
       LINESIZE 132 NOADJUST NODATE PRINTER LISTADO3 SPACE 1           
  SEQUENCE HORA                                                        
* CONTROL FINAL NOPRINT TITLE-TSTAMP                                   
  CONTROL FINAL HORA                                                   
  SUM RANGE0 RANGE1 RANGE3 RANGE5 RANGE10                              
                                                                       
  TITLE 1 RPTDATE ' &JOBCICS' 'EN HORARIO PUNTA.' +                    
       'TRANSACCIONES Y TIEMPOS DE RESPUETA POR HORAS'                 
  TITLE 2 'Desde:' LOW-STAMP '  Cada: &EACH  Horario: &SHIFT'          
                                                                       
  HEADING HORA          ('HORA' 'DESDE' '-----')                       
  HEADING TALLY         ('NUMERO DE' 'TRANSACIONES' '------------')    
  HEADING IRANGE0       ('TRANSAC.' '0-1 SEG.'  '----------')          
  HEADING IRANGE1       ('TRANSAC.' '1-3 SEG.'  '----------')          
  HEADING IRANGE3       ('TRANSAC.' '3-5 SEG.'  '----------')          
  HEADING IRANGE5       ('TRANSAC.' '5-10 SEG.' '----------')  
  HEADING IRANGE10      ('TRANSAC.' '> 10 SEG.'  '----------') 
  HEADING PERCENT0      ('%TRAN'  '0-1 S'   '-----')           
  HEADING PERCENT1      ('%TRAN'  '1-3 S'   '-----')           
  HEADING PERCENT3      ('%TRAN'  '3-5 S'   '-----')           
  HEADING PERCENT5      ('%TRAN'  '5-10S'  '-----')            
  HEADING PERCENT10     ('%TRAN'  '> 10S'  '-----')            
                                                               
  LINE HORA TALLY        +                                     
       IRANGE0  PERCENT0 +                                     
       IRANGE1  PERCENT1 +                                     
       IRANGE3  PERCENT3 +                                     
       IRANGE5  PERCENT5 +                                     
       IRANGE10 PERCENT10                                      
                                                               
BEFORE-BREAK. PROC                                             
  IRANGE0   = RANGE0                                           
  IRANGE1   = RANGE1                                           
  IRANGE3   = RANGE3                                                 
  IRANGE5   = RANGE5                                                 
  IRANGE10  = RANGE10                                                
  PERCENT0  = (1000 * RANGE0)  / TALLY                               
  PERCENT1  = (1000 * RANGE1)  / TALLY                               
  PERCENT3  = (1000 * RANGE3)  / TALLY                               
  PERCENT5  = (1000 * RANGE5)  / TALLY                               
  PERCENT10 = (1000 * RANGE10) / TALLY                               
  IF LEVEL = 2                                                       
     DISPLAY '----- ------------ ----------- ----- ' +               
             '---------- ----- ---------- ----- ---------- ----- ' + 
             '---------- -----'                                      
  END-IF                                                             
END-PROC.                                                            
*                                                                    
AFTER-BREAK. PROC                                                    
  IF LEVEL = 2                                                       
    DISPLAY  SKIP 0 POS 1 'TOTAL'                                    
    DISPLAY '----------------------------------------------' +    
            '--------------------------------------------------' +
            '-----------------'                                   
 END-IF                                                           
END-PROC.                                                         
Programa CICSTRN2:

Código: Seleccionar todo

MACRO 0 EACH    'DAY'          +                                       
        SHIFT   '00:00 24:00'  +                                       
        FROM    'ALL'          +                                       
        TO      'ALL'          +                                       
        RECTYPE 255            +                                       
        JOBCICS '        '     +                                       
        TITULO  'USO DE TRANSACCIONES Y TIEMPOS DE RESPUESTA'          
* ******************************************************************* *
* Hace los siguientes 4 listados:                                     *
* LISTADO1: Transacciones del CICSP1 sumarizadas por dia              *
* LISTADO2: Transacciones del CICSP1 sumarizadas por terminal         *
* LISTADO3: Transacciones del CICSP1 que gastan mas de 5 segundos de  *
*           CPU o duran mas áde 10 segundos                           *
* LISTADO4: Transacciones de todos los CICS sumarizadas por JOBNAME   *
* ******************************************************************* *
*                                                                      
%SYSVCDEF RECTYPE &RECTYPE    +                                        
          EACH    '&EACH'     +                                        
          FROM    '&FROM'     +                                        
          TO      '&TO'       +                                        
          SHIFT   '&SHIFT'    +                                        
          RECNAME XPFCMNS     +                                        
          SEGMENT MNS_CLOCKS                                           
                                                                       
*---------------------------------------------------------------------*
* LLama a los procedimientos:                                         *
*                                                                     *
* SYSVCDEF Contiene las definiciones de las variables globales y de   *
*          los registros y campos de SMF                              *
* SYSVPROC Contiene porcedimientos comunes de, entre ellos los que    *
*          siguen:                                                    *
* SET-PARMS para decodificar EACH, FROM, TO y SHIFT y pone los        *
*           valores apropiados en las variables globales usadas       *
*           durante la seleccion y filtrado de registros del SMF      *
* SELECT-REC Filtra y selecciona los registros de tipo y subtipo      *
*            deseados, en funciones de EACH, FROM, TO y SHIFT         *
*---------------------------------------------------------------------*
*                                                                      
FILE LISTADO1 PRINTER                                                  
FILE LISTADO2 PRINTER                                                  
FILE LISTADO3 PRINTER                                                  
FILE LISTADO4 PRINTER                                                  
*                                                                      
JOB INPUT SMFIN START SET-PARMS.                                       
DEFINE CICSNAME  W 8 A VALUE '&JOBCICS'                                
DEFINE LETRA MNS_TERM 1 A                                              
DEFINE NUMTRAN   W 4 B 0                                               
DEFINE INUMTRAN  S 8 N MASK('ZZ,ZZZ,ZZ9')                              
DEFINE DIA       W 2 A VALUE '  '                                      
DEFINE FECHA TSTAMP 10 A.                                              
DEFINE TIMELIFE W 10 P 0                                               
DEFINE TIMECPU  W 10 P 0                                               
DEFINE TIEMPOVIDA S 12 N MASK('ZZZ,ZZZ.ZZZZZ9')                        
DEFINE TIEMPOCPU  S 12 N MASK('ZZZ,ZZZ.ZZZZZ9')
DEFINE TIMEVALUE W 10 P 0                      
DEFINE RANGE0    W 4 B 0                       
DEFINE RANGE1    W 4 B 0                       
DEFINE RANGE3    W 4 B 0                       
DEFINE RANGE5    W 4 B 0                       
DEFINE RANGE10   W 4 B 0                       
DEFINE IRANGE0   S 7 N MASK('Z,ZZZ,ZZ9')       
DEFINE IRANGE1   S 7 N MASK('Z,ZZZ,ZZ9')       
DEFINE IRANGE3   S 7 N MASK('Z,ZZZ,ZZ9')       
DEFINE IRANGE5   S 7 N MASK('Z,ZZZ,ZZ9')       
DEFINE IRANGE10  S 7 N MASK('Z,ZZZ,ZZ9')       
DEFINE PERCENT0  S 4 N MASK('ZZ9.9')           
DEFINE PERCENT1  S 4 N MASK('ZZ9.9')           
DEFINE PERCENT3  S 4 N MASK('ZZ9.9')           
DEFINE PERCENT5  S 4 N MASK('ZZ9.9')           
DEFINE PERCENT10 S 4 N MASK('ZZ9.9')           
DEFINE RATE      S 5 N 2                       
                                                                          
                                                                          
*---------------------------------------------------------------------*   
* Selecciona los registros que cumplen los requerimientos para alguno *   
* de los 4 listados                                                   *   
*---------------------------------------------------------------------*   
PERFORM SELECT-REC .                                                      
IF SELECTED = 'T'                                                         
   IF MNS_JOBNAME = CICSNAME                                              
     * Agrupacion bajo el nombre ¬VLD registros de terminales no validos  
      IF LETRA < 'A' OR LETRA > 'Z'                                       
         MNS_TERM = '¬VLD'                                                
      ELSE-IF LETRA > 'I' AND LETRA < 'J'                                 
         MNS_TERM = '¬VLD'                                                
      ELSE-IF LETRA > 'R' AND LETRA < 'S'                                 
         MNS_TERM = '¬VLD'                                                
      END-IF                                                              
                                                                          
     RANGE0  = 0                               
     RANGE1  = 0                               
     RANGE3  = 0                               
     RANGE5  = 0                               
     RANGE10 = 0                               
                                               
     %CONVBTOP MNS_LIFETIME_TIME  TIMEVALUE  . 
     %CONVBTOP MNS_USRCPUT_TIME   TIMECPU .    
     %CONVBTOP MNS_LIFETIME_TIME  TIMELIFE   . 
     %CONVBTOP MNS_USRCPUT_TIME   TIMECPU .    
                                               
     IF TIMEVALUE              < 1000000       
        RANGE0 = 1                             
     ELSE-IF TIMEVALUE         < 3000000       
        RANGE1 = 1                             
     ELSE-IF TIMEVALUE         < 5000000       
        RANGE3 = 1                             
     ELSE-IF TIMEVALUE         < 10000000      
        RANGE5 = 1                                 
     ELSE                                          
        RANGE10 = 1                                
     END-IF                                        
                                                   
     PRINT LISTADO1                                
     PRINT LISTADO2                                
                                                   
     IF TIMELIFE  > 10000000 OR TIMECPU > 05000000 
        IF MNS_TERM ¬= '¬VLD'                      
           TIEMPOVIDA = TIMELIFE                   
           TIEMPOCPU  = TIMECPU                    
           PRINT LISTADO3                          
        END-IF                                     
     END-IF                                        
  END-IF                                           
                                                   
  PRINT LISTADO4                                   
                                                                       
END-IF                                                                 
                                                                       
%SYSVPROC. *Common subroutines                                         
*                                                                      
*---------------------------------------------------------------------*
* Listado de transacciones y tiempos del CICSP1 sumarizado por dia    *
*---------------------------------------------------------------------*
REPORT LISTADO1  SUMMARY SUMCTL DTLCOPYALL TALLYSIZE 8   +             
       LINESIZE 132 NOADJUST NODATE PRINTER LISTADO1 SPACE 1 SKIP 0    
  SEQUENCE TITLE-TSTAMP                                                
  CONTROL FINAL FECHA                                                  
  SUM RANGE0 RANGE1 RANGE3 RANGE5 RANGE10                              
                                                                       
  TITLE 1 RPTDATE ' &JOBCICS' 'TRANSACCIONES Y TIEMPOS DE RESPUESTA' + 
         'SUMARIZADO POR DIA'                                          
  TITLE 2 'Desde:' LOW-STAMP '  Cada: &EACH  Horario: &SHIFT'          
                                                                       
 HEADING FECHA         ('  FECHA'  '----------')                  
 HEADING TALLY         ('NUMERO DE' 'TRANSACIONES' '------------')
 HEADING IRANGE0       ('TRANSAC.' '0-1 SEG.'  '----------')      
 HEADING IRANGE1       ('TRANSAC.' '1-3 SEG.'  '----------')      
 HEADING IRANGE3       ('TRANSAC.' '3-5 SEG.'  '----------')      
 HEADING IRANGE5       ('TRANSAC.' '5-10 SEG.' '----------')      
 HEADING IRANGE10      ('TRANSAC.' '> 10 SEG.'  '----------')     
 HEADING PERCENT0      ('%TRAN'  '0-1 S'   '-----')               
 HEADING PERCENT1      ('%TRAN'  '1-3 S'   '-----')               
 HEADING PERCENT3      ('%TRAN'  '3-5 S'   '-----')               
 HEADING PERCENT5      ('%TRAN'  '5-10S'  '-----')                
 HEADING PERCENT10     ('%TRAN'  '> 10S'  '-----')                
                                                                  
 LINE FECHA TALLY       +                                         
      IRANGE0  PERCENT0 +                                         
      IRANGE1  PERCENT1 +                                         
      IRANGE3  PERCENT3 +                                         
      IRANGE5  PERCENT5 +                                         
       IRANGE10 PERCENT10                                           
                                                                    
BEFORE-BREAK. PROC                                                  
  IRANGE0   = RANGE0                                                
  IRANGE1   = RANGE1                                                
  IRANGE3   = RANGE3                                                
  IRANGE5   = RANGE5                                                
  IRANGE10  = RANGE10                                               
  PERCENT0  = (1000 * RANGE0)  / TALLY                              
  PERCENT1  = (1000 * RANGE1)  / TALLY                              
  PERCENT3  = (1000 * RANGE3)  / TALLY                              
  PERCENT5  = (1000 * RANGE5)  / TALLY                              
  PERCENT10 = (1000 * RANGE10) / TALLY                              
  RATE      = TALLY / INTERVAL                                      
  IF LEVEL = 2                                                      
     DISPLAY '---------- ------------ ---------- ----- ' +          
             '---------- ----- ---------- ----- ---------- ----- ' +
             '---------- -----'                                     
  END-IF                                                               
END-PROC.                                                              
*                                                                      
AFTER-BREAK. PROC                                                      
  IF LEVEL = 2                                                         
    DISPLAY  SKIP 0 POS 1 'TOTAL'                                      
    DISPLAY '----------------------------------------' +               
            '--------------------------------------------------' +     
            '-----------------'                                        
 END-IF                                                                
END-PROC.                                                              
*                                                                      
                                                                       
*---------------------------------------------------------------------*
* Transacciones CICSP1 sumarizadas por terminal                       *
*---------------------------------------------------------------------*
REPORT LISTADO2  SUMMARY SUMCTL DTLCOPYALL TALLYSIZE 8   +             
       LINESIZE 132 NOADJUST NODATE PRINTER LISTADO2 SPACE 1 SKIP 0    
  SEQUENCE MNS_TERM                                                     
  CONTROL FINAL MNS_TERM                                                
  SUM NUMTRAN RANGE0 RANGE1 RANGE3 RANGE5 RANGE10                       
                                                                        
  TITLE 1 RPTDATE ' &JOBCICS' +                                         
        'TRANSACCIONES Y TIEMPOS DE RESPUESTA SUMARIZADAS POR TERMINAL' 
  TITLE 2 'Desde:' LOW-STAMP '  Cada: &EACH  Horario: &SHIFT'           
                                                                        
  HEADING MNS_TERM      ('TERM'  '------')                              
  HEADING INUMTRAN      ('NUMERO DE' 'TRANSACIONES' '------------')     
  HEADING IRANGE0       ('TRANSAC.' '0-1 SEG.'  '----------')           
  HEADING IRANGE1       ('TRANSAC.' '1-3 SEG.'  '----------')           
  HEADING IRANGE3       ('TRANSAC.' '3-5 SEG.'  '----------')           
  HEADING IRANGE5       ('TRANSAC.' '5-10 SEG.' '----------')           
  HEADING IRANGE10      ('TRANSAC.' '> 10 SEG.' '----------')           
  HEADING PERCENT0      ('%TRAN'  '0-1 S'   '-----')                    
  HEADING PERCENT1      ('%TRAN'  '1-3 S'   '-----')                    
  HEADING PERCENT3      ('%TRAN'  '3-5 S'   '-----')                    
  HEADING PERCENT5      ('%TRAN'  '5-10S'  '-----')  
  HEADING PERCENT10     ('%TRAN'  '> 10S'  '-----')  
                                                     
  LINE MNS_TERM INUMTRAN    +                        
       IRANGE0  PERCENT0 +                           
       IRANGE1  PERCENT1 +                           
       IRANGE3  PERCENT3 +                           
       IRANGE5  PERCENT5 +                           
       IRANGE10 PERCENT10                            
                                                     
BEFORE-BREAK. PROC                                   
  IRANGE0   = RANGE0                                 
  IRANGE1   = RANGE1                                 
  IRANGE3   = RANGE3                                 
  IRANGE5   = RANGE5                                 
  IRANGE10  = RANGE10                                
  PERCENT0  = (1000 * RANGE0)  / TALLY               
  PERCENT1  = (1000 * RANGE1)  / TALLY               
  PERCENT3  = (1000 * RANGE3)  / TALLY                                 
  PERCENT5  = (1000 * RANGE5)  / TALLY                                 
  PERCENT10 = (1000 * RANGE10) / TALLY                                 
  RATE      = TALLY / INTERVAL                                         
  NUMTRAN  = TALLY                                                     
  INUMTRAN  = NUMTRAN                                                  
  IF LEVEL = 2                                                         
     DISPLAY '------ ------------ ---------- ----- ---------- ----- ' +
               '---------- -----  ---------- ----- ---------- ----- '  
  END-IF                                                               
END-PROC.                                                              
*                                                                      
AFTER-BREAK. PROC                                                      
  IF LEVEL = 2                                                         
    DISPLAY  SKIP 0 POS 1 'TOTAL'                                      
    DISPLAY '----------------------------------------' +               
            '--------------------------------------------------' +     
            '--------------'                                           
 END-IF                                                                
END-PROC.                                                              
                                                                       
*---------------------------------------------------------------------*
* Transacciones del CICSP1 que gastan mas de 5 segundos de CPU        *
* o duran mas de 10 segundos                                          *
*---------------------------------------------------------------------*
REPORT LISTADO3 TALLYSIZE 8   +                                        
       LINESIZE 132 NOADJUST NODATE PRINTER LISTADO3 SPACE 1 SKIP 0    
  SEQUENCE TIMELIFE                                                    
* CONTROL FINAL NOPRINT TITLE-TSTAMP                                   
                                                                       
  TITLE 1 RPTDATE ' &JOBCICS' +                                        
        'TRANSACCIONES DE MAS DE 10 SEGS O GASTAN MAS DE 5 SEGS DE CPU'
  TITLE 2 'Desde:' LOW-STAMP '  Cada: &EACH  Horario: &SHIFT'          
                                                                       
  HEADING TITLE-TSTAMP  ('  FECHA   HORA'  '---------- -----')         
  HEADING MNS_TRAN      ('TRAN' 'ID'  '------')                        
  HEADING MNS_TRANNUM   ('TRAN' 'NUM' '--------')                      
  HEADING MNS_TERM      ('TERM' 'ID'  '------')                        
  HEADING MNS_PCMNAME   ('PROGRAM' 'ID' '----------')                  
  HEADING TIMECPU       ('TIEMPO DE CPU EN'        +                   
                         'MILLONESIMAS DE SEGUNDO' +                   
                         '-----------------------' )                   
  HEADING TIMELIFE      ('TIEMPO DE VIDA EN'       +                   
                         'MILLONESIMAS DE SEGUNDO' +                   
                         '-----------------------' )                   
                                                                       
  LINE TITLE-TSTAMP  MNS_TRAN  MNS_TRANNUM  MNS_TERM   +               
       MNS_PCMNAME   TIMECPU  TIMELIFE                                 
                                                                       
*---------------------------------------------------------------------*
* Transacciones de todos los CICS sumarizadas por JOBNAME             *
*---------------------------------------------------------------------*
REPORT LISTADO4  SUMMARY SUMCTL DTLCOPYALL TALLYSIZE 8   +             
       LINESIZE 132 NOADJUST NODATE PRINTER LISTADO4 SPACE 1 SKIP 0    
  SEQUENCE MNS_JOBNAME                                             
  CONTROL FINAL MNS_JOBNAME                                        
  SUM RANGE0 RANGE1 RANGE3 RANGE5 RANGE10                          
                                                                   
  TITLE 1 RPTDATE 'TRANSACCIONES Y TIEMPOS DE RESPUESTA DE TODOS' +
        'LOS CICS SUMARIZADAS POR JOBNAME'                         
  TITLE 2 'Desde:' LOW-STAMP '  Cada: &EACH  Horario: &SHIFT'      
                                                                   
  HEADING MNS_JOBNAME   ('CICS' 'JOBNAME'  '--------')             
  HEADING TALLY         ('NUMERO DE' 'TRANSACIONES' '------------')
  HEADING IRANGE0       ('TRANSAC.' '0-1 SEG.'  '----------')      
  HEADING IRANGE1       ('TRANSAC.' '1-3 SEG.'  '----------')      
  HEADING IRANGE3       ('TRANSAC.' '3-5 SEG.'  '----------')      
  HEADING IRANGE5       ('TRANSAC.' '5-10 SEG.' '----------')      
  HEADING IRANGE10      ('TRANSAC.' '> 10 SEG.' '----------')      
  HEADING PERCENT0      ('%TRAN'  '0-1 S'  '-----')                
  HEADING PERCENT1      ('%TRAN'  '1-3 S'  '-----')                
  HEADING PERCENT3      ('%TRAN'  '3-5 S'  '-----')                
  HEADING PERCENT5      ('%TRAN'  '5-10S'  '-----')
  HEADING PERCENT10     ('%TRAN'  '> 10S'  '-----')
                                                   
  LINE MNS_JOBNAME TALLY +                         
       IRANGE0  PERCENT0 +                         
       IRANGE1  PERCENT1 +                         
       IRANGE3  PERCENT3 +                         
       IRANGE5  PERCENT5 +                         
       IRANGE10 PERCENT10                          
                                                   
BEFORE-BREAK. PROC                                 
  IRANGE0   = RANGE0                               
  IRANGE1   = RANGE1                               
  IRANGE3   = RANGE3                               
  IRANGE5   = RANGE5                               
  IRANGE10  = RANGE10                              
  PERCENT0  = (1000 * RANGE0)  / TALLY             
  PERCENT1  = (1000 * RANGE1)  / TALLY             
  PERCENT3  = (1000 * RANGE3)  / TALLY                              
  PERCENT5  = (1000 * RANGE5)  / TALLY                              
  PERCENT10 = (1000 * RANGE10) / TALLY                              
  RATE      = TALLY / INTERVAL                                      
  IF LEVEL = 2                                                      
     DISPLAY '-------- ------------ ---------- ----- ' +            
             '---------- ----- ---------- ----- ---------- ----- ' +
             '---------- -----'                                     
  END-IF                                                            
END-PROC.                                                           
*                                                                   
AFTER-BREAK. PROC                                                   
  IF LEVEL = 2                                                      
    DISPLAY SKIP 0 'TOTAL'                                          
    DISPLAY '--------------------------------------' +              
            '--------------------------------------------------' +  
            '-----------------'                                     
 END-IF                                                             
END-PROC. 
JCL:

Código: Seleccionar todo

//*===================================================================*
//*  LISTADOS DE ESTADISTICAS DE LOS CICS DE PRODUCCION Y DESARROLLO  *
//*===================================================================*
//*                                                                    
//*                                                                    
//* DELETE DE FICHEROS DE TRABAJO                                      
//*                                                                    
//DELETE1  EXEC PGM=IDCAMS,REGION=4M                                   
//SYSPRINT DD  SYSOUT=*                                                
//SYSIN    DD *                                                        
 DELETE (SIST.SMFCOPIA.MESxx.CICS) NOSCRATCH                     
 DELETE (WORKP.PCEXPCIC.EZTVFM.TEMP)                                   
/*                                                                     
//*                                                                    
//* COPIA DETERMINADOS REGISTROS DEL SMF,PARA REPORTS CICS             
//*                                                                    
//COPIA   EXEC PGM=IFASMFDP                                            
//SYSPRINT DD  SYSOUT=*                                           
//SYSABEND DD  SYSOUT=*                                           
//DUMPIN  DD DSN=SIST.SMFCOPIA.MESxx,           
//        DISP=SHR                                                
//SALIDA   DD DSN=SIST.SMFCOPIA.MESxx.CICS,DISP=(NEW,CATLG),
//         BLKSIZE=32000,LRECL=32760,RECFM=VBS,UNIT=....       
//SYSIN    DD *                                                   
INDD(DUMPIN,OPTIONS(DUMP))                                        
OUTDD(SALIDA,TYPE(255))                                           
DATE(fechainicio,fechafinal)                
/*                                                                
//REPORT PROC                                                     
//REPORT   EXEC PGM=GSVUEZTR                                      
//STEPLIB  DD DSN=SYSVIEW.R13.CNM4BLOD,DISP=SHR                   
//         DD DSN=CAI.CCS14.CAW0LOAD,DISP=SHR                     
//PANDD    DD DISP=SHR,DSN=aqui.estan.mis.programas,
//         DD DISP=SHR,DSN=SYSVIEW.R13.CNM4ZMAC                   
//EZTVFM   DD SPACE=(CYL,(500,100)),DISP=(NEW,KEEP),UNIT=3390,        
//            DSN=fichero.de.trabajo
//SYSPRINT DD SYSOUT=*                                                
//SYSUDUMP DD SYSOUT=*                                                
//SYSOUT   DD SYSOUT=*                                                
//ERRORS   DD SYSOUT=*                                                
//REPORTS  DD SYSOUT=*                                                
//SYSSNAP  DD SYSOUT=*                                                
//*                                                                   
//SMFIN    DD   DISP=SHR,DSN=SIST.SMFCOPIA.MESxx.CICS           
// PEND                                                               
//*                                                                   
//* **************************************************************** *
//* Estadisticas de transacciones del CICSP1 en horario punta        *
//* Hace los siguientes 3 listados:                                  *
//* LISTADO1: transacciones y tiempos sumarizado por horas y dias    *
//* LISTADO2: transacciones y tiempos sumarizado por dias            *
//* LISTADO3: transacciones y tiempos sumarizado por horas           *
//* **************************************************************** *
//CICSTRN1 EXEC PROC=REPORT                                           
//LISTADO1 DD SYSOUT=D                                                
//LISTADO2 DD SYSOUT=E                                                
//LISTADO3 DD SYSOUT=F                                                
//SYSIN    DD *                                                       
LIST OFF                                                              
%CICSTRN1 EACH 'HOUR' SHIFT '11:30 14:00' JOBCICS 'CICSP1  '          
/*                                                                    
//* Borrado del fichero de trabajo                                    
//DELETE2 EXEC PGM=IDCAMS,REGION=4M                                   
//SYSPRINT DD  SYSOUT=*                                               
//SYSIN    DD *                                                       
 DELETE (fichero.de.trabajo)                                  
/*                                                                    
//* **************************************************************** *
//* Hace los siguientes 4 listados:                                  *
//* LISTADO1: Transacciones del CICSP1 sumarizadas por dia           *
//* LISTADO2: Transacciones del CICSP1 sumarizadas por terminal      *
//* LISTADO3: Transacciones del CICSP1 que gastan mas de 5 segundos  *
//*           de CPU o duran mas áde 10 segundos                     *
//* LISTADO4: Transacciones de todos los CICS sumarizadas por JOBNAME*
//* **************************************************************** *
//CICSTRN2 EXEC PROC=REPORT                                           
//LISTADO1 DD SYSOUT=G                                                
//LISTADO2 DD SYSOUT=H                                                
//LISTADO3 DD SYSOUT=I                                                
//LISTADO4 DD SYSOUT=J                                                
//SYSIN    DD *                                                       
LIST OFF                                                              
%CICSTRN2 EACH 'DAY' JOBCICS 'CICSP1  '                               
/*                                                                    
//* Borrado del fichero de trabajo                                    
//DELETE3 EXEC PGM=IDCAMS,REGION=4M                                   
//SYSPRINT DD  SYSOUT=*                                               
//SYSIN    DD *                                                       
 DELETE (fichero.de.trabajo)   
/*                                     
RGutR

Re: Reportes batch que exploten información de SYSVIEW

Mensaje por RGutR »

Hola Vicente,
Revisaré si hay planes de migración a la nueva versión de SYSVIEW, en todo caso, coordinaré con el área de Ingeniería para que implementen los reportes que necesito de acuerdo a los ejemplos que me hiciste llegar.

Una consulta adicional, ¿se puede obtener reportes de CICS de acuerdo a las necesidades particulares desde los mismos archivos que se obtienen los reportes del CICS Performance Analyzer?. De ser así, ¿por favor me podrías pasar algunos JOBS de ejemplo?

Muchas gracias por tu apoyo

Saludos
Rubén
Vicente

Re: Reportes batch que exploten información de SYSVIEW

Mensaje por Vicente »

Hola Rubén:
Antes dije que el Report Writer se volvió a poner en la versión 13, pero creo que a partir de la 12.5 ya estaba; por lo que es posible que en tu instalación lo puedas utilizar.

Respecto a lo que preguntas, solo conozco los reports obtenidos a partir de los datos almacenados en ficheros del SMF por el SYSVIEW Data collector.
No obstante, con SYSVIEW Report Writer es posible obtener los tipos de listados que necesitas.

Por lo que comenté antes, hace ya varios años que no utilizo el Report Writer, y ya no dispongo de ningún ejemplo para listar datos de CICS, pero como, excepto las variables empleadas, todo los demás sería igual, Te dejo el siguiente ejemplo que es para datos de batch

Código: Seleccionar todo

//******************************************************************
//*  LISTADO DE LOS 20 PROGRAMAS BATCH MAS USADOS                  *
//*  AGRUPANDOLOS EN UNA SOLA LINEA POR CADA NOMBRE DE PROGRAMA    *
//*  DA UN ABEND                                                    
//******************************************************************
//REPORT  EXEC PGM=EXPRPT,REGION=4096K                              
//STEPLIB  DD DSN=SYSVIEW......,DISP=SHR              
//*                                                                 
//TAPSMF DD DSN=Mis.registros.SMF,DISP=SHR                         
//*                                                                 
//XPFDLOG  DD SYSOUT=*                                              
//SYSTERM  DD SYSOUT=*                                              
//SYSPRINT DD SYSOUT=B                                              
//*                                                                 
//SYSIN     DD *                                                    
INPUT(TAPSMF)                                                       
TITLE1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TITLE2 +    20 PROGRAMAS BATCH MAS USADOS. UNA LINEA POR NOMBRE     +
TITLE3 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TAB  PROGID COUNT SORT DESCENDING TOP 20,                            
         HDR1(NOMBRE) HDR2(PROGRAMA),                                
     MVS  SYSTEM STEP CPU XTIME,                                     
          HDR1(CONSUMO) HDR2(DE CPU)                    AND,         
     MVS  SYSTEM STEP %CPUDUR FORMAT(NN.NNN),                        
          HDR1(% USO) HDR2(CPU)                         AND,         
     MVS  SYSTEM STEP DURATION XTIME,                                
          HDR1(     ) HDR2(DURACION)                    AND,         
     MVS  SYSTEM STEP ACTIVE XTIME,                                  
          HDR1(TIEMPO) HDR2(ACTIVO)                     AND,         
     MVS  SYSTEM STEP TOT-EXCP XTND,                                 
          HDR1(NUMERO) HDR2(DE EXCPS)                                
END                                                                  
RUN


Un saludo

Leamos un poco:
CA SYSVIEW System Perfomance management: Using the CA EXPLORE Report Writer r12.5
Responder