Cerrar archivos en CICS por JCL

Todo lo relacionado con JCL, manejo de jobs, etc.
Responder
qwe2

Cerrar archivos en CICS por JCL

Mensaje por qwe2 »

Hace unos días le pregunté a NJB si le parecía abrir una sección de JCL dentro del foro de Utilidades porque tenía algunas "cositas" que quería compartir, pero por el momento coincidimos los dos que va a quedar aquí. Si son muchos post se vera con él. (Si alguno mas tiene ganas de compartir extractos de JCL's útiles opine y vemos)

Volviendo al tema del título, estaba viendo el otro día en mi instalación como hacer un cierre de archivos de una manera sencilla y vi que hay un pgm propio de IBM que se puede utilizar muy fácilmente. El pgm se llama IMFSUBEX y en las distintas instalaciones el link puede estar en distintas librerías así que recomendaría mirar estos enlaces que nos van a dar mas información:
http://www-01.ibm.com/support/docview.w ... wg27005657
https://webapps.bmc.com/DocCenter/index ... 2AAF6.html
https://webapps.bmc.com/DocCenter/index ... D3FB1.html

Ahora si, yendo al grano, para cerrar o abrir un archivo en CICS desde un JCL solo habría que poner lo siguiente:

Código: Seleccionar todo

//*---------------------------------------------------------------------
//* CIERRE DE ARCHIVOS CICS
//*---------------------------------------------------------------------
//CLOPARA  EXEC SUBEX,DSNAME=NOMARCH,ACTION=CLOSE,CICS=NOMCICS
//*---------------------------------------------------------------------
//* APERTURA DE ARCHIVOS CICS
//*---------------------------------------------------------------------
//OPEPARA  EXEC SUBEX,DSNAME=NOMARCH,ACTION=OPEN,CICS=NOMCICS
DSNAME debe tener el nombre que tiene en CICS ese archivo
CICS debe tener el cics donde vamos a cerrar/abrir ese archivo

Este job está llamando al procedimiento SUBEX, que es simplemente este:

Código: Seleccionar todo

//SUBEX    PROC DSNAME=MISSING,
//             ACTION=MISSING,                                         
//             CICS=MISSING,
//             WAIT=10                                                 
//*-------------------------------------------------------------------*
//* NAME:                                                             *
//*      PROPEN/PRCLOSE                                               *
//*                                                                   *
//* DESCRIPCION:                                                      *
//*      ESTOS PROCEDIMIENTOS ABREN Y CIERRAN ARCHIVOS EN EL CICS     *
//*      INDICADO CONTROLANDO SU EXITOSA ACCION.                      *
//*                                                                   *
//* PARAMETROS:                                                       *
//*      NOMBRE:    DESCRIPCION:                  DEFAULT VALUE:      *
//*      SS         ID OF AUTOOPERATOR SS         MISSING             *
//*      DSNAME     DDNAME NOMBRE O GENERICO      MISSING             *
//*      ACTION     OPEN/CLOSE                    MISSING             *
//*      CICS       CICS                          MISSING             *
//*      WAIT       ESPERA PARA VERIFICACION      10                  *
//*                 ESTE PARAMETRO CONSULTA N INTERVALOS DE N SEG.    *
//*                 PARA EL DEFAULT CONSULTA 10 VECES CADA 10 SEG.    *
//*                                                                   *
//* RETURN CODES:                                                     *
//*         0 - NORMAL END, OPERACION O.K.                            *
//*        08 - ABNORMAL END, BBI-SS NO DISPONIBLE                    *
//*        12 - ABNORMAL END, PROBLEMAS DE SEGURIDAD                  *
//*        16 - ABNORMAL END, ERROR EN PARAMETROS                     *
//*        20 - ABNORMAL END, ERROR SEVERO IMFSUBEX ABEND             *
//*      2048 - ABNORMAL END, CANCELA CLIST                           *
//*      2056 - NORMAL END, CICS NO VALIDO                            *
//*      2060 - NORMAL END, OPEN/CLOSE NO SE PUDO REALIZAAR           *
//*      2064 - NORMAL END, ARCHIVO/BASE DE DATOS ERRONEA             *
//*      2068 - ABNORMAL END BY EXEC. ERROR EN LA COMUNICACION        *
//*             AUTOOPERATOR CON EL JOB O CICS.                       *
//*                                                                   *
//*-------------------------------------------------------------------*
//IMFSUBEX EXEC PGM=IMFSUBEX,                                          
// PARM=('SS(*) EXEC(PR&ACTION &DSNAME &CICS &WAIT) WAIT(YES)')        
//*                                                                    
//STEPLIB  DD   DSN=BBI.V1505.RUN.BMCLINK,DISP=SHR
*El que lo quiera probar va a tener que fijarse que lib poner en la STEPLIB que vemos al final del proc SUBEX.

En fin, si alguno sabe como mejorarlo o conoce una morfa mas performante avise, asi aprendemos todos
riloama

Re: Cerrar archivos en CICS por JCL

Mensaje por riloama »

Hola qwe2,

por lo que estuve leyendo el utilitario IMFSUBEX no es de IBM, sino de Mainview de BMC.
qwe2

Re: Cerrar archivos en CICS por JCL

Mensaje por qwe2 »

riloama escribió:Hola qwe2,

por lo que estuve leyendo el utilitario IMFSUBEX no es de IBM, sino de Mainview de BMC.
Mmmm, en ese caso, solo servirá para instalaciones que tenga ese producto (BMC).
Gracias por la aclaración :arriba:
Vicente

Re: Cerrar archivos en CICS por JCL

Mensaje por Vicente »

Hola,
Quien no tenga Mainview de BMC no debe preocuparse pues puede comprar otras utilidades que lo hacen, pero si no quiere gastar dinero, el sistema operativo MVS tiene recursos para hacer eso sin necesidad de programas de terceros.
A continuación expongo algunas maneras (no son todas) de ejecutar mandatos mediante un JCL.

1) Podemos utilizar nuestro viejo amigo IEBGENER, para ejecutar cualquier mandato en la consola del sistema.

Si disponemos de los permisos suficentes, podemos ejecutar el mandato de consola:
F nombrecics,CEMT SET FILE OPEN ....

Código: Seleccionar todo

//MANDATOS EXEC PGM=IEBGENER       
//SYSPRINT DD DUMMY                
//SYSUT1   DD *,DLM=%%             
/*$VS,'F MICICS,CEMT I TASK'     
/*$VS,'F MICICS,CEMT SET FILE CLOSE.....' 
%%                               
//SYSUT2  DD SYSOUT=(A,INTRDR)    
//SYSIN    DD DUMMY                
Este ejemplo nos enseña que /* sirve para algo más que para cerrar una SYSIN
Se puede aprender más en el capítulo 27 "JES2 Control Statements" del manual MVS JCL Reference

2) Utilizando el programa IEFBR14, que aunque no hace nada es muy práctico.
Ejemplo para dar el mandato DISPLAY TIME

Código: Seleccionar todo

// EXEC PGM=IEFBR14 
// D T              
3) Aunque, según el manual de JCl, el método preferido por IBM es la sentencia de JCL COMMAND

Código: Seleccionar todo

// EXEC PGM=IEFBR14    o cualquier otro        
//MANDATO COMMAND  'D T'
Se puede aprender más leyendo la sentencia COMMAND en el manual MVS JCL Reference

Un saludo a todos
Responder