Desarrollando en Cobol y Natural sobre Plataforma Mainframe

jueves, 22 de mayo de 2014

Utilidad IEBCOPY para JCL

Ya hemos hablado en post anteriores sobre algunas de las Utilidades estándar para el tratamiento de JCL que vienen definidas en el sistema operativo ZOS. Otra de ellas es la denominada IEBCOPY, que nos puede ser muy útil para realizar el trabajo con miembros particionados (ficheros PDS) o Library (ficheros PDSE).

La utilidad IEBCOPY se emplea para realizar una copia de un miembro particionado (o de un miembro Library) o para unir dos miembros particionados. Su uso, muy sencillo, está muy extendido y lo encontraremos en gran cantidad de JCL de las aplicaciones que hay activas hoy en día.



Un ejemplo de cómo habría de emplearse lo podemos ver en el código que incorporamos a continuación. Se trata de un paso que podríamos insertar en cualquier JCL.

//STEP1    EXEC PGM=IEBCOPY                               
//SYSUT1   DD   DSN=LIBPR.JJ00.PROCLIB,DISP=SHR           
//SYSUT2   DD   DSN=LIBPR.JJ01.PROCLIB,

//              DISP=(NEW,CATLG,DELETE),
//              SPACE=(TRK,(10,5),RLSE),UNIT=SYSDA,       
//              DCB=(DSORG=PO,LRECL=80,RECFM=FB,BLKSIZE=0),
//              VOL=SER=ZARES1
//SYSPRINT DD   SYSOUT=*                                  
//SYSIN    DD   DUMMY    
                                 

Los declaraciones que hay que realizar para el IEBCOPY son las siguientes:

1º) Card SYSUT1: Se trata del miembro de origen, es decir, es el miembro del que vamos a realizar una copia. En el ejemplo es el miembro LIBPR.JJ00.PROCLIB.

//SYSUT1   DD   DSN=LIBPR.JJ00.PROCLIB,DISP=SHR  

2º) Card SYSIN: Son las sentencias de control de entrada para el programa. En este caso, el IEBCOPY no lleva parámetros, así que lo ponemos a DUMMY.

//SYSIN    DD   DUMMY                                  

3º) Card SYSUT2: Es el miembro de salida, es decir, el miembro copia del que hemos indicado en la card SYSUT1. En el ejemplo, el miembro se denominará LIBPR.JJ001.PROCLIB. Como vemos, aquí podemos indicar las características que deseamos que tenga nuestro miembro particionado: DISP, SPACE, UNIT, DCB, VOLSER, etc...

//SYSUT2   DD   DSN=LIBPR.JJ01.PROCLIB,
//              DISP=(NEW,CATLG,DELETE),
//              SPACE=(TRK,(10,5),RLSE),UNIT=SYSDA,       
//              DCB=(DSORG=PO,LRECL=80,RECFM=FB,BLKSIZE=0),
//              VOL=SER=ZARES1


4º) Card SYSPRINT: Aquí tenemos que indicar el lugar al que deseamos que se envíen todos los mensajes generados durante el proceso de ejecución. Si ponemos SYSOUT=* entonces dicha información se enviará directamente al SPOOL (a la MSGCLASS indicada en nuestro job).

//SYSPRINT DD   SYSOUT=*        

Una vez informadas estas 4 cards, nuestro paso JCL no debería dar ningún problema a la hora de crear una copia del miembro origen. En nuestro ejemplo, se creó el miembro LIBPR.JJ01.PROCLIB con una réplica de la información contenida en el miembro original LIBPR.JJ00.PROCLIB.

Esta es la forma en la que se suelen realizar copias de miembros particionados en la mayoría de las aplicaciones ZOS que hay operativas actualmente. Comentar que, aparte de para copiar, el IEBCOPY también se suele usar para realizar fusiones de miembros, pero la estructura de cards sería la misma.

Esperamos que, con la información proporcionada, podáis incluir la utilidad IEBCOPY en vuestros JCL. Si hay algo que no os ha quedado claro, no dudéis en preguntarlo.

Saludos.

1 comentario:

Related Posts Plugin for WordPress, Blogger...